microsoft/playwright · error · Error

${name} is not supported on ${hostPlatform}

Error message

${name} is not supported on ${hostPlatform}

What it means

Thrown by Registry.executablePathOrDie when an executable has no path token for the current shortPlatform (the EXECUTABLE_PATHS table has no entry for this browser on this OS/arch). It means Playwright does not ship or know a binary location for that browser on the host platform at all, distinct from 'the binary exists but is not downloaded'.

Source

Thrown at packages/playwright-core/src/server/registry/index.ts:518

interface ExecutableImpl extends Executable {
  _install?: (force: boolean) => Promise<void>;
  _dependencyGroup?: DependencyGroup;
  _isHermeticInstallation?: boolean;
}

export class Registry {
  private _executables: ExecutableImpl[];

  constructor(browsersJSON: BrowsersJSON) {
    const descriptors = readDescriptors(browsersJSON);
    const findExecutablePath = (dir: string, name: keyof typeof EXECUTABLE_PATHS) => {
      const tokens = EXECUTABLE_PATHS[name][shortPlatform];
      return tokens ? path.join(dir, ...tokens) : undefined;
    };
    const executablePathOrDie = (name: string, e: string | undefined, installByDefault: boolean, sdkLanguage: string) => {
      if (!e)
        throw new Error(`${name} is not supported on ${hostPlatform}`);
      const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install${installByDefault ? '' : ' ' + name}`);
      if (!canAccessFile(e)) {
        const currentDockerVersion = readDockerVersionSync();
        const preferredDockerVersion = currentDockerVersion ? dockerVersion(currentDockerVersion.dockerImageNameTemplate) : null;
        const isOutdatedDockerImage = currentDockerVersion && preferredDockerVersion && currentDockerVersion.dockerImageName !== preferredDockerVersion.dockerImageName;
        const isFfmpeg = name === 'ffmpeg';
        let prettyMessage;
        if (isOutdatedDockerImage) {
          prettyMessage = [
            `Looks like Playwright was just updated to ${preferredDockerVersion.driverVersion}.`,
            `Please update docker image as well.`,
            `-  current: ${currentDockerVersion.dockerImageName}`,
            `- required: ${preferredDockerVersion.dockerImageName}`,
            ``,
            `<3 Playwright Team`,
          ].join('\n');
        } else if (isFfmpeg) {
          prettyMessage = [

View on GitHub (pinned to c8fc3bf8d3)

Solutions

  1. Confirm the browser is published for your platform/arch in the version's browsers.json; if not, pick a supported browser (chromium usually has the widest coverage).
  2. Match the Playwright/browsers version to your architecture, or run under emulation that matches a published build.
  3. For platform-specific builds like webkit-wsl, run on the platform they require (see errors 357/358).

Example fix

# arm64 host requesting an x64-only build -> 'is not supported on'
# use chromium which is published broadly
const browser = await chromium.launch();
Defensive patterns

Strategy: validation

Validate before calling

const exe = registry.findExecutable(name);
if (!exe || !exe.executablePath())
  throw new Error(`${name} has no build for this platform; choose a supported browser`);

Prevention

When it happens

Trigger: Requesting a browser executable that is not built for the current platform/arch (e.g. a Mac-only or Windows-only build on Linux, or an arm64/x64 mismatch); using a browser descriptor whose revision dropped support for the current platform after an upgrade.

Common situations: Cross-arch containers (x64 browser list on arm64 host without emulation); upgrading Playwright to a version that no longer publishes a binary for the host; requesting a browser (e.g. webkit-wsl) outside its supported platform.

Related errors


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