{"record":{"id":"41d257381d557d8f","repo":"microsoft/playwright","slug":"navigating-subframes-is-not-supported-on-stock-web","errorCode":null,"errorMessage":"Navigating subframes is not supported on stock WebKit RDP — only the main frame can be navigated.","messagePattern":"Navigating subframes is not supported on stock WebKit RDP — only the main frame can be navigated\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/playwright-core/src/server/webkit/webview/wvPage.ts","lineNumber":493,"sourceCode":"  }\n\n  private _onExecutionContextCreated(contextPayload: Protocol.Runtime.ExecutionContextDescription) {\n    if (this._contextIdToContext.has(contextPayload.id))\n      return;\n    const frame = this._page.frameManager.frame(contextPayload.frameId);\n    if (!frame)\n      return;\n    if (contextPayload.type !== 'normal')\n      return;\n    const delegate = new WVExecutionContext(this._session, contextPayload.id);\n    const context = new dom.FrameExecutionContext(delegate, frame, 'main');\n    frame.contextCreated('main', context);\n    this._contextIdToContext.set(contextPayload.id, context);\n  }\n\n  async navigateFrame(frame: frames.Frame, url: string, referrer: string | undefined): Promise<frames.GotoResult> {\n    if (frame.parentFrame())\n      throw new Error('Navigating subframes is not supported on stock WebKit RDP — only the main frame can be navigated.');\n\n    if (url.startsWith('data:'))\n      return await this._navigateToDataUrl(frame, url);\n    return await this._navigateMainFrame(frame, url);\n  }\n\n  private async _navigateMainFrame(frame: frames.Frame, url: string): Promise<frames.GotoResult> {\n    const loaderIdPromise = new Promise<string>(resolve => {\n      this._pendingMainFrameLoaderResolvers.set(frame._id, resolve);\n    });\n    try {\n      this._session.sendMayFail('Runtime.evaluate', {\n        expression: `window.location.href = ${JSON.stringify(url)}`,\n        returnByValue: true,\n      } as any);\n      const loaderId = await loaderIdPromise;\n      return { newDocumentId: loaderId };\n    } finally {","sourceCodeStart":475,"sourceCodeEnd":511,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/playwright-core/src/server/webkit/webview/wvPage.ts#L475-L511","documentation":"Error \"Navigating subframes is not supported on stock WebKit RDP — only the main frame can be navigated.\" thrown in microsoft/playwright.","triggerScenarios":"Thrown at packages/playwright-core/src/server/webkit/webview/wvPage.ts:493 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6","analyzedAt":"2026-08-12T07:26:36.950Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}