{"record":{"id":"6e7464687a1d2e98","repo":"microsoft/playwright","slug":"this-browserchannel-executable-not-found-ma","errorCode":null,"errorMessage":"\"${this._browserChannel}\" executable not found. Make sure it is installed at a standard location.","messagePattern":"\"(.+?)\" executable not found\\. Make sure it is installed at a standard location\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/playwright-core/src/tools/mcp/cdpRelay.ts","lineNumber":157,"sourceCode":"      // Not used anymore.\n      version: undefined,\n    };\n    url.searchParams.set('client', JSON.stringify(client));\n    url.searchParams.set('protocolVersion', this._protocolVersion.toString());\n    const token = process.env.PLAYWRIGHT_MCP_EXTENSION_TOKEN;\n    if (token)\n      url.searchParams.set('token', token);\n    const href = url.toString();\n\n    const channel = registry.isChromiumAlias(this._browserChannel) ? 'chromium' : this._browserChannel;\n    let executablePath = this._executablePath;\n    if (!executablePath) {\n      const executableInfo = registry.findExecutable(channel);\n      if (!executableInfo)\n        throw new Error(`Unsupported channel: \"${this._browserChannel}\"`);\n      executablePath = executableInfo.executablePath();\n      if (!executablePath)\n        throw new Error(`\"${this._browserChannel}\" executable not found. Make sure it is installed at a standard location.`);\n    }\n\n    const args: string[] = [];\n    // The default profile dir is not passed explicitly, the browser resolves it on its own.\n    if (this._customUserDataDir)\n      args.push(`--user-data-dir=${this._customUserDataDir}`);\n    if (this._profileDirectory)\n      args.push(`--profile-directory=${this._profileDirectory}`);\n    if (os.platform() === 'linux' && channel === 'chromium')\n      args.push('--no-sandbox');\n    args.push(href);\n    spawn(executablePath, args, {\n      windowsHide: true,\n      detached: true,\n      shell: false,\n      stdio: 'ignore',\n    });\n  }","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/playwright-core/src/tools/mcp/cdpRelay.ts#L139-L175","documentation":"Thrown by CdpRelay when `registry.findExecutable(channel)` returns an entry but `executableInfo.executablePath()` is falsy — the channel is known but no installed binary maps to it on this machine. Distinct from 475 (unknown channel): here the channel is recognized, just not installed at a standard location.","triggerScenarios":"Selecting a registered channel (e.g. `msedge`, `chrome`) that is not installed on the host, while not passing `--executable-path`. `findExecutable` resolves the registry entry but `executablePath()` returns empty because the binary isn't present at the expected standard path.","commonSituations":"Selecting `--browser msedge` on a machine without Edge; `--browser chrome` without Chrome installed; a fresh CI box where only the bundled Chromium is installed but a system channel was requested.","solutions":["Install the requested browser at its standard location (e.g. install Chrome/Edge system-wide).","Switch to a channel that is installed, or to the bundled `chromium` (`npx playwright install chromium`).","Pass `--executable-path` pointing at wherever the browser binary actually lives."],"exampleFix":"# before\nplaywright mcp --extension --browser msedge   # Edge not installed\n# after\nplaywright mcp --extension --browser chrome   # Chrome installed\n# or\nplaywright mcp --extension --executable-path /usr/bin/google-chrome","handlingStrategy":"validation","validationCode":"import * as registry from '@tools/mcp/registry';\nfunction assertExecutableAvailable(channel: string) {\n  const info = registry.findExecutable(channel);\n  if (!info || !info.executablePath())\n    throw new Error(`No installed executable for ${channel}; install it or pass --executable-path.`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Install the requested browser at its standard location.","Fall back to the bundled chromium if no system browser is available.","Pass --executable-path when the binary lives in a non-standard location."],"tags":["extension","cdp-relay","executable","channel","install"],"backgroundTag":null,"analyzedSha":"c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6","analyzedAt":"2026-08-12T07:26:36.950Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}