aboutsummaryrefslogtreecommitdiffstats
path: root/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb')
-rw-r--r--actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb83
1 files changed, 83 insertions, 0 deletions
diff --git a/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb b/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb
new file mode 100644
index 0000000000..5362f6db25
--- /dev/null
+++ b/actionsystemtest/lib/action_system_test/driver_adapters/capybara_driver.rb
@@ -0,0 +1,83 @@
+require "action_system_test/driver_adapters/web_server"
+
+module ActionSystemTest
+ module DriverAdapters
+ # == CapybaraDriver for System Testing
+ #
+ # The <tt>CapybaraDriver</tt> is a shim that sits between Rails and
+ # Capybara.
+ #
+ # The drivers Capybara supports are: +:rack_test+, +:selenium+, +:webkit+,
+ # and +:poltergeist+.
+ #
+ # Rails provides its own defaults for Capybara with the Selenium driver
+ # through <tt>RailsSeleniumDriver</tt>, but allows users to use Selenium
+ # directly.
+ #
+ # To set your system tests to use one of Capybara's default drivers, add
+ # the following to yur Rails' configuration test environment:
+ #
+ # config.system_testing.driver = :rack_test
+ #
+ # The +:rack_test+ driver is a basic test driver that doesn't support
+ # JavaScript testing and doesn't require a server.
+ #
+ # The +:poltergeist+ and +:webkit+ drivers are headless, but require some
+ # extra environment setup. Because the default server for Rails is Puma, each
+ # of the Capybara drivers will default to using Puma. Changing the configuration
+ # to use Webrick is possible by initalizing a new driver object.
+ #
+ # The default settings for the <tt>CapybaraDriver</tt> are:
+ #
+ # #<ActionSystemTest::DriverAdapters::CapybaraDriver:0x007ff0e992c1d8
+ # @name=:rack_test,
+ # @server=:puma,
+ # @port=28100
+ # >
+ #
+ # The settings for the <tt>CapybaraDriver</tt> can be changed from
+ # Rails' configuration file.
+ #
+ # config.system_testing.driver = ActionSystemTest::DriverAdapters::CapybaraDriver.new(
+ # name: :webkit,
+ # server: :webrick
+ # )
+ class CapybaraDriver
+ include WebServer
+
+ CAPYBARA_DEFAULTS = [ :rack_test, :selenium, :webkit, :poltergeist ]
+
+ attr_reader :name, :server, :port
+
+ def initialize(name: :rack_test, server: :puma, port: 28100)
+ @name = name
+ @server = server
+ @port = port
+ end
+
+ def call
+ registration
+ setup
+ end
+
+ def supports_screenshots?
+ @name != :rack_test
+ end
+
+ private
+ def registration
+ register_server
+ end
+
+ def setup
+ set_server
+ set_port
+ set_driver
+ end
+
+ def set_driver
+ Capybara.default_driver = @name
+ end
+ end
+ end
+end