Last active
February 20, 2025 16:26
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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