aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_dispatch/system_test_case.rb11
-rw-r--r--actionpack/lib/action_dispatch/system_testing/browser.rb13
-rw-r--r--actionpack/lib/action_dispatch/system_testing/driver.rb12
3 files changed, 21 insertions, 15 deletions
diff --git a/actionpack/lib/action_dispatch/system_test_case.rb b/actionpack/lib/action_dispatch/system_test_case.rb
index 70a5b75781..d6388d8fb7 100644
--- a/actionpack/lib/action_dispatch/system_test_case.rb
+++ b/actionpack/lib/action_dispatch/system_test_case.rb
@@ -105,9 +105,16 @@ module ActionDispatch
#
# driven_by :selenium, screen_size: [800, 800]
def self.driven_by(driver, using: :chrome, screen_size: [1400, 1400])
- SystemTesting::Driver.new(driver).run
+ driver = if selenium?(driver)
+ SystemTesting::Browser.new(using, screen_size)
+ else
+ SystemTesting::Driver.new(driver)
+ end
+
+ setup { driver.use }
+ teardown { driver.reset }
+
SystemTesting::Server.new.run
- SystemTesting::Browser.new(using, screen_size).run if selenium?(driver)
end
def self.selenium?(driver) # :nodoc:
diff --git a/actionpack/lib/action_dispatch/system_testing/browser.rb b/actionpack/lib/action_dispatch/system_testing/browser.rb
index c9a6628516..14ea06459d 100644
--- a/actionpack/lib/action_dispatch/system_testing/browser.rb
+++ b/actionpack/lib/action_dispatch/system_testing/browser.rb
@@ -1,14 +1,17 @@
+require "action_dispatch/system_testing/driver"
+
module ActionDispatch
module SystemTesting
- class Browser # :nodoc:
+ class Browser < Driver # :nodoc:
def initialize(name, screen_size)
+ super(name)
@name = name
@screen_size = screen_size
end
- def run
+ def use
register
- setup
+ super
end
private
@@ -19,10 +22,6 @@ module ActionDispatch
end
end
end
-
- def setup
- Capybara.default_driver = @name.to_sym
- end
end
end
end
diff --git a/actionpack/lib/action_dispatch/system_testing/driver.rb b/actionpack/lib/action_dispatch/system_testing/driver.rb
index 7c2ad84e19..8decb54419 100644
--- a/actionpack/lib/action_dispatch/system_testing/driver.rb
+++ b/actionpack/lib/action_dispatch/system_testing/driver.rb
@@ -5,14 +5,14 @@ module ActionDispatch
@name = name
end
- def run
- register
+ def use
+ @current = Capybara.current_driver
+ Capybara.current_driver = @name
end
- private
- def register
- Capybara.default_driver = @name
- end
+ def reset
+ Capybara.current_driver = @current
+ end
end
end
end