module SystemTesting module DriverAdapters # == CapybaraDriver for System Testing # # The CapybaraDriver 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 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 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 CapybaraDriver are: # # # # # The settings for the CapybaraDriver can be changed from # Rails' configuration file. # # config.system_testing.driver = SystemTesting::DriverAdapters::CapybaraDriver.new( # name: :webkit, # server: :webrick # ) class CapybaraDriver CAPYBARA_DEFAULTS = [ :rack_test, :selenium, :webkit, :poltergeist ] attr_reader :name def initialize(name) @name = name end def call Capybara.default_driver = @name end end end end