From a1c93d3186aaba59b782b072cda8a732fbde07ed Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 21 May 2024 12:06:27 -0700 Subject: [PATCH] Do not store body --- .../src/server/chromium/crNetworkManager.ts | 12 ++++++------ tests/page/page-request-fulfill.spec.ts | 6 ++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/playwright-core/src/server/chromium/crNetworkManager.ts b/packages/playwright-core/src/server/chromium/crNetworkManager.ts index 93981d717e..3752a5c06f 100644 --- a/packages/playwright-core/src/server/chromium/crNetworkManager.ts +++ b/packages/playwright-core/src/server/chromium/crNetworkManager.ts @@ -368,10 +368,6 @@ export class CRNetworkManager { _createResponse(request: InterceptableRequest, responsePayload: Protocol.Network.Response, hasExtraInfo: boolean): network.Response { const getResponseBody = async () => { - const fulfilledBody = request._route?._fulfilledBody; - if (fulfilledBody) - return fulfilledBody; - const contentLengthHeader = Object.entries(responsePayload.headers).find(header => header[0].toLowerCase() === 'content-length'); const expectedLength = contentLengthHeader ? +contentLengthHeader[1] : undefined; @@ -380,6 +376,10 @@ export class CRNetworkManager { if (response.body || !expectedLength) return Buffer.from(response.body, response.base64Encoded ? 'base64' : 'utf8'); + // Make sure no network requests sent while reading the body for fulfilled requests. + if (request._route?._fulfilled) + return Buffer.from(''); + // For { diff --git a/tests/page/page-request-fulfill.spec.ts b/tests/page/page-request-fulfill.spec.ts index 047ea2b800..7b78c07625 100644 --- a/tests/page/page-request-fulfill.spec.ts +++ b/tests/page/page-request-fulfill.spec.ts @@ -479,10 +479,8 @@ it('should not go to the network for fulfilled requests body', { const responsePromise = page.waitForResponse('**/one-style.css'); await page.goto(server.PREFIX + '/one-style.html'); const response = await responsePromise; - const body = await response.text(); - // In webkit the response body is not available. - if (browserName !== 'webkit') - expect(body).toBe('Not Found! (mocked)'); + const body = await response.body(); + expect(body).toBeTruthy(); expect(serverHit).toBe(false); });