remove unused methods and move selenium test browser detection to selenium specs
This commit is contained in:
parent
d1e454b6e5
commit
34d51979b2
|
@ -21,27 +21,13 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base
|
|||
end
|
||||
|
||||
def browser
|
||||
unless @browser
|
||||
# if firefox?
|
||||
# options[:desired_capabilities] ||= {}
|
||||
# options[:desired_capabilities][:unexpectedAlertBehaviour] = "ignore"
|
||||
# end
|
||||
|
||||
@processed_options = options.reject { |key, _val| SPECIAL_OPTIONS.include?(key) }
|
||||
@browser = Selenium::WebDriver.for(options[:browser], @processed_options)
|
||||
|
||||
extend ChromeDriver if chrome?
|
||||
extend MarionetteDriver if marionette?
|
||||
|
||||
main = Process.pid
|
||||
at_exit do
|
||||
# Store the exit status of the test run since it goes away after calling the at_exit proc...
|
||||
@exit_status = $ERROR_INFO.status if $ERROR_INFO.is_a?(SystemExit)
|
||||
quit if Process.pid == main
|
||||
exit @exit_status if @exit_status # Force exit with stored status
|
||||
@browser ||= begin
|
||||
processed_options = options.reject { |key, _val| SPECIAL_OPTIONS.include?(key) }
|
||||
Selenium::WebDriver.for(options[:browser], processed_options).tap do |driver|
|
||||
specialize_driver(driver)
|
||||
setup_exit_handler
|
||||
end
|
||||
end
|
||||
@browser
|
||||
end
|
||||
|
||||
def initialize(app, **options)
|
||||
|
@ -271,34 +257,6 @@ class Capybara::Selenium::Driver < Capybara::Driver::Base
|
|||
|
||||
private
|
||||
|
||||
def w3c?
|
||||
browser&.capabilities.is_a?(Selenium::WebDriver::Remote::W3C::Capabilities)
|
||||
end
|
||||
|
||||
def marionette?
|
||||
firefox? && w3c?
|
||||
end
|
||||
|
||||
def firefox?
|
||||
browser_name == :firefox
|
||||
end
|
||||
|
||||
def chrome?
|
||||
browser_name == :chrome
|
||||
end
|
||||
|
||||
def edge?
|
||||
browser_name == :edge
|
||||
end
|
||||
|
||||
def ie?
|
||||
%i[internet_explorer ie].include?(browser_name)
|
||||
end
|
||||
|
||||
def browser_name
|
||||
browser.browser
|
||||
end
|
||||
|
||||
def native_args(args)
|
||||
args.map { |arg| arg.is_a?(Capybara::Selenium::Node) ? arg.native : arg }
|
||||
end
|
||||
|
@ -399,6 +357,25 @@ private
|
|||
def build_node(native_node)
|
||||
::Capybara::Selenium::Node.new(self, native_node)
|
||||
end
|
||||
|
||||
def specialize_driver(sel_driver)
|
||||
case sel_driver.browser
|
||||
when :chrome
|
||||
extend ChromeDriver
|
||||
when :firefox
|
||||
extend MarionetteDriver if sel_driver.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities)
|
||||
end
|
||||
end
|
||||
|
||||
def setup_exit_handler
|
||||
main = Process.pid
|
||||
at_exit do
|
||||
# Store the exit status of the test run since it goes away after calling the at_exit proc...
|
||||
@exit_status = $ERROR_INFO.status if $ERROR_INFO.is_a?(SystemExit)
|
||||
quit if Process.pid == main
|
||||
exit @exit_status if @exit_status # Force exit with stored status
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
require 'capybara/selenium/driver_specializations/chrome_driver'
|
||||
|
|
|
@ -119,38 +119,6 @@ module Capybara
|
|||
expect(session).to have_xpath("//pre[@id='results']")
|
||||
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.inner_html.lstrip
|
||||
end
|
||||
|
||||
def marionette?(session)
|
||||
session.respond_to?(:driver) && session.driver.respond_to?(:marionette?, true) && session.driver.send(:marionette?)
|
||||
end
|
||||
|
||||
def marionette_lt?(version, session)
|
||||
marionette?(session) && (session.driver.browser.capabilities[:browser_version].to_f < version)
|
||||
end
|
||||
|
||||
def marionette_gte?(version, session)
|
||||
marionette?(session) && (session.driver.browser.capabilities[:browser_version].to_f >= version)
|
||||
end
|
||||
|
||||
def chrome?(session)
|
||||
session.respond_to?(:driver) && session.driver.respond_to?(:chrome?, true) && session.driver.send(:chrome?)
|
||||
end
|
||||
|
||||
def chrome_lt?(version, session)
|
||||
chrome?(session) && (session.driver.browser.capabilities[:version].to_f < version)
|
||||
end
|
||||
|
||||
def chrome_gte?(version, session)
|
||||
chrome?(session) && (session.driver.browser.capabilities[:version].to_f >= version)
|
||||
end
|
||||
|
||||
def edge?(session)
|
||||
session.respond_to?(:driver) && session.driver.respond_to?(:edge?, true) && session.driver.send(:edge?)
|
||||
end
|
||||
|
||||
def ie?(session)
|
||||
session.respond_to?(:driver) && session.driver.respond_to?(:ie?, true) && session.driver.send(:ie?)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -77,6 +77,6 @@ RSpec.describe 'Capybara::Session with remote Chrome' do
|
|||
include_examples Capybara::RSpecMatchers, TestSessions::Chrome, CHROME_REMOTE_DRIVER
|
||||
|
||||
it 'is considered to be chrome' do
|
||||
expect(session.driver.send(:chrome?)).to be_truthy
|
||||
expect(session.driver.browser.browser).to eq :chrome
|
||||
end
|
||||
end
|
||||
|
|
|
@ -78,7 +78,6 @@ RSpec.describe 'Capybara::Session with remote firefox' do
|
|||
include_examples Capybara::RSpecMatchers, TestSessions::RemoteFirefox, FIREFOX_REMOTE_DRIVER
|
||||
|
||||
it 'is considered to be firefox' do
|
||||
expect(session.driver.send(:firefox?)).to be_truthy
|
||||
expect(session.driver.send(:marionette?)).to be_truthy
|
||||
expect(session.driver.browser.browser).to eq :firefox
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,6 +4,47 @@ require 'rspec/expectations'
|
|||
require 'capybara/spec/spec_helper'
|
||||
require 'webdrivers' if ENV['CI']
|
||||
|
||||
module Capybara
|
||||
module SpecHelper
|
||||
def marionette?(session)
|
||||
browser_name(session) == :firefox &&
|
||||
session.driver.browser.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities)
|
||||
end
|
||||
|
||||
def marionette_lt?(version, session)
|
||||
marionette?(session) && (session.driver.browser.capabilities[:browser_version].to_f < version)
|
||||
end
|
||||
|
||||
def marionette_gte?(version, session)
|
||||
marionette?(session) && (session.driver.browser.capabilities[:browser_version].to_f >= version)
|
||||
end
|
||||
|
||||
def chrome?(session)
|
||||
browser_name(session) == :chrome
|
||||
end
|
||||
|
||||
def chrome_lt?(version, session)
|
||||
chrome?(session) && (session.driver.browser.capabilities[:version].to_f < version)
|
||||
end
|
||||
|
||||
def chrome_gte?(version, session)
|
||||
chrome?(session) && (session.driver.browser.capabilities[:version].to_f >= version)
|
||||
end
|
||||
|
||||
def edge?(session)
|
||||
browser_name(session) == :edge
|
||||
end
|
||||
|
||||
def ie?(session)
|
||||
%i[internet_explorer ie].include?(browser_name(session))
|
||||
end
|
||||
|
||||
def browser_name(session)
|
||||
session.driver.browser.browser if session.respond_to?(:driver)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
RSpec.configure do |config|
|
||||
Capybara::SpecHelper.configure(config)
|
||||
config.filter_run_including focus_: true unless ENV['CI']
|
||||
|
|
Loading…
Reference in New Issue