diff --git a/packages/playwright-core/src/server/chromium/crNetworkManager.ts b/packages/playwright-core/src/server/chromium/crNetworkManager.ts index 6411457a32..3752a5c06f 100644 --- a/packages/playwright-core/src/server/chromium/crNetworkManager.ts +++ b/packages/playwright-core/src/server/chromium/crNetworkManager.ts @@ -376,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 hello, world!`); }); + +it('should not go to the network for fulfilled requests body', { + annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/30760' }, +}, async ({ page, server, browserName }) => { + await page.route('**/one-style.css', async route => { + return route.fulfill({ + status: 404, + contentType: 'text/plain', + body: 'Not Found! (mocked)', + }); + }); + + let serverHit = false; + server.setRoute('/one-style.css', (req, res) => { + serverHit = true; + res.setHeader('Content-Type', 'text/css'); + res.end('body { background-color: green; }'); + }); + + const responsePromise = page.waitForResponse('**/one-style.css'); + await page.goto(server.PREFIX + '/one-style.html'); + const response = await responsePromise; + const body = await response.body(); + expect(body).toBeTruthy(); + expect(serverHit).toBe(false); +}); +