From 3b800344b0aeea0c0762edf47e837f11e94510c4 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Wed, 1 Mar 2023 17:18:58 -0800 Subject: [PATCH] fix(oopif): get response body from adopting frame (#21324) Fixes https://github.com/microsoft/playwright/issues/20809 --- .../src/server/chromium/crNetworkManager.ts | 16 +++++++++++----- tests/library/chromium/oopif.spec.ts | 9 +++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/playwright-core/src/server/chromium/crNetworkManager.ts b/packages/playwright-core/src/server/chromium/crNetworkManager.ts index 35069d958d..c7ce7d4b50 100644 --- a/packages/playwright-core/src/server/chromium/crNetworkManager.ts +++ b/packages/playwright-core/src/server/chromium/crNetworkManager.ts @@ -259,6 +259,7 @@ export class CRNetworkManager { const isNavigationRequest = requestWillBeSentEvent.requestId === requestWillBeSentEvent.loaderId && requestWillBeSentEvent.type === 'Document'; const documentId = isNavigationRequest ? requestWillBeSentEvent.loaderId : undefined; const request = new InterceptableRequest({ + owningNetworkManager: this, context: (this._page || this._serviceWorker)!._browserContext, frame: frame || null, serviceWorker: this._serviceWorker || null, @@ -284,18 +285,19 @@ export class CRNetworkManager { const contentLengthHeader = Object.entries(responsePayload.headers).find(header => header[0].toLowerCase() === 'content-length'); const expectedLength = contentLengthHeader ? +contentLengthHeader[1] : undefined; - const response = await this._client.send('Network.getResponseBody', { requestId: request._requestId }); + const client = request._owningNetworkManager._client; + const response = await client.send('Network.getResponseBody', { requestId: request._requestId }); if (response.body || !expectedLength) return Buffer.from(response.body, response.base64Encoded ? 'base64' : 'utf8'); // For (window as any).myFunc())).toBe(2022); }); +it('should intercept response body from oopif', async function({ page, browser, server }) { + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20809' }); + const [response] = await Promise.all([ + page.waitForResponse('**/grid.html'), + page.goto(server.PREFIX + '/dynamic-oopif.html') + ]); + expect(await response.text()).toBeTruthy(); +}); + async function countOOPIFs(browser) { const browserSession = await browser.newBrowserCDPSession(); const oopifs = [];