Version
1.59.1
Steps to reproduce
git clone https://github.com/himkumar-ms/playwright-webkit-proxy-407-repro.git
cd playwright-webkit-proxy-407-repro
npm install
npm run install-browsers
npm run repro
The repro starts a minimal authenticated HTTP CONNECT proxy that sends 407 Proxy Authentication Required and closes the socket (standard behavior for many proxy implementations). It then tests page.goto('https://example.com') through the proxy with Chromium and WebKit.
Expected behavior
Both browsers reconnect with Proxy-Authorization credentials on a new TCP connection and navigate successfully, the same way WebKit on Linux does.
Actual behavior
Chromium succeeds. WebKit on Windows hangs until timeout.
[PROXY] CONNECT 407 -> example.com:443 (socket destroyed)
[PROXY] CONNECT 200 -> example.com:443 (auth valid, tunneling)
[Chromium] RESULT: ✅ SUCCESS in 124ms — title: "Example Domain"
[PROXY] CONNECT 407 -> example.com:443 (socket destroyed)
[PROXY] CONNECT 407 -> example.com:443 (socket destroyed)
[WebKit] RESULT: ❌ FAILED after 15006ms — page.goto: Timeout 15000ms exceeded.
Proxy logs show WebKit reconnects but sends CONNECT without Authorization, gets 407 again, and hangs.
WebKit on Linux works because it handles the closed socket by reconnecting with credentials. WebKit on Windows does not.
Additional context
No response
Environment
System:
OS: Windows 11 10.0.26200
CPU: (16) x64 AMD Ryzen 7 PRO 7840U w/ Radeon 780M Graphics
Memory: 4.69 GB / 23.67 GB
Binaries:
Node: 20.18.0 - C:\Program Files\nodejs\node.EXE
npm: 11.6.2 - C:\Program Files\nodejs\npm.CMD
npmPackages:
playwright: ^1.59.1 => 1.59.1
Version
1.59.1
Steps to reproduce
The repro starts a minimal authenticated HTTP CONNECT proxy that sends 407 Proxy Authentication Required and closes the socket (standard behavior for many proxy implementations). It then tests page.goto('https://example.com') through the proxy with Chromium and WebKit.
Expected behavior
Both browsers reconnect with Proxy-Authorization credentials on a new TCP connection and navigate successfully, the same way WebKit on Linux does.
Actual behavior
Chromium succeeds. WebKit on Windows hangs until timeout.
Proxy logs show WebKit reconnects but sends CONNECT without Authorization, gets 407 again, and hangs.
WebKit on Linux works because it handles the closed socket by reconnecting with credentials. WebKit on Windows does not.
Additional context
No response
Environment