Automated browser testing is essential for building robust, high-quality web applications. Whether you are running continuous integration (CI) end-to-end suites, performing regression testing across browser releases, or automating browser interactions, Chrome provides a dedicated suite of tools and execution modes designed for developers and test automation engineers.
This overview introduces the core products in Chrome's automation and testing ecosystem—Chrome for Testing, ChromeDriver, Puppeteer, and Chrome Headless mode—and explains how you can use them together for reliable, reproducible testing workflows.
Chrome for Testing
Chrome for Testing is a dedicated Chrome flavor targeting web app testing and automation use cases.
When running end-to-end test suites or continuous integration (CI) pipelines, you often need consistent, reproducible results across repeated test runs. Rather than relying on standard browser installations, Chrome for Testing lets you download and pin specific Chrome versions for your test environments.
Key features
- On-demand versioned downloads: Access specific, versioned Chrome binaries so you always test against the exact version you choose.
- Paired binaries across channels: For every Chrome release across all channels (Stable, Beta, Dev, and Canary), Chrome for Testing provides matching Chrome binaries paired with the relevant ChromeDriver binaries, as well as the old Chrome Headless shell (
chrome-headless-shell) for those who still use it in automated tests. - Easy download automation: Binaries can be downloaded easily using the
@puppeteer/browserscommand-line utility or queried via the availability dashboard.
Learn more
ChromeDriver
ChromeDriver is an open-source standalone server that implements the W3C WebDriver standard and the bidirectional WebDriver BiDi protocol. It acts as the bridge between WebDriver-based test frameworks (such as Selenium, WebDriverIO, and Nightwatch) and the Chrome browser.
Key features
- W3C WebDriver and WebDriver BiDi support: Supports both classic WebDriver automation commands and real-time bidirectional communication via WebDriver BiDi for fast event listening, network monitoring, and log interception.
- Co-released with Chrome for Testing: ChromeDriver releases are integrated directly into the Chrome for Testing infrastructure. For every Chrome for Testing version, a matching ChromeDriver version is released simultaneously, eliminating version-mismatch headaches.
Learn more
- ChromeDriver documentation
- WebDriver BiDi - The future of cross-browser automation
- MDN: WebDriver BiDi reference
Puppeteer
Puppeteer is a JavaScript library developed by Google that provides a high-level API to control Chrome over the Chrome DevTools Protocol (CDP) or WebDriver BiDi.
Key features
- Zero-setup automation: Puppeteer automatically downloads a compatible Chrome for Testing binary by default, enabling out-of-the-box browser automation.
- Full control over Chrome: Easily capture screenshots, generate PDFs, automate form submissions, intercept network requests, and execute UI tests in either headful or Headless mode.
Learn more
Chrome Headless mode
Chrome Headless mode lets you run Chrome in an unattended environment without any visible user interface. By passing the --headless flag on the command line, Chrome runs cleanly in server environments, containers, and CI/CD pipelines.
Key features
- Unified browser engine: Modern Headless mode (
--headless) shares the exact same browser implementation as headful Chrome. - Rich automation and debugging capabilities: Supports screenshot capture, PDF generation, remote debugging, and virtual screen configuration.
Learn more
- Run Chrome in Headless mode
- Configure virtual screens
- Debug in Headless mode
- Headless command-line reference
Example: Using these products together
In a typical automated testing or continuous integration (CI) workflow, these products work together to provide a reproducible, unattended testing environment:
- Browser binary (Chrome for Testing): Use a specific, version-pinned Chrome for Testing binary so your test results are deterministic across runs.
- Execution mode (Chrome Headless mode): Run that binary in Headless mode (
--headless) so tests execute cleanly in servers, containers, or CI pipelines without a graphical display. - Automation driver (Puppeteer or ChromeDriver): Drive the browser using an automation library like Puppeteer or any other testing framework connected through WebDriver BiDi.
Puppeteer connects these pieces automatically. When installed, it downloads a compatible Chrome for Testing binary and launches it in Headless mode by default.
When using W3C WebDriver frameworks (such as Selenium or WebdriverIO), you can automatically download a matching pair of Chrome for Testing and ChromeDriver binaries and pass the --headless flag to run without UI.