Chrome for Testing
Last updated
Since 2023 Google has published Chrome for Testing, a separate flavour of Chrome intended for automation rather than for browsing.
It exists to solve one specific problem: regular Chrome updates itself, ChromeDriver is tied to a Chrome version, and so a suite that passed yesterday can fail this morning because the browser moved and the driver did not. Chrome for Testing gives you a build that will not change underneath you.
What Chrome for Testing changes
- Auto-update is disabled. The binary you downloaded is the binary you will run tomorrow.
- Every version stays downloadable. Regular Chrome only offers the current release, so pinning an older version is not possible.
- Each build has a matching ChromeDriver. Both are published together under the same version number.
- No automatic sign-in or profile sync, and none of the first-run and promotional surfaces that interfere with automation.
- It is not branded as Chrome and is explicitly not intended for regular browsing.
Chrome for Testing, Chrome and Chromium
The three are easy to confuse, and the difference matters when you are deciding what to test on.
- Chrome is what your customers run. It auto-updates, includes proprietary codecs and Google integrations, and is the only one of the three that reflects real user behaviour.
- Chrome for Testing is the same Chrome code at a pinned version, with the update mechanism and sign-in surfaces removed. Rendering matches Chrome for that version.
- Chromium is the upstream open-source project. It omits proprietary codecs, so media playback and DRM behave differently from Chrome.
For a deterministic local or CI run, Chrome for Testing is the right pick. For a final check that your site works for real users, real Chrome is what matters.
How to download Chrome for Testing
The simplest route is the @puppeteer/browsers command line utility.
npx @puppeteer/browsers install chrome@stable
You can pin an exact version instead of stable:
npx @puppeteer/browsers install chrome@116.0.5793.0
The Chrome for Testing availability page lists every published build and its status, and is the place to check what exists before pinning.
Downloading the matching ChromeDriver
Install the driver with the same version string so the pair cannot drift apart:
npx @puppeteer/browsers install chromedriver@116.0.5793.0
Pinning a version in CI
The value of Chrome for Testing only materialises if the version is pinned somewhere durable rather than resolved at run time. Put the version in a variable your CI job reads, install both binaries from it, and treat a bump as a normal reviewed change.
CHROME_VERSION=116.0.5793.0
npx @puppeteer/browsers install chrome@$CHROME_VERSION
npx @puppeteer/browsers install chromedriver@$CHROME_VERSION
Cache the downloaded binaries between runs. They are large, and re-downloading them on every build is usually the slowest step in the job.
When not to use Chrome for Testing
Version pinning is a double-edged tool. A suite pinned to Chrome 116 will keep passing long after your customers have moved on, which means you stop discovering the breakages that matter. Two habits avoid that:
- Pin for the deterministic runs that gate a merge, so a browser update never turns into a mystery failure.
- Run the same suite against current, auto-updating Chrome on a schedule, so you learn about real-world breakage on your own timeline rather than from a customer.
TestingBot provides real Chrome browsers and automatically pairs each one with the correct ChromeDriver, so the version-mismatch problem does not arise. We deliberately do not offer Chrome for Testing builds: for the runs we host, we think it is more useful to test on the browsers your customers are actually using.