Skip to content

Instantly share code, notes, and snippets.

@thomasklemm
Last active January 7, 2019 11:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thomasklemm/e1c77d1dd86d74e9a84083f593d7d82b to your computer and use it in GitHub Desktop.
Save thomasklemm/e1c77d1dd86d74e9a84083f593d7d82b to your computer and use it in GitHub Desktop.
Chromedriver settings for headless Chrome in RSpec/Rails, with switching between different drivers based on command line settings
# ChromeDriver for JavaScript enabled feature/system specs
#
# Example usage:
# `$ bin/rspec` # Chrome in Headless Mode (Default)
# `$ SHOW_BROWSER=true bin/rspec` # Chrome
# `$ SHOW_BROWSER=true DEVTOOLS=true bin/rspec` # Chrome with Devtools
require 'selenium/webdriver'
Capybara.register_driver :chrome do |app|
chrome_driver(app, chrome_options: %w[window-size=1440,1080])
end
Capybara.register_driver :headless_chrome do |app|
chrome_driver(app, chrome_options: %w[headless disable-gpu window-size=1440,1080])
end
Capybara.register_driver :chrome_with_devtools do |app|
chrome_driver(app, chrome_options: %w[window-size=2560,1440 auto-open-devtools-for-tabs])
end
def chrome_driver(app, chrome_options:)
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: chrome_options }
)
Capybara::Selenium::Driver.new app,
browser: :chrome,
desired_capabilities: capabilities
end
def select_javascript_driver
if ENV['SHOW_BROWSER'] && ENV['DEVTOOLS']
:chrome_with_devtools
elsif ENV['SHOW_BROWSER']
:chrome
else
:headless_chrome
end
end
Capybara.javascript_driver = select_javascript_driver
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment