All guidesMore providers: databases, auth, hosting, email and payments
On this page

Playwright error

Playwright

browserType.launch: Executable doesn't exist

By Ohad Krispin, founder of VibeRaven · LinkedIn

"browserType.launch: Executable doesn't exist at <path>" means @playwright/test is installed, but the browser build it needs is not in the folder it looks in. Browsers come from the install command, not from the npm package, and a Playwright update can need a new download. Playwright's CI guide runs npx playwright install --with-deps as its own step, after the dependencies and before npx playwright test. A workflow that never runs that step has no browsers to launch. If you run the tests in the mcr.microsoft.com/playwright container, its tag must match your Playwright version. Reproduced with @playwright/test 1.64.1 on 2026-10-31.

What the full message looks like, and how it changed between versions

The text is built in the registry code (packages/playwright-core/src/server/registry/index.ts). It throws "Executable doesn't exist at" followed by the path it expected, then a box with the install command. In 1.64.1 the box starts with "Looks like Playwright was just installed or updated."; the 1.40.0 source says "Looks like Playwright Test or Playwright was just installed or updated." in the same place. Both end with the install command. In our run the missing folder was named chromium_headless_shell-1248, with a build number in the name.

Error: browserType.launch: Executable doesn't exist at <browsers folder>\chromium_headless_shell-1248\chrome-headless-shell-win64\chrome-headless-shell.exe
╔════════════════════════════════════════════════════════════╗
║ Looks like Playwright was just installed or updated.       ║
║ Please run the following command to download new browsers: ║
║                                                            ║
║     npx playwright install                                 ║
║                                                            ║
║ <3 Playwright Team                                         ║
╚════════════════════════════════════════════════════════════╝

Why did the tests pass before and fail after a Playwright upgrade?

The Playwright browsers guide says the browsers go to ~/.cache/ms-playwright on Linux and to %USERPROFILE%\AppData\Local\ms-playwright on Windows, and that every time you update Playwright you might need to run the install command again. The build number in the folder name is part of that: an older download can still be there, but it is not the build the new version asks for. If you cache that folder between CI runs, note that the CI guide does not recommend it, because restoring the cache takes about as long as downloading; if you cache anyway, it says to key the cache on the Playwright version.

What if the message says the image or the system dependencies do not match?

Two other messages in the same source point at the container and the operating system. "Looks like Playwright was just updated to <version>. Please update docker image as well." means the container tag is older than the package. "Host system is missing dependencies to run browsers." means the browser files exist but the Linux libraries they load do not. The Docker guide says that if the Playwright version in the image does not match the version in your project, Playwright cannot locate the browser executables, and it recommends pinning the image to a specific version. The browsers guide says install --with-deps downloads the browsers and the operating system dependencies in one command.

Checklist

How to fix it, then check the fix

  1. 01
    Read the version your project resolves to, so you can compare it with any container tag or cache key:
    npx playwright --version
  2. 02
    In the GitHub Actions workflow, install the browsers in the same job as the tests, after the dependencies:
    - run: npm ci
    - run: npx playwright install --with-deps
    - run: npx playwright test
  3. 03On your own machine, run npx playwright install once after you add or upgrade @playwright/test. If you only run headless tests, the browsers guide says install --only-shell skips the full Chromium download.
  4. 04If the job runs in the mcr.microsoft.com/playwright container, change the tag to the one for your version, for example v1.64.1-noble for Playwright 1.64.1, and update it whenever you upgrade the package.
  5. 05If you cache the browsers folder, key it on the Playwright version or remove the cache step. Then run the job again: the error is gone when the first test opens a page.

Related

Sources

Official docs behind this checklist

FAQ

FAQ for builders before launch

Is npx playwright install --with-deps the same as npx playwright install?

The browsers guide says --with-deps installs the browsers and the operating system dependencies with a single command. Plain install downloads the browsers only. The CI guide uses --with-deps on Linux agents.

Should I cache ~/.cache/ms-playwright between CI runs?

The CI guide says caching browser binaries is not recommended, since restoring the cache takes about as long as downloading them. If you still want it, it says to key the cache on the Playwright version.

Does the error mean my app is broken?

No. The failure happens in browserType.launch, before any page loads, so the test never reached your app. Fix the browser install and the tests start.