aboutsummaryrefslogtreecommitdiffstats
path: root/actionsystemtest/lib/action_system_test/driver_adapters.rb
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2016-11-06 18:55:15 -0500
committereileencodes <eileencodes@gmail.com>2017-02-20 15:07:33 -0500
commit5bf0aa6745db27c45c0778f9f6e9046f9ee9fb94 (patch)
tree7ba85a8ea15146725c68ce6b9e5a94ebac6d0c9c /actionsystemtest/lib/action_system_test/driver_adapters.rb
parenta21e18d5080a2c4808330271885f5664a725d3f3 (diff)
downloadrails-5bf0aa6745db27c45c0778f9f6e9046f9ee9fb94.tar.gz
rails-5bf0aa6745db27c45c0778f9f6e9046f9ee9fb94.tar.bz2
rails-5bf0aa6745db27c45c0778f9f6e9046f9ee9fb94.zip
Turn system testing into it's own gem and rename
Renames `Rails::SystemTestCase` to `ActionSystemTest` and moves it to a gem under the Rails name. We need to name the class `ActionSystemTestCase` because the gem expects a module but tests themselves expect a class. Adds MIT-LICENSE, CHANGELOG, and README for the future.
Diffstat (limited to 'actionsystemtest/lib/action_system_test/driver_adapters.rb')
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapters.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/actionsystemtest/lib/action_system_test/driver_adapters.rb b/actionsystemtest/lib/action_system_test/driver_adapters.rb
new file mode 100644
index 0000000000..aead9d6f60
--- /dev/null
+++ b/actionsystemtest/lib/action_system_test/driver_adapters.rb
@@ -0,0 +1,46 @@
+module ActionSystemTest
+ # == System Testing Driver Adapters
+ #
+ # 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/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 :CapybaraDriver
+ autoload :RailsSeleniumDriver
+
+ class << self
+ # Returns driver for specified name.
+ #
+ # ActionSystemTest::DriverAdapters.lookup(:rails_selenium_driver)
+ # # => ActionSystemTest::DriverAdapters::RailsSeleniumDriver
+ def lookup(driver)
+ if CapybaraDriver::CAPYBARA_DEFAULTS.include?(driver)
+ CapybaraDriver.new(name: driver)
+ elsif driver.is_a?(Symbol)
+ klass = const_get(driver.to_s.camelize)
+ klass.new
+ else
+ driver
+ end
+ end
+ end
+ end
+end