diff --git a/lib/capybara/selenium/driver.rb b/lib/capybara/selenium/driver.rb index a1fa05bd..812c9952 100644 --- a/lib/capybara/selenium/driver.rb +++ b/lib/capybara/selenium/driver.rb @@ -414,7 +414,7 @@ private def specialize_driver browser_type = browser.browser - self.class.specializations.select { |k, _v| k === browser_type }.each_value do |specialization| # rubocop:disable Style/CaseEquality + Capybara::Selenium::Driver.specializations.select { |k, _v| k === browser_type }.each_value do |specialization| # rubocop:disable Style/CaseEquality extend specialization end end diff --git a/spec/selenium_spec_chrome.rb b/spec/selenium_spec_chrome.rb index bddcb743..d91cabe5 100644 --- a/spec/selenium_spec_chrome.rb +++ b/spec/selenium_spec_chrome.rb @@ -27,6 +27,11 @@ Capybara.register_driver :selenium_chrome_not_clear_storage do |app| Capybara::Selenium::Driver.new(app, chrome_options.merge(clear_local_storage: false, clear_session_storage: false)) end +Capybara.register_driver :selenium_driver_subclass_with_chrome do |app| + subclass = Class.new(Capybara::Selenium::Driver) + subclass.new(app, browser: :chrome, options: browser_options, timeout: 30) +end + module TestSessions Chrome = Capybara::Session.new(CHROME_DRIVER, TestApp) end @@ -106,4 +111,12 @@ RSpec.describe 'Capybara::Session with chrome' do expect(Time.parse(extract_results(session)['datetime'])).to eq datetime end end + + describe 'using subclass of selenium driver' do + it 'works' do + session = Capybara::Session.new(:selenium_driver_subclass_with_chrome, TestApp) + session.visit('/form') + expect(session).to have_current_path('/form') + end + end end