diff --git a/packages/playwright-core/src/server/fetch.ts b/packages/playwright-core/src/server/fetch.ts index 0fcf72eaf8..9d3eae30a5 100644 --- a/packages/playwright-core/src/server/fetch.ts +++ b/packages/playwright-core/src/server/fetch.ts @@ -176,11 +176,7 @@ export abstract class APIRequestContext extends SdkObject { requestUrl.searchParams.set(name, value); } - let postData: Buffer | undefined; - if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(method)) - postData = serializePostData(params, headers); - else if (params.postData || params.jsonData || params.formData || params.multipartData) - throw new Error(`Method ${method} does not accept post data`); + const postData = serializePostData(params, headers); if (postData) headers['content-length'] = String(postData.byteLength); const controller = new ProgressController(metadata, this); diff --git a/tests/library/browsercontext-fetch.spec.ts b/tests/library/browsercontext-fetch.spec.ts index 29630eabb7..55d3a64a64 100644 --- a/tests/library/browsercontext-fetch.spec.ts +++ b/tests/library/browsercontext-fetch.spec.ts @@ -409,7 +409,7 @@ it('should return error with wrong credentials', async ({ context, server }) => expect(response2.status()).toBe(401); }); -for (const method of ['delete', 'patch', 'post', 'put']) { +for (const method of ['delete', 'get', 'head', 'patch', 'post', 'put']) { it(`${method} should support post data`, async ({ context, server }) => { const [request, response] = await Promise.all([ server.waitForRequest('/simple.json'), @@ -876,16 +876,6 @@ it('should throw nice error on unsupported data type', async function({ context, expect(error.message).toContain(`Unexpected 'data' type`); }); -it('should throw when data passed for unsupported request', async function({ context, server }) { - const error = await context.request.fetch(server.EMPTY_PAGE, { - method: 'GET', - data: { - foo: 'bar' - } - }).catch(e => e); - expect(error.message).toContain(`Method GET does not accept post data`); -}); - it('context request should export same storage state as context', async ({ context, page, server }) => { server.setRoute('/setcookie.html', (req, res) => { res.setHeader('Set-Cookie', ['a=b', 'c=d']);