Hero Background

Next-Gen App & Browser Testing Cloud

Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

Next-Gen App & Browser Testing Cloud

Why Playwright is not compatible with the latest version of a web browser?

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.

Why Playwright Couples to Its Own Browser Builds

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.

Common Causes of the Mismatch

  • Outdated Playwright package: An old @playwright/test version pins older browser builds and will never download the newer ones until you upgrade the package itself.
  • Browsers not re-downloaded after an upgrade: Bumping the package does not pull the new binaries. The new version expects browser builds that are not on disk yet, so Playwright reports the browser as missing.
  • Using a branded channel against an unsupported version: Setting 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.
  • Missing system dependencies: On Linux and CI runners, a newly downloaded browser can fail to launch when the host is missing the shared system libraries the build needs.
  • Stale CI cache: Pipelines cache the 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.
  • Cloud grid pinned to an older Playwright: When tests run on a remote grid, the grid's supported Playwright range determines the browser versions, so a version gap between your project and the grid surfaces as a compatibility error.

How to Fix Playwright Browser Compatibility

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 --version

Step 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-deps

Step 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-deps

Bundled Chromium vs. Branded Channel

Choosing between Playwright's bundled browser and a branded channel decides who is responsible for keeping the browser current.

AspectBundled Chromium (no channel)Branded channel (chrome / msedge)
Who installs itPlaywright, via npx playwright installYou install and update the branded browser
Version controlPinned to your Playwright versionWhatever stable version is on the host
Relation to latest browserOften ahead of branded stableMatches the real shipping browser
Best forDeterministic, reproducible runsValidating exact production browser behavior

Running the Latest Browsers on a Cloud Grid

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.

Best Practices to Avoid Version Drift

  • Always pair an upgrade with an install: Treat npm install -D @playwright/test@latest and npx playwright install as a single step so the package and binaries never drift apart.
  • Pin Playwright in package.json: Lock the version so every contributor and every CI runner downloads the same browser builds, eliminating "works on my machine" mismatches.
  • Default to bundled browsers: Use the bundled Chromium unless you have a specific reason to test the branded stable browser, since Playwright keeps the bundled build current for you.
  • Tie CI caches to the version: Key the ms-playwright cache on the Playwright version and run install with --with-deps so new versions always fetch fresh binaries and OS libraries.
  • Check the release notes: Before chasing a "latest browser" bug, confirm whether a newer Playwright already supports the browser version you need.

Frequently Asked Questions

Does Playwright use the browser already installed on my machine?

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.

How do I make Playwright support the newest browser version?

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.

Why does Playwright say the browser is not installed after I upgraded?

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.

Is Playwright's bundled Chromium older than the latest Chrome?

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.

Why do my Playwright tests fail in CI but pass locally after a browser update?

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.

Can I run the latest browser versions without managing binaries myself?

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.

Related Questions

Test Your Website on 3000+ Browsers

Get 100 minutes of automation test minutes FREE!!

Test Now...

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

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests