diff --git a/packages/playwright-core/src/client/fetch.ts b/packages/playwright-core/src/client/fetch.ts index 3bfeead355..307b92f3c3 100644 --- a/packages/playwright-core/src/client/fetch.ts +++ b/packages/playwright-core/src/client/fetch.ts @@ -168,13 +168,13 @@ export class APIRequestContext extends ChannelOwner { expect(serverRequest.rawHeaders).toContain('vaLUE'); await request.dispose(); }); + +it('should serialize post data on the client', async ({ playwright, server }) => { + const request = await playwright.request.newContext(); + const serverReq = server.waitForRequest('/empty.html'); + let onStack: boolean = true; + const postReq = request.post(server.EMPTY_PAGE, { + data: { + toJSON() { + if (!onStack) + throw new Error('Should not be called on the server'); + return { 'foo': 'bar' }; + } + } + }); + onStack = false; + await postReq; + const body = await (await serverReq).postBody; + expect(body.toString()).toBe('{"foo":"bar"}'); + // expect(serverRequest.rawHeaders).toContain('vaLUE'); + await request.dispose(); +});