53 lines
1.6 KiB
Ruby
53 lines
1.6 KiB
Ruby
require 'capybara-screenshot/spinach'
|
|
|
|
# Give CI some extra time
|
|
timeout = (ENV['CI'] || ENV['CI_SERVER']) ? 60 : 30
|
|
|
|
Capybara.register_driver :chrome do |app|
|
|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
|
|
# This enables access to logs with `page.driver.manage.get_log(:browser)`
|
|
loggingPrefs: {
|
|
browser: "ALL",
|
|
client: "ALL",
|
|
driver: "ALL",
|
|
server: "ALL"
|
|
}
|
|
)
|
|
|
|
options = Selenium::WebDriver::Chrome::Options.new
|
|
options.add_argument("window-size=1240,1400")
|
|
|
|
# Chrome won't work properly in a Docker container in sandbox mode
|
|
options.add_argument("no-sandbox")
|
|
|
|
# Run headless by default unless CHROME_HEADLESS specified
|
|
unless ENV['CHROME_HEADLESS'] =~ /^(false|no|0)$/i
|
|
options.add_argument("headless")
|
|
|
|
# Chrome documentation says this flag is needed for now
|
|
# https://developers.google.com/web/updates/2017/04/headless-chrome#cli
|
|
options.add_argument("disable-gpu")
|
|
end
|
|
|
|
Capybara::Selenium::Driver.new(
|
|
app,
|
|
browser: :chrome,
|
|
desired_capabilities: capabilities,
|
|
options: options
|
|
)
|
|
end
|
|
|
|
Capybara.javascript_driver = :chrome
|
|
Capybara.default_max_wait_time = timeout
|
|
Capybara.ignore_hidden_elements = false
|
|
|
|
# Keep only the screenshots generated from the last failing test suite
|
|
Capybara::Screenshot.prune_strategy = :keep_last_run
|
|
# From https://github.com/mattheworiordan/capybara-screenshot/issues/84#issuecomment-41219326
|
|
Capybara::Screenshot.register_driver(:chrome) do |driver, path|
|
|
driver.browser.save_screenshot(path)
|
|
end
|
|
|
|
Spinach.hooks.before_run do
|
|
TestEnv.eager_load_driver_server
|
|
end
|