{"record":{"id":"dd01c1c0109926b1","repo":"microsoft/playwright","slug":"unsupported-platform-process-platform-dd01c1","errorCode":null,"errorMessage":"Unsupported platform: ${process.platform}","messagePattern":"Unsupported platform: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/playwright-core/src/tools/cli-client/registry.ts","lineNumber":157,"sourceCode":"      }\n    }\n    return new Registry(sessions);\n  }\n}\n\nfunction computeBaseDaemonDir(): string {\n  if (process.env.PWTEST_DAEMON_SESSION_DIR)\n    return process.env.PWTEST_DAEMON_SESSION_DIR;\n\n  let localCacheDir: string | undefined;\n  if (process.platform === 'linux')\n    localCacheDir = process.env.XDG_CACHE_HOME || path.join(os.homedir(), '.cache');\n  if (process.platform === 'darwin')\n    localCacheDir = path.join(os.homedir(), 'Library', 'Caches');\n  if (process.platform === 'win32')\n    localCacheDir = process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local');\n  if (!localCacheDir)\n    throw new Error('Unsupported platform: ' + process.platform);\n  return path.join(localCacheDir, 'ms-playwright', 'daemon');\n}\n\nlet _baseDaemonDir: string | undefined;\n\nexport function baseDaemonDir(): string {\n  return _baseDaemonDir ??= computeBaseDaemonDir();\n}\n\nexport function createClientInfo(): ClientInfo {\n  const workspaceDir = findWorkspaceDir(process.cwd());\n  const version = process.env.PLAYWRIGHT_CLI_VERSION_FOR_TEST || packageJSON.version;\n\n  const hash = crypto.createHash('sha1');\n  hash.update(workspaceDir || packageRoot);\n  const workspaceDirHash = hash.digest('hex').substring(0, 16);\n\n  return {","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/playwright-core/src/tools/cli-client/registry.ts#L139-L175","documentation":"Thrown by computeBaseDaemonDir when process.platform is none of linux, darwin, or win32 (and PWTEST_DAEMON_SESSION_DIR is unset). The daemon directory cannot be derived for an unknown platform.","triggerScenarios":"Running the playwright CLI daemon on an unsupported OS (e.g. freebsd, aix, sunos) without an explicit override.","commonSituations":"Running inside unusual containers that report a non-standard platform; CI on an exotic OS; Node build that misreports process.platform.","solutions":["Set the PWTEST_DAEMON_SESSION_DIR environment variable to an absolute directory to bypass platform detection (note: the env name suggests test usage but it is the only override hook).","Run on a supported platform (linux/darwin/win32).","Confirm process.platform via a tiny node -e check if the failure is unexpected."],"exampleFix":"# before\nplaywright-cli open   # on freebsd -> throws\n\n# after\nexport PWTEST_DAEMON_SESSION_DIR=/var/cache/playwright-daemon\nplaywright-cli open","handlingStrategy":"validation","validationCode":"import os from 'os';\nconst SUPPORTED = new Set(['linux', 'darwin', 'win32']);\nfunction ensurePlatformSupported() {\n  if (!SUPPORTED.has(process.platform) && !process.env.PWTEST_DAEMON_SESSION_DIR) {\n    throw new Error(`Set PWTEST_DAEMON_SESSION_DIR on platform ${process.platform}`);\n  }\n}","typeGuard":"function isSupportedPlatform(): boolean {\n  return ['linux', 'darwin', 'win32'].includes(process.platform);\n}","tryCatchPattern":"// Compute the dir with an env override as a fallback instead of catching.\nprocess.env.PWTEST_DAEMON_SESSION_DIR ??= '/var/cache/playwright-daemon';","preventionTips":["On non-mainstream platforms, always set PWTEST_DAEMON_SESSION_DIR before invoking the CLI.","Document the platform requirement in deployment guides."],"tags":["platform","environment","daemon","config"],"backgroundTag":null,"analyzedSha":"c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6","analyzedAt":"2026-08-12T07:26:36.950Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}