Browsers and Headless Mode

Chrome, Firefox, Edge

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

static WebDriver createDriver(String browser) {
    return switch (browser.toLowerCase()) {
        case "firefox" -> new FirefoxDriver();
        case "edge"    -> new EdgeDriver();
        default        -> new ChromeDriver();
    };
}

Note: Safari: enable "Allow Remote Automation" in Safari's Develop menu on a Mac, then use new SafariDriver().

Headless Chrome

Headless means the browser runs without a visible window. It is faster and is the normal mode on CI servers that have no screen.

import org.openqa.selenium.chrome.ChromeOptions;

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");          // the new headless mode (Chrome 109+)
options.addArguments("--window-size=1920,1080");
WebDriver driver = new ChromeDriver(options);
driver.get("https://shopease.example.com");
System.out.println(driver.getTitle());
driver.quit();

Example

No window opens; the console still prints:

Run HeadlessTest.main()

Example output

ShopEase - Online Shopping for Electronics, Fashion and More

Choosing the Browser from Outside

Example

Teams pass the browser name as a system property (mvn test -Dbrowser=firefox). This runnable example shows the selection logic:

public class Main {
    static String driverFor(String browser) {
        return switch (browser.toLowerCase()) {
            case "firefox" -> "FirefoxDriver";
            case "edge" -> "EdgeDriver";
            default -> "ChromeDriver";
        };
    }

    public static void main(String[] args) {
        String fromCommandLine = System.getProperty("browser", "chrome");  // not set here, so default
        System.out.println("browser=" + fromCommandLine + " -> " + driverFor(fromCommandLine));
        for (String b : new String[] {"Firefox", "EDGE", "safari?"}) {
            System.out.println("browser=" + b + " -> " + driverFor(b));
        }
    }
}

Output

browser=chrome -> ChromeDriver
browser=Firefox -> FirefoxDriver
browser=EDGE -> EdgeDriver
browser=safari? -> ChromeDriver