feat(mcp): surface non-2xx navigation status#41589
Merged
Merged
Conversation
Add a `Page status` line to the browser_navigate page header, shown only when the main document response is non-2xx. Mirrors the existing `Page status: crashed` line and clears once a 2xx navigation lands.
This comment has been minimized.
This comment has been minimized.
dgozman
approved these changes
Jul 2, 2026
Rename the navigation status line to `HTTP status:` and only record the final landing response, so an intermediate redirect (e.g. 302) never shows.
Contributor
Test results for "MCP"7474 passed, 1132 skipped Merge workflow run. |
Member
Author
|
Not following up with another PR, so noting it here: the payment side needs no new tooling, async (page) => {
await page.route(lockedUrl, route =>
route.continue({ headers: { ...route.request().headers(), 'X-PAYMENT': signature } }),
{ times: 1 });
await page.goto(lockedUrl);
} |
This was referenced Jul 9, 2026
yury-s
added a commit
to microsoft/playwright-mcp
that referenced
this pull request
Jul 9, 2026
## What's New ### New Tools - **`browser_find`** — Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref ([#41605](microsoft/playwright#41605), [#41654](microsoft/playwright#41654)) ### Tool Improvements - **Less verbose snapshots** — Accessibility snapshots are distilled to reduce noise and token usage ([#41604](microsoft/playwright#41604)) - **Mobile & device emulation** — New `--mobile` flag and `--device` option to emulate mobile devices from the CLI ([#41657](microsoft/playwright#41657)) - **Navigation status** — `browser_navigate` now surfaces non-2xx navigation status codes ([#41589](microsoft/playwright#41589)) ## Bug Fixes - Enable the chromium sandbox for the default browser ([#41652](microsoft/playwright#41652)) - Close the isolated HTTP client context on disconnect ([#41560](microsoft/playwright#41560)) - Wait for the client event stream before sending server→client requests ([#41559](microsoft/playwright#41559))
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
browser_navigatereports URL, title and a console-error count, but not the HTTP status. So a page that comes back 4xx/5xx looks like a successful navigation - the only hint is the error count, which is noisy (a favicon 404 bumps it just the same) and means the agent has to go readbrowser_console_messagesor enumeratebrowser_network_requeststo find out what actually happened.This adds a
Page statusline to the page header, but only when the main document is non-2xx:A normal 200 shows nothing extra, so the common case stays quiet. It mirrors the existing
Page status: crashedline, and the status is captured from the main-frame navigation response, so it also covers reload and back/forward and clears again once you land on a 2xx.Nothing new is exposed here - the status was always reachable via the console text or the network list. It's a discoverability fix: promote "the document came back non-2xx" to a first-class fact on the result an agent already reads, instead of something it has to go digging for.
This came out of looking at how HTTP 402 paywalls surface to a browser agent. One related gap I hit but left out of here:
browser_routecan't scope a route to a single request (notimes/once), which matters when you want to attach a one-shot header to exactly the next navigation. That's a separate, generic change - I'll do it in its own PR.