Running Selenium Tests With Chrome Headless

DZone 's Guide to

Running Selenium Tests With Chrome Headless

Learn how to use Java to execute tests in a headless Google Chrome browser and make testing your web applications a little easier.

· Web Dev Zone ·
Free Resource


Before Google Chrome 59, headless execution had to be done by third-party headless browsers like PhantomJSSlimerJSTrifleJSNightmare, and HTMLUnit.

The "problem" is that these headless browsers emulate some engines, but not V8 (the Chrome engine).

Headless Browser Engine
PhantomJS QtWebKit
SlimerJS Gecko (Firefox)
TrifleJS Trident (IE)
Nightmare Electron

When we talk about testing, it's necessary to simulate Google's real engine, as both Internet users and web devs tend toward using Google Chrome.

How to Do it With Java

As Google Chrome ships with headless execution in version 59 (as you can see here) we can tell ChromeDriver the options before the execution.

In the code below I added two options through ChromeOptionsheadless and the window-size.

// imports omitted
public class ChromeHeadlessTest {

    public void testExecution() throws IOException {
        System.setProperty("webdriver.chrome.driver", "<chromedrier_path>");

        // Add options to Google Chrome. The window-size is important for responsive sites
        ChromeOptions options = new ChromeOptions();

        WebDriver driver = new ChromeDriver(options);

        // a guarantee that the test was really executed


The headless option will tell to Google Chrome to execute in headless mode. The window-size is a way to control the responsiveness (and allows your site be displayed, like a mobile site, if you have not set a window size).

You can see some other ways to inform the ChromeOptions here.

google chrome, selenium, test automation, web dev

Published at DZone with permission of Elias Nogueira . See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}