Skip to content

Instantly share code, notes, and snippets.

@chanakasan
Forked from bbonamin/Brewfile
Last active February 22, 2021 12:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chanakasan/6b8f9a6291e5e8c57034c7b7cbb4a483 to your computer and use it in GitHub Desktop.
Save chanakasan/6b8f9a6291e5e8c57034c7b7cbb4a483 to your computer and use it in GitHub Desktop.
Capybara Selenium Webdriver: Headless Chrome (with file downloads!) & Headless Firefox
require 'capybara/rspec'
require 'selenium/webdriver'
options = Selenium::WebDriver::Chrome::Options.new
options.add_preference(:download, prompt_for_download: false,
default_directory: '/tmp/downloads')
options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.register_driver :headless_chrome do |app|
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,800')
driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
### Allow file downloads in Google Chrome when headless!!!
### https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c89
bridge = driver.browser.send(:bridge)
path = '/session/:session_id/chromium/send_command'
path[':session_id'] = bridge.session_id
bridge.http.call(:post, path, cmd: 'Page.setDownloadBehavior',
params: {
behavior: 'allow',
downloadPath: '/tmp/downloads'
})
###
driver
end
Capybara.javascript_driver = ENV['GUI'] ? :chrome : :headless_chrome
require 'capybara/rspec'
require 'selenium/webdriver'
Capybara.register_driver :firefox do |app|
Capybara::Selenium::Driver.new(app, browser: :firefox)
end
Capybara.register_driver :headless_firefox do |app|
options = Selenium::WebDriver::Firefox::Options.new
options.headless! # added on https://github.com/SeleniumHQ/selenium/pull/4762
Capybara::Selenium::Driver.new app,
browser: :firefox,
options: options
end
Capybara.javascript_driver = ENV['GUI'] ? :firefox : :headless_firefox
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment