Load selenium/webdriver only if needed

Currently, 'selenium-webdriver' gem is required to use system tests even if a non-selenium driver is used (such as Poltergeist, Cuprite, etc.). We should require it only if Selenium is used by a user
This commit is contained in:
Vladimir Dementyev 2020-05-07 15:37:37 +03:00
parent 7cd59448ba
commit ce82acab23
3 changed files with 9 additions and 3 deletions

View File

@ -4,7 +4,6 @@ gem "capybara", ">= 3.26"
require "capybara/dsl"
require "capybara/minitest"
require "selenium/webdriver"
require "action_controller"
require "action_dispatch/system_testing/driver"
require "action_dispatch/system_testing/browser"

View File

@ -10,7 +10,10 @@ module ActionDispatch
@options = options[:options] || {}
@capabilities = capabilities
@browser.preload unless name == :rack_test
if name == :selenium
require "selenium/webdriver"
@browser.preload
end
end
def use

View File

@ -148,9 +148,13 @@ class DriverTest < ActiveSupport::TestCase
::Selenium::WebDriver::Chrome::Service.driver_path = original_driver_path
end
test "does not preload if :rack_test is set" do
test "does not preload if used driver is not :selenium" do
assert_not_called_on_instance_of(ActionDispatch::SystemTesting::Browser, :preload) do
ActionDispatch::SystemTesting::Driver.new(:rack_test, using: :chrome)
end
assert_not_called_on_instance_of(ActionDispatch::SystemTesting::Browser, :preload) do
ActionDispatch::SystemTesting::Driver.new(:poltergeist)
end
end
end