aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/system_testing/driver_adapters.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/system_testing/driver_adapters.rb')
-rw-r--r--actionpack/lib/system_testing/driver_adapters.rb40
1 files changed, 31 insertions, 9 deletions
diff --git a/actionpack/lib/system_testing/driver_adapters.rb b/actionpack/lib/system_testing/driver_adapters.rb
index d0771f89cb..bb65fe9111 100644
--- a/actionpack/lib/system_testing/driver_adapters.rb
+++ b/actionpack/lib/system_testing/driver_adapters.rb
@@ -1,23 +1,45 @@
module SystemTesting
# == System Testing Driver Adapters
#
- # System testing supports the following drivers:
+ # By default Rails supports Capybara with the Selenium Driver. Rails provides
+ # configuration setup for using the selenium driver with Capybara.
+ # Additionally Rails can be used as a layer between Capybara and its other
+ # supported drivers: +:rack_test+, +:selenium+, +:webkit+, or +:poltergeist+.
#
- # * {RackTest}[https://github.com/brynary/rack-test]
- # * {Selenium}[https://github.com/SeleniumHQ/selenium]
+ # *{RackTest}[https://github.com/jnicklas/capybara#racktest]
+ # *{Selenium}[http://seleniumhq.org/docs/01_introducing_selenium.html#selenium-2-aka-selenium-webdriver]
+ # *{Webkit}[https://github.com/thoughtbot/capybara-webkit]
+ # *{Poltergeist}[https://github.com/teampoltergeist/poltergeist]
+ #
+ # === Driver Features
+ #
+ # | | Default Browser | Supports Screenshots? |
+ # |-----------------|-----------------------|-----------------------|
+ # | Rails' Selenium | Chrome | Yes |
+ # | Rack Test | No JS Support | No |
+ # | Selenium | Firefox | Yes |
+ # | WebKit | Headless w/ Qt | Yes |
+ # | Poltergeist | Headless w/ PhantomJS | Yes |
module DriverAdapters
extend ActiveSupport::Autoload
- autoload :CapybaraRackTestDriver
- autoload :CapybaraSeleniumDriver
+ autoload :CapybaraDriver
+ autoload :RailsSeleniumDriver
class << self
# Returns driver for specified name.
#
- # SystemTesting::DriverAdapters.lookup(:capybara_selenium_driver)
- # # => SystemTesting::DriverAdapters::CapybaraSeleniumDriver
- def lookup(name)
- const_get(name.to_s.camelize)
+ # SystemTesting::DriverAdapters.lookup(:rails_selenium_driver)
+ # # => SystemTesting::DriverAdapters::RailsSeleniumDriver
+ def lookup(driver)
+ if CapybaraDriver::CAPYBARA_DEFAULTS.include?(driver)
+ CapybaraDriver.new(driver)
+ elsif driver.is_a?(Symbol)
+ klass = const_get(driver.to_s.camelize)
+ klass.new
+ else
+ driver
+ end
end
end
end