microsoft/playwright · critical · Error

${label} is not installed${location}. Run `${command}` to in

Error message

${label} is not installed${location}. Run `${command}` to install

What it means

Thrown by `throwIfExecutableMissing` when a launch error's message includes `Executable doesn't exist` — Playwright's signal that a managed binary (browser or ffmpeg) is absent. The helper extracts the target name and expected path, then produces an actionable install command (`npx @playwright/mcp install-browser <target>` or `playwright-cli install-browser` in skill mode).

Source

Thrown at packages/playwright-core/src/tools/mcp/browserFactory.ts:263

  } catch {
    return false;
  }
}

function throwIfExecutableMissing(error: Error, config: FullConfig): void {
  // The "Executable doesn't exist" prefix is shared by all managed binaries
  // (browser, ffmpeg, winldd). Disambiguate by the path so the user is told
  // which dependency to install, and surface the executable path itself so a
  // version mismatch (an installed build vs. the expected build) is
  // diagnosable rather than looking like a missing install.
  if (!error.message.includes(`Executable doesn't exist`))
    return;
  const target = error.message.includes('ffmpeg') ? 'ffmpeg' : (config.browser.launchOptions?.channel ?? config.browser.browserName);
  const label = target === 'ffmpeg' ? 'FFmpeg' : `Browser "${target}"`;
  const command = config.skillMode ? `playwright-cli install-browser ${target}` : `npx @playwright/mcp install-browser ${target}`;
  const match = error.message.match(/Executable doesn't exist at ([^\r\n]+)/);
  const location = match ? `; expected executable at ${match[1].trim()}` : '';
  throw new Error(`${label} is not installed${location}. Run \`${command}\` to install`);
}

View on GitHub (pinned to c8fc3bf8d3)

Solutions

  1. Run the exact command in the error message: `npx @playwright/mcp install-browser <target>` (or `playwright-cli install-browser <target>` in skill mode).
  2. For a general fix, run `npx playwright install` to install all managed browsers.
  3. If the path in the error looks wrong (stale cache), clear `~/AppData/Local/ms-playwright` (or `~/.cache/ms-playwright`) and reinstall.
  4. For ffmpeg specifically, install ffmpeg support or disable screencast.

Example fix

# before
playwright mcp   # "Browser "chromium" is not installed"
# after
npx @playwright/mcp install-browser chromium
playwright mcp
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await launch(opts);
} catch (e) {
  if (/is not installed/.test((e as Error).message)) {
    const { execSync } = require('child_process');
    execSync('npx @playwright/mcp install-browser <target>', { stdio: 'inherit' });
    await launch(opts); // retry once
  } else throw e;
}

Prevention

When it happens

Trigger: Launching a browser channel/binary whose executable was never installed, was uninstalled, or whose installed build revision no longer matches the Playwright version in use. Also fires for ffmpeg (screencast) when its binary is missing.

Common situations: Fresh checkout without running `playwright install`; upgrading Playwright (new browser build revision) without reinstalling browsers; a CI cache that restored Playwright but not the browser binaries; explicitly selecting a channel (e.g. `msedge`) that isn't installed on the host; ffmpeg missing when screencast/recording is enabled.

Related errors


AI-assisted analysis of microsoft/playwright@c8fc3bf8d3 (2026-08-12). Data as JSON: /api/errors/544b87f2ac1b1c07. Report an issue: GitHub.