{"record":{"id":"969e7c48b76b55aa","repo":"vitest-dev/vitest","slug":"browser-provider-is-not-defined-for-the-project-969e7c","errorCode":null,"errorMessage":"Browser provider is not defined for the project \"${browserSession.project.name}\".","messagePattern":"Browser provider is not defined for the project \"(.+?)\"\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/browser/src/node/projectParent.ts","lineNumber":205,"sourceCode":"  }\n\n  public readonly cdps: Map<string, BrowserServerCDPHandler> = new Map()\n  private cdpSessionsPromises = new Map<string, Promise<CDPSession>>()\n\n  async ensureCDPHandler(sessionId: string, rpcId: string): Promise<BrowserServerCDPHandler> {\n    const cachedHandler = this.cdps.get(rpcId)\n    if (cachedHandler) {\n      return cachedHandler\n    }\n    const browserSession = this.vitest._browserSessions.getSession(sessionId)\n    if (!browserSession) {\n      throw new Error(`Session \"${sessionId}\" not found.`)\n    }\n\n    const browser = browserSession.project.browser!\n    const provider = browser.provider\n    if (!provider) {\n      throw new Error(`Browser provider is not defined for the project \"${browserSession.project.name}\".`)\n    }\n    if (!provider.getCDPSession) {\n      throw new Error(`CDP is not supported by the provider \"${provider.name}\".`)\n    }\n\n    const session = await this.cdpSessionsPromises.get(rpcId) ?? await (async () => {\n      const promise = provider.getCDPSession!(sessionId).finally(() => {\n        this.cdpSessionsPromises.delete(rpcId)\n      })\n      this.cdpSessionsPromises.set(rpcId, promise)\n      return promise\n    })()\n\n    const rpc = (browser.state as BrowserServerState).testers.get(rpcId)\n    if (!rpc) {\n      throw new Error(`Tester RPC \"${rpcId}\" was not established.`)\n    }\n","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/vitest-dev/vitest/blob/1fa9837ec26533512fdcad8baebf249771bd340a/packages/browser/src/node/projectParent.ts#L187-L223","documentation":"Inside ensureCDPHandler, after the session is found, the code reads browserSession.project.browser!.provider. If the project's browser instance exists but its provider has not been initialized (provider is undefined), CDP cannot be obtained. Unlike error 62 (which is about config), this is about the runtime provider instance being absent.","triggerScenarios":"Requesting a CDP session before initBrowserProvider has run for the project; a project whose browser failed to initialize its provider silently; referencing a project that is not actually a browser project.","commonSituations":"Calling CDP APIs very early in the lifecycle; a provider initialization failure that left provider undefined without throwing; mixing browser and non-browser projects and requesting CDP on the wrong one.","solutions":["Ensure the target project is configured as a browser project (browser. instance set) and the provider initialized before issuing CDP requests.","Await the browser provider initialization lifecycle (e.g. wait for the first page open) before calling CDP.","Confirm the provider name is valid and the provider package is installed so initBrowserProvider succeeds."],"exampleFix":"// before\nawait parent.ensureCDPHandler(sessionId, rpcId) // provider not yet initialised\n// after\nawait project.browser!.initBrowserProvider(project)\nawait parent.ensureCDPHandler(sessionId, rpcId)","handlingStrategy":"validation","validationCode":"function providerInitialized(browser?: { provider?: unknown }): boolean {\n  return !!browser?.provider\n}","typeGuard":"function hasProvider(browser: unknown): browser is { provider: { name: string; getCDPSession?: Function } } {\n  return !!browser && typeof browser === 'object' && !!(browser as any).provider\n}","tryCatchPattern":null,"preventionTips":["Wait for the browser provider initialization lifecycle to complete before CDP calls.","Confirm the target project is a browser project.","Handle provider init failures loudly so silent undefined state is impossible."],"tags":["cdp","browser-provider","lifecycle","browser"],"backgroundTag":null,"analyzedSha":"1fa9837ec26533512fdcad8baebf249771bd340a","analyzedAt":"2026-08-11T16:11:39.638Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}