I have a rails app, and am running capybara & selenium, and using chrome for end-to-end testing. I want to set the default download directory while running chrome headless.
Here's how I have it setup in my support/env.rb:
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
'chromeOptions' => {
'args' => %w(headless disable-gpu window-size=1920,1080),
'prefs' => {
'download.default_directory' => DownloadHelpers::PATH.to_s
}
}
)
Capybara::Selenium::Driver.new app,
browser: :chrome,
#args: ["--window-size=1024,768"], #UNCOMMENT TO HAVE BROWSER WINDOW POP UP
desired_capabilities: capabilities
end
I have noticed that if I leave off
'args' => %w(headless disable-gpu window-size=1920,1080)
Then the default download directory is set, however, the browser automatically pops up, which I want to disable.
When I have both:
'args' => %w(headless disable-gpu window-size=1920,1080),
'prefs' => {
'download.default_directory' => DownloadHelpers::PATH.to_s
}
It runs headless, but the default download path is not set.
I have the following versions:
capybara (2.14.2)
selenium-webdriver (3.6.0)
chromedriver-helper (1.1.0)