Repository navigation
fix(webmcp): handle Chromium tool API changes - #43578
Merged
Merged
Conversation
recent Chromium changes return `null` for missing schemas and change tool execution errors normalize missing schemas to `undefined` and keep the error assertion compatible with both Chromium versions <https://github.com/microsoft/playwright-browsers/actions/runs/39762286439>
Devin Rousso (dcrousso)
marked this pull request as ready for review
October 22, 2026 19:19
Contributor
Test results for "tests 1"1 flaky23555 passed, 701 skipped Merge workflow run. |
Contributor
Test results for "MCP"5189 passed, 614 skipped Merge workflow run. |
Dmitry Gozman (dgozman)
approved these changes
Oct 26, 2026
This was referenced Oct 29, 2026
Pavel Feldman (pavelfeldman)
pushed a commit
to microsoft/playwright-cli
that referenced
this pull request
Oct 31, 2026
## ✨ Highlights - **👥 Use different signed-in users in one session** — `playwright-cli tab-new https://example.com --isolated-context=user-b` opens a tab with separate cookies and storage. Tabs with the same context name share their login state; different names stay isolated. ([microsoft/playwright#43087](microsoft/playwright#43087)) - **🎬 Smaller video recordings with less encoding CPU** — `playwright-cli video-start demo.webm` now records with VP9, keeping the same WebM output format. Stop and save the recording with `playwright-cli video-stop`. ([microsoft/playwright#43021](microsoft/playwright#43021)) - **📋 Keep console messages and requests across navigations** ([#479](#479)) — `playwright-cli console --all` and `playwright-cli requests --all` include retained entries from earlier navigations, so warnings and failed requests are not lost when checking a multi-page flow. Request numbers stay stable for `playwright-cli request 5`. ([microsoft/playwright#43526](microsoft/playwright#43526)) - **🔎 Keep common searches from flooding the agent's context** ([microsoft/playwright#42077](microsoft/playwright#42077)) — `playwright-cli find button --max-results=5` returns at most five matching items and reports the total match count. ([microsoft/playwright#42947](microsoft/playwright#42947)) - **🍪 Delete one site's cookie without signing out of others** ([microsoft/playwright#43310](microsoft/playwright#43310)) — `playwright-cli cookie-delete session_id --domain=example.com --path=/` removes only the cookie matching that name, domain and path, leaving same-named cookies elsewhere intact. ([microsoft/playwright#43319](microsoft/playwright#43319)) - **🔒 Redact session tokens in URLs printed in responses** ([microsoft/playwright-mcp#1791](microsoft/playwright-mcp#1791)) — add `"redactUrlParams": ["access_token", "code"]` to `.playwright/cli.config.json` to replace those query and fragment parameter values with `<redacted>` in command responses. ([microsoft/playwright#43258](microsoft/playwright#43258)) ## 🐛 Fixes - `fix(cli): do not force-kill the browser on close` — `playwright-cli close` lets Chrome shut down normally, preventing temporary app-clone folders from accumulating on macOS. ([#475](#475), [microsoft/playwright#43229](microsoft/playwright#43229)) - `fix(cli): respect npm registry config in update check` — update checks honor npm's registry, scoped registry, proxy and authentication settings instead of contacting the public registry directly when a custom registry is configured. ([#478](#478), [#484](#484)) - `fix(cli): report run-code route handler exception once and verbatim` — asynchronous route callback errors return their original message without duplicated errors or an extra `Error:` prefix. ([#476](#476), [microsoft/playwright#43203](microsoft/playwright#43203)) - `fix(chromium): do not hang on pages without a renderer when connecting over CDP` — `attach --cdp` handles discarded or crashed tabs without wedging every command; a follow-up closes those tabs while preserving live ones. ([microsoft/playwright#41714](microsoft/playwright#41714), [microsoft/playwright#42936](microsoft/playwright#42936), [microsoft/playwright#43075](microsoft/playwright#43075)) - `fix(chromium): report local frames of existing oopifs when connecting over CDP` — attaching to an already-loaded page discovers nested frames correctly instead of replacing the main document with a sandboxed iframe. ([microsoft/playwright#42955](microsoft/playwright#42955), [microsoft/playwright#43000](microsoft/playwright#43000)) - `fix(mcp): report invalid element targets and accept locators in any language` — action targets accept JavaScript, Python, Java and C# locators. Invalid targets explain the accepted forms, including how to pass a bare snapshot ref. ([microsoft/playwright-mcp#1797](microsoft/playwright-mcp#1797), [microsoft/playwright#43539](microsoft/playwright#43539)) - `fix(mcp): normalize bare host URLs and loopback IP addresses` — `playwright-cli open 127.0.0.1:3000` uses HTTP, and bare external hosts with ports are normalized to HTTPS rather than mistaken for custom schemes. ([microsoft/playwright#43263](microsoft/playwright#43263), [microsoft/playwright#43264](microsoft/playwright#43264)) - `fix(mcp): race browser_navigate_back and forward against modal states` — `go-back` and `go-forward` surface navigation dialogs immediately so they can be handled, rather than hanging until timeout. ([microsoft/playwright#43251](microsoft/playwright#43251), [microsoft/playwright#43252](microsoft/playwright#43252)) - `fix(mcp): preserve origin filters when modifying request headers` — header-only `route` handlers no longer skip configured allowed/blocked-origin filters. ([microsoft/playwright#43630](microsoft/playwright#43630), [microsoft/playwright#43637](microsoft/playwright#43637)) - `fix(mcp): pass custom headers to route.fulfill when mocking response` — mocked `route` responses retain supplied headers, including CORS and cache headers. ([microsoft/playwright#43245](microsoft/playwright#43245), [microsoft/playwright#43244](microsoft/playwright#43244)) - `fix(mcp): match browser_route header names case-insensitively` — request-header replacement and removal work consistently regardless of header-name casing. ([microsoft/playwright#43215](microsoft/playwright#43215), [microsoft/playwright#43227](microsoft/playwright#43227)) - `fix(mcp): match cookie list domain filter on domain boundaries` — `cookie-list --domain=example.com` includes that domain and its subdomains, not unrelated names such as `my-example.com`; matching ignores case and a leading dot. ([microsoft/playwright#43308](microsoft/playwright#43308), [microsoft/playwright#43316](microsoft/playwright#43316)) - `fix(mcp): do not match sibling paths in cookie-list path filter` — `cookie-list --path=/api` includes `/api` and paths under `/api/`, not `/apikeys`. ([microsoft/playwright#43366](microsoft/playwright#43366), [microsoft/playwright#43368](microsoft/playwright#43368)) - `fix(mcp): ask for a cookie domain when the page has no host` — `cookie-set` on `about:blank` or a data URL asks for `--domain` instead of returning an internal assertion error. ([microsoft/playwright#43309](microsoft/playwright#43309), [microsoft/playwright#43318](microsoft/playwright#43318)) - `fix(mcp): pass credentials from --proxy-server as proxy username/password` — authenticated proxy URLs supplied through `PLAYWRIGHT_MCP_PROXY_SERVER` retain their credentials instead of failing proxy authentication. ([microsoft/playwright#43048](microsoft/playwright#43048), [microsoft/playwright#43071](microsoft/playwright#43071)) - `fix(mcp): accept Windows paths in browser_resume location` — `pause-at` accepts Windows source locations such as `C:\tests\example.spec.ts:42`. ([microsoft/playwright#43340](microsoft/playwright#43340), [microsoft/playwright#43349](microsoft/playwright#43349)) - `fix(video): hide ffmpeg console windows on Windows` — `video-start` no longer opens a terminal window that steals focus during background recording. ([microsoft/playwright#43515](microsoft/playwright#43515), [microsoft/playwright#43575](microsoft/playwright#43575)) - `feat(cli): keep sockets in XDG_RUNTIME_DIR` — Unix CLI sessions and the dashboard prefer `$XDG_RUNTIME_DIR/playwright` over the shared temporary directory when it is usable. ([microsoft/playwright#43698](microsoft/playwright#43698), [microsoft/playwright#43732](microsoft/playwright#43732)) - `fix(tracing): do not store secrets in trace context options` — trace metadata no longer copies credential-bearing context options such as HTTP credentials, proxy credentials, extra headers and storage-state cookies. ([microsoft/playwright#38673](microsoft/playwright#38673), [microsoft/playwright#43220](microsoft/playwright#43220)) - `fix(aria): preserve iframe snapshots with fallback text` — snapshots show a loaded iframe's content and element refs even when its HTML contains fallback text. ([microsoft/playwright#43628](microsoft/playwright#43628), [microsoft/playwright#43635](microsoft/playwright#43635)) - `fix(aria): quote ~, .inf and .nan in aria snapshots` — YAML-special text remains a string when snapshot output is parsed or reused. ([microsoft/playwright#43451](microsoft/playwright#43451), [microsoft/playwright#43469](microsoft/playwright#43469)) - `fix(a11y): treat inert elements and content outside of modal dialogs as hidden` — snapshots exclude controls that cannot currently be used, and click/fill actions wait for targets to stop being inert rather than silently misfiring. ([microsoft/playwright#36938](microsoft/playwright#36938), [microsoft/playwright#42967](microsoft/playwright#42967), [microsoft/playwright#43211](microsoft/playwright#43211)) - `fix(webmcp): handle Chromium tool API changes` — WebMCP tool discovery tolerates Chromium's null input schemas while preserving the existing tool shape. ([microsoft/playwright#43578](microsoft/playwright#43578)) ## 📦 Upgrading ```bash npm install -g @playwright/cli@0.1.23 ``` This release uses Playwright `1.65.0-alpha-2026-10-30`. Co-authored-by: microsoft-playwright-automation[bot] <203992400+microsoft-playwright-automation[bot]@users.noreply.github.com>
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.
normalize Chromium's
nullschemas to preserve the existing WebMCP tool shapealso accept both old and new Chromium tool execution error messages
See https://github.com/microsoft/playwright-browsers/pull/2618