{"record":{"id":"ddf71ea6732790aa","repo":"microsoft/playwright","slug":"connecting-to-workers-is-only-supported-in-chromiu","errorCode":null,"errorMessage":"Connecting to workers is only supported in Chromium.","messagePattern":"Connecting to workers is only supported in Chromium\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/playwright-core/src/client/browserType.ts","lineNumber":186,"sourceCode":"      slowMo: params.slowMo,\n      isLocal: params.isLocal,\n      noDefaults: params.noDefaults,\n      artifactsDir: params.artifactsDir,\n    }, new TimeoutSettings().timeout(params));\n    return await this._browserFromConnectResult(result);\n  }\n\n  private async _browserFromConnectResult(result: { browser: channels.BrowserChannel, defaultContext?: channels.BrowserContextChannel }): Promise<Browser> {\n    const browser = Browser.from(result.browser);\n    browser._connectToBrowserType(this, {}, undefined);\n    if (result.defaultContext)\n      await this._instrumentation.runAfterCreateBrowserContext(BrowserContext.from(result.defaultContext));\n    return browser;\n  }\n\n  async _connectToWorker(endpoint: string, options: { timeout?: number } = {}): Promise<Worker>  {\n    if (this.name() !== 'chromium')\n      throw new Error('Connecting to workers is only supported in Chromium.');\n    const result = await this._channel.connectToWorker({\n      endpoint,\n    }, new TimeoutSettings().timeout(options));\n    return Worker.from(result.worker);\n  }\n}\n\nfunction isConnectionTransport(value: any): value is api.ConnectOverCDPTransport {\n  return !!value && typeof value === 'object' && typeof value.send === 'function' && typeof value.close === 'function';\n}\n","sourceCodeStart":168,"sourceCodeEnd":197,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/playwright-core/src/client/browserType.ts#L168-L197","documentation":"Thrown by BrowserType._connectToWorker() when the BrowserType name is not chromium. Worker (service worker / web worker) target attachment via CDP is a Chromium-only feature, so firefox/webkit are rejected up front.","triggerScenarios":"Calling the internal `_connectToWorker(endpoint)` on firefox or webkit. This is an internal method exercised by tooling/CDP integrations that attach to worker targets.","commonSituations":"Custom tooling that abstracts over all BrowserTypes and tries worker attachment uniformly; experimental integrations ported from chromium to other engines.","solutions":["Restrict worker attachment to chromium.","For non-chromium engines, attach at page level only (no worker targets).","Branch on browserType.name() === 'chromium' before calling _connectToWorker."],"exampleFix":"// before\nawait browserType._connectToWorker(endpoint);\n// after\nif (browserType.name() === 'chromium')\n  await browserType._connectToWorker(endpoint);","handlingStrategy":"type-guard","validationCode":"if (browserType.name() !== 'chromium')\n  throw new Error('Worker attachment is chromium-only.');","typeGuard":"function supportsWorkerConnect(bt: any): boolean {\n  return bt?.name?.() === 'chromium';\n}","tryCatchPattern":null,"preventionTips":["Branch worker-target tooling on browser name.","Treat _connectToWorker as chromium-only even though the method exists on all BrowserTypes."],"tags":["worker","cdp","browser-support","internal"],"backgroundTag":null,"analyzedSha":"c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6","analyzedAt":"2026-08-12T07:26:36.950Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}