remove unused methods and move selenium test browser detection to selenium specs

This commit is contained in:
Thomas Walpole 2018-08-24 11:32:55 -07:00
parent d1e454b6e5
commit 34d51979b2
5 changed files with 67 additions and 82 deletions

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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']