From 0bab5c60c4e9c96c5e1931074ed5e145a3bd0d85 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 2 Aug 2022 13:55:52 -0700 Subject: [PATCH] test: content-length is recomputed for postBody override (#16169) --- tests/page/page-request-continue.spec.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/page/page-request-continue.spec.ts b/tests/page/page-request-continue.spec.ts index bc31743d4c..8300959718 100644 --- a/tests/page/page-request-continue.spec.ts +++ b/tests/page/page-request-continue.spec.ts @@ -173,6 +173,25 @@ it.describe('post data', () => { expect((await serverRequest.postBody).toString('utf8')).toBe('doggo'); }); + it('should compute content-length from post data', async ({ page, server, browserName }) => { + it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/16027' }); + it.fixme(browserName === 'firefox'); + await page.goto(server.EMPTY_PAGE); + const data = 'a'.repeat(7500); + await page.route('**/*', route => { + const headers = route.request().headers(); + headers['content-type'] = 'application/json'; + route.continue({ postData: data, headers }); + }); + const [serverRequest] = await Promise.all([ + server.waitForRequest('/sleep.zzz'), + page.evaluate(() => fetch('/sleep.zzz', { method: 'PATCH', body: 'birdy' })) + ]); + expect((await serverRequest.postBody).toString('utf8')).toBe(data); + expect(serverRequest.headers['content-length']).toBe(String(data.length)); + expect(serverRequest.headers['content-type']).toBe('application/json'); + }); + it('should amend method and post data', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); await page.route('**/*', route => {