Google has recently announced a way to run the Chrome browser in a headless environment. If you’re using Capybara gem, you can easily start using headless Chrome. Without further ado, let’s do it:
1) Make sure you have one of the following Chrome versions:
- 57+ on Linux
- 59+ on macOS
- 60+ on Windows
2) Add (or update) the gem selenium-webdriver
;
3) Make sure you’re using ChromeDriver version 2.30 or higher. You can install it by running:
brew install chromedriver
on macOS;apt-get install chromium-chromedriver
on Debian/Ubuntu Linux.
4) Add the following driver
to your spec_helper.rb
or rails_helper.rb
:
Capybara.register_driver:chromedo|app|Capybara::Selenium::Driver.newapp,browser: :chrome,options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])endCapybara.javascript_driver=:chrome
Done, enjoy headless Chrome! ᕕ( ᐛ )ᕗ
You might get a warning like the following:
WARN Selenium [DEPRECATION] :args or :switches is deprecated. Use Selenium::WebDriver::Chrome::Options#add_argument instead.
Make sure you don’t have another registered driver, I made this mistake myself and had an iphone
driver, which was passing args
in the old way and turned out to be the reason why I was getting the warning.