Next-Gen App & Browser Testing Cloud
Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

Playwright does not pick up a newly released browser automatically because it ships and drives its own patched builds of Chromium, Firefox, and WebKit rather than the stock browser installed on your machine. When you see a compatibility error after a browser update, it almost always means your Playwright package is outdated, the matching browser builds were never re-downloaded, or you are pointing a branded channel at a version Playwright does not support. The fix is to upgrade Playwright and reinstall its browsers so the versions line up again.
Playwright is not a generic driver that attaches to whatever browser is on the system. With every release it downloads specific, patched builds of Chromium, Firefox, and WebKit, and each Playwright version pins the exact browser versions it was tested against. This tight coupling is what makes Playwright stable and deterministic, but it also means a brand-new public browser release has no direct relationship with the binaries Playwright runs.
In practice, Playwright's bundled Chromium usually runs ahead of the branded Chrome and Edge stable channels, so it is rarely "behind" the latest browser. The compatibility friction comes from the version contract between the Playwright package and its browser bundle, not from Playwright failing on modern web features. Understanding that contract is the key to resolving every error in this category.
@playwright/test version pins older browser builds and will never download the newer ones until you upgrade the package itself.channel: 'chrome' or 'msedge' tells Playwright to use the installed branded browser, which it does not install or update for you. A branded browser that is too new, too old, or absent triggers the failure.ms-playwright browser directory. If the cache key is not tied to the Playwright version, the runner keeps reusing old binaries even after you upgrade.Step 1 - Upgrade Playwright to the latest version. The package and its browser bundle move together, so start by updating @playwright/test.
# Update the Playwright test runner to the latest release
npm install -D @playwright/test@latest
# Confirm the installed version
npx playwright --versionStep 2 - Reinstall the matching browser builds. Run the install command after every upgrade so the binaries on disk match the version Playwright now expects. On Linux and CI, add --with-deps to also pull the required system libraries.
# Download the browser builds pinned to your Playwright version
npx playwright install
# On Linux / CI, also install the OS-level dependencies
npx playwright install --with-depsStep 3 - Prefer bundled Chromium over a branded channel. If you do not specifically need the stock branded browser, drop the channel option so Playwright uses its own bundled Chromium, which it manages and keeps current for you.
// playwright.config.js
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
projects: [
{
name: 'bundled-chromium',
// No channel: Playwright uses its own patched Chromium build
use: { ...devices['Desktop Chrome'] },
},
{
name: 'branded-chrome',
// channel forces the installed Google Chrome (you must keep it updated)
use: { ...devices['Desktop Chrome'], channel: 'chrome' },
},
],
});Step 4 - Invalidate stale caches in CI. Key the browser cache on the Playwright version so a new version always triggers a fresh download instead of reusing old binaries.
# Pin the cache to the exact Playwright version
PW_VERSION=$(npx playwright --version | cut -d ' ' -f 2)
echo "Cache key: playwright-${PW_VERSION}"
# Re-run the install inside the pipeline so deps are present
npx playwright install --with-depsChoosing between Playwright's bundled browser and a branded channel decides who is responsible for keeping the browser current.
| Aspect | Bundled Chromium (no channel) | Branded channel (chrome / msedge) |
|---|---|---|
| Who installs it | Playwright, via npx playwright install | You install and update the branded browser |
| Version control | Pinned to your Playwright version | Whatever stable version is on the host |
| Relation to latest browser | Often ahead of branded stable | Matches the real shipping browser |
| Best for | Deterministic, reproducible runs | Validating exact production browser behavior |
Managing browser binaries locally and in CI is the most common source of these errors. Running Playwright on a cloud grid removes that burden because the grid provisions and maintains the browser versions for you. On TestMu AI you can run Playwright versions from 1.24 up to the latest, and the capability useSpecificBundleVersion: true tells the grid to select the Chromium, Firefox, or WebKit build that matches your local Playwright version, keeping the version contract intact without any manual install.
// Connect Playwright to the cloud grid
const { chromium } = require('playwright');
const capabilities = {
browserName: 'Chrome',
'LT:Options': {
platform: 'Windows 11',
build: 'Playwright Browser Compatibility',
name: 'Latest browser run',
user: process.env.LT_USERNAME,
accessKey: process.env.LT_ACCESS_KEY,
// Match the grid's browser bundle to your local Playwright version
useSpecificBundleVersion: true,
},
};With this setup you can validate the same test against multiple browser and OS combinations in parallel, without downloading or patching a single binary on your own machine. You can read more in What Is Playwright? for a broader view of how the framework drives browsers.
npm install -D @playwright/test@latest and npx playwright install as a single step so the package and binaries never drift apart.ms-playwright cache on the Playwright version and run install with --with-deps so new versions always fetch fresh binaries and OS libraries.Not by default. Playwright downloads and drives its own patched builds of Chromium, Firefox, and WebKit. It only uses your installed Google Chrome or Microsoft Edge when you explicitly set the channel option to 'chrome' or 'msedge', and even then it will not install or update those branded browsers for you.
Upgrade Playwright with npm install -D @playwright/test@latest, then run npx playwright install to download the matching builds. Each release pins specific browser versions, so the latest Playwright ships the latest supported Chromium, Firefox, and WebKit.
Upgrading the package does not download the new binaries. The new version expects newer builds that are not on disk yet. Run npx playwright install after every upgrade, and on Linux or CI add --with-deps to also install the required system libraries.
Usually it is the opposite. Playwright's bundled Chromium tracks ahead of the branded Chrome and Edge stable channels, so it often ships a Chromium build one version newer than the public release. If you specifically need the branded stable browser, use the channel option instead of the bundled binary.
CI usually caches the ms-playwright browser directory. If the cache key is not tied to the Playwright version, the pipeline keeps reusing old binaries while your local machine has the new ones. Invalidate the cache by keying it on the installed Playwright version and run npx playwright install --with-deps in the pipeline.
Yes. Running Playwright on a cloud grid removes local binary management. On TestMu AI you can run Playwright versions from 1.24 to the latest, and setting useSpecificBundleVersion to true makes the grid pick the Chromium, Firefox, or WebKit build that matches your local Playwright version.
KaneAI - Testing Assistant
World’s first AI-Native E2E testing agent.

TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance