From 584140f97aeb2ddaf5196a1b79bab471b5b74c79 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Thu, 14 Apr 2022 12:53:49 +0200 Subject: [PATCH] fix: make fetch api work with connectOverCDP (#13521) --- packages/playwright-core/src/server/fetch.ts | 2 +- tests/library/browsercontext-fetch.spec.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/server/fetch.ts b/packages/playwright-core/src/server/fetch.ts index 7514b53e40..285c8d114d 100644 --- a/packages/playwright-core/src/server/fetch.ts +++ b/packages/playwright-core/src/server/fetch.ts @@ -141,7 +141,7 @@ export abstract class APIRequestContext extends SdkObject { const method = params.method?.toUpperCase() || 'GET'; const proxy = defaults.proxy; let agent; - if (proxy) { + if (proxy && proxy.server !== 'per-context') { // TODO: support bypass proxy const proxyOpts = url.parse(proxy.server); if (proxyOpts.protocol?.startsWith('socks')) { diff --git a/tests/library/browsercontext-fetch.spec.ts b/tests/library/browsercontext-fetch.spec.ts index dabd15328d..0221260ac3 100644 --- a/tests/library/browsercontext-fetch.spec.ts +++ b/tests/library/browsercontext-fetch.spec.ts @@ -955,3 +955,21 @@ it('should abort requests when browser context closes', async ({ contextFactory, expect(error.message).toContain('Request context disposed'); await connectionClosed; }); + +it('should work with connectOverCDP', async ({ browserName, browserType, server }, testInfo) => { + it.skip(browserName !== 'chromium'); + const port = 9339 + testInfo.workerIndex; + const browserServer = await browserType.launch({ + args: ['--remote-debugging-port=' + port] + }); + try { + const cdpBrowser = await browserType.connectOverCDP(`http://localhost:${port}/`); + const [context] = cdpBrowser.contexts(); + const response = await context.request.get(server.PREFIX + '/simple.json'); + expect(response.url()).toBe(server.PREFIX + '/simple.json'); + expect(response.status()).toBe(200); + expect(await response.text()).toBe('{"foo": "bar"}\n'); + } finally { + await browserServer.close(); + } +});