Version
1.60.0-next (reproducible since 1.57.0)
Steps to reproduce
- Launch Chromium with proxy credentials:
const browser = await chromium.launch({
proxy: { server: 'http://myproxy:8080', username: 'user', password: 'secret' }
});
- Create a page without registering any page.route() or context.route()
- Navigate to a URL that returns a 302/303 redirect (e.g. Google search, any OAuth flow)
const page = await browser.newPage();
await page.goto('http://example.com/page-that-redirects'); // hangs forever
Expected behavior
The redirect is followed and the page loads normally, as it does in Playwright 1.56.0.
Actual behavior
page.goto hangs indefinitely. The redirect's Fetch.requestPaused event is stored in _requestIdToRequestPausedEvent waiting for a Network.requestWillBeSent that never arrives.
Adding a no-op page.route('**/*', route => route.continue()) makes it work, because a RouteImpl is created.
Additional context
Environment
System:
OS: macOS 26.3.1
CPU: (14) arm64 Apple M4 Max
Memory: 7.96 GB / 36.00 GB
Binaries:
Node: 25.9.0 - /opt/homebrew/bin/node
Yarn: 1.22.22 - /opt/homebrew/bin/yarn
npm: 11.12.1 - /opt/homebrew/bin/npm
bun: 1.3.5 - /Users/andy/.bun/bin/bun
Languages:
Bash: 3.2.57 - /bin/bash
Version
1.60.0-next (reproducible since 1.57.0)
Steps to reproduce
Expected behavior
The redirect is followed and the page loads normally, as it does in Playwright 1.56.0.
Actual behavior
page.gotohangs indefinitely. The redirect'sFetch.requestPausedevent is stored in_requestIdToRequestPausedEventwaiting for aNetwork.requestWillBeSentthat never arrives.Adding a no-op
page.route('**/*', route => route.continue())makes it work, because aRouteImplis created.Additional context
Environment
System: OS: macOS 26.3.1 CPU: (14) arm64 Apple M4 Max Memory: 7.96 GB / 36.00 GB Binaries: Node: 25.9.0 - /opt/homebrew/bin/node Yarn: 1.22.22 - /opt/homebrew/bin/yarn npm: 11.12.1 - /opt/homebrew/bin/npm bun: 1.3.5 - /Users/andy/.bun/bin/bun Languages: Bash: 3.2.57 - /bin/bash