diff options
Diffstat (limited to 'actionpack/lib/system_testing/driver_adapters.rb')
-rw-r--r-- | actionpack/lib/system_testing/driver_adapters.rb | 40 |
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 |