Capybara Box
Configure Capybara with Chrome, Chrome Headless, Firefox and Firefox Headless with Screenshot feature without losing your mind.
install
Add the following code on your Gemfile and run bundle install:
group :test do
  gem 'capybara-box', require: false
endUsage
Just require the lib after Capybara require and you done:
require 'capybara/rails'
require 'capybara-box'
CapybaraBox::Base.configureBy default, selenium_chrome is the driver, but you can use selenium_chrome_headless and selenium_firefox or selenium_firefox_headless too.
CapybaraBox::Base.configure(browser: :selenium_firefox)Version
The version is setted via webdrivers. You can specify the version:
CapybaraBox::Base.configure(version: '83.0.4103.39')Screenshot
You can enable screenshot on failure:
CapybaraBox.configure(screenshot: { enabled: true })If you want to send the screenshot and html page to S3 setup your credentials via ENV:
ENV['CAPYBARA_BOX__S3_BUCKET_NAME']
ENV['CAPYBARA_BOX__S3_REGION']
ENV['CAPYBARA_BOX__S3_ACCESS_KEY_ID']
ENV['CAPYBARA_BOX__S3_SECRET_ACCESS_KEY']And then enable S3 feature:
CapybaraBox.configure(screenshot: { enabled: true, s3: true })Add Argument
By default some Switches are enabled for a better performance, you can add yours too:
capybara_box = CapybaraBox.configure
capybara_box.add_argument('--incognito')Arguments
If you prefere, is possible override all of them:
CapybaraBox.configure(arguments: ['--incognito'])Click here to see the avaiables.
Add Preference
By default some Preferences are enabled for a better performance, you can add yours too:
capybara_box = CapybaraBox.configure
capybara_box.add_preference(:credentials_enable_service, false)Preferences
If you prefere, is possible override all of them:
CapybaraBox.configure(preferences: { credentials_enable_service: false })You can check Chrome and Firefox.
HTTP Client Options
By default some timeout configs are enabled only on CI env for a better performance. It has this restrition because with timeout enabled, debugger cannot evaluate the variables values. You can override all of them too:
CapybaraBox.configure(http_client_options: { read_timeout: 60 })Driver Options
You can override all driver options:
CapybaraBox.configure(driver_options: { clear_local_storage: true })Logger
Logs are writen as WARN on the STDOUT by default. You can change it:
CapybaraBox.configure(logger: { level: :debug, output: 'log/selenium.log' })