:package: Capybara Box - A Tool Box for Capybara
Configure Capybara with Chrome, Chrome Headless, Firefox and Firefox Headless with Screenshot feature without losing your mind.
Add the following code on your Gemfile and run bundle install:
group :test do
gem 'capybara-box', require: false
end
Just require the lib after Capybara require and you done:
require 'capybara/rails'
require 'capybara-box'
CapybaraBox::Base.configure
By 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)
The version is setted via webdrivers
. You can specify the version:
CapybaraBox::Base.configure(version: '83.0.4103.39')
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 })
By default some Switches are enabled for a better performance, you can add yours too:
capybara_box = CapybaraBox.configure
capybara_box.add_argument('--incognito')
If you prefere, is possible override all of them:
CapybaraBox.configure(arguments: ['--incognito'])
Click here to see the avaiables.
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)
If you prefere, is possible override all of them:
CapybaraBox.configure(preferences: { credentials_enable_service: false })
You can check Chrome and Firefox.
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 })
You can override all driver options:
CapybaraBox.configure(driver_options: { clear_local_storage: true })
Logs are writen as WARN on the STDOUT
by default. You can change it:
CapybaraBox.configure(logger: { level: :debug, output: 'log/selenium.log' })