{"record":{"id":"b71a82370c4ef520","repo":"microsoft/playwright","slug":"webview-has-been-closed","errorCode":null,"errorMessage":"WebView has been closed","messagePattern":"WebView has been closed","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/playwright-core/src/server/android/android.ts","lineNumber":331,"sourceCode":"    const chromeArguments = [];\n    if (proxy) {\n      chromeArguments.push(`--proxy-server=${proxy.server}`);\n      const proxyBypassRules = [];\n      if (proxy.bypass)\n        proxyBypassRules.push(...proxy.bypass.split(',').map(t => t.trim()).map(t => t.startsWith('.') ? '*' + t : t));\n      if (shouldProxyLoopback(proxy.bypass))\n        proxyBypassRules.push('<-loopback>');\n      if (proxyBypassRules.length > 0)\n        chromeArguments.push(`--proxy-bypass-list=${proxyBypassRules.join(';')}`);\n    }\n    chromeArguments.push(...args);\n    return chromeArguments;\n  }\n\n  async connectToWebView(progress: Progress, socketName: string): Promise<BrowserContext> {\n    const webView = this._webViews.get(socketName);\n    if (!webView)\n      throw new Error('WebView has been closed');\n    return await this._connectToBrowser(progress, socketName);\n  }\n\n  private async _connectToBrowser(progress: Progress, socketName: string, options: types.BrowserContextOptions = {}): Promise<BrowserContext> {\n    const socket = await this._waitForLocalAbstract(progress, socketName);\n    try {\n      const androidBrowser = new AndroidBrowser(this, socket);\n      await progress.race(androidBrowser._init());\n      this._browserConnections.add(androidBrowser);\n\n      const artifactsDir = await progress.race(fs.promises.mkdtemp(ARTIFACTS_FOLDER));\n      const cleanupArtifactsDir = async () => {\n        const errors = (await removeFolders([artifactsDir])).filter(Boolean);\n        for (let i = 0; i < (errors || []).length; ++i)\n          debug('pw:android')(`exception while removing ${artifactsDir}: ${errors[i]}`);\n      };\n      gracefullyCloseSet.add(cleanupArtifactsDir);\n      socket.on('close', async () => {","sourceCodeStart":313,"sourceCodeEnd":349,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/playwright-core/src/server/android/android.ts#L313-L349","documentation":"Error \"WebView has been closed\" thrown in microsoft/playwright.","triggerScenarios":"Thrown at packages/playwright-core/src/server/android/android.ts:331 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"}