require "action_system_test/driver_adapters/web_server" module ActionSystemTest module DriverAdapters # == CapybaraDriver for System Testing # # The CapybaraDriver is a shim 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 RailsSeleniumDriver, but allows users to use Selenium # directly. # # To set your system tests to use one of Capybara's default drivers, add # the following to your +system_test_helper+ class file: # # class ActionSystemTestCase < ActionSystemTest::Base # ActionSystemTest.driver = :rack_test # end # # 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. Please see their README's for instructions on # 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 CapybaraDriver are: # # # # # The settings for the CapybaraDriver can be changed in the # +system_test_helper+ file in your application's test directory. # # ActionSystemTest.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 run 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