From 649299950687d6e212ae47dae2e47b2d461bf611 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Fri, 27 Sep 2024 14:37:24 +0200 Subject: [PATCH] also add socks proxy --- packages/playwright-core/src/server/fetch.ts | 4 ++++ tests/library/har.spec.ts | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/playwright-core/src/server/fetch.ts b/packages/playwright-core/src/server/fetch.ts index c4e5f2198d..0c2f4945b9 100644 --- a/packages/playwright-core/src/server/fetch.ts +++ b/packages/playwright-core/src/server/fetch.ts @@ -508,6 +508,10 @@ export abstract class APIRequestContext extends SdkObject { } }); + // when using socks proxy, having the socket means the connection got established + if (agent instanceof SocksProxyAgent) + tcpConnectionAt ??= monotonicTime(); + serverIPAddress = socket.remoteAddress; serverPort = socket.remotePort; }); diff --git a/tests/library/har.spec.ts b/tests/library/har.spec.ts index 1d8dbf55a1..3a10347825 100644 --- a/tests/library/har.spec.ts +++ b/tests/library/har.spec.ts @@ -868,8 +868,7 @@ it('should include timings when using http proxy', async ({ contextFactory, serv expect(log.entries[0].timings.connect).toBeGreaterThan(0); }); -// socks proxy library doesnt emit an event to know when the TCP connection starts -it.fail('should include timings when using socks proxy', async ({ contextFactory, server, socksPort }, testInfo) => { +it('should include timings when using socks proxy', async ({ contextFactory, server, socksPort }, testInfo) => { const { page, getLog } = await pageWithHar(contextFactory, testInfo, { proxy: { server: `socks5://localhost:${socksPort}` } }); const response = await page.request.get(server.EMPTY_PAGE); await response.body();