✨ Highlights
- 👥 Use different signed-in users in one session —
playwright-cli tab-new https://example.com --isolated-context=user-bopens a tab with separate cookies and storage. Tabs with the same context name share their login state; different names stay isolated. (microsoft/playwright#43087) - 🎬 Smaller video recordings with less encoding CPU —
playwright-cli video-start demo.webmnow records with VP9, keeping the same WebM output format. Stop and save the recording withplaywright-cli video-stop. (microsoft/playwright#43021) - 📋 Keep console messages and requests across navigations (#479) —
playwright-cli console --allandplaywright-cli requests --allinclude retained entries from earlier navigations, so warnings and failed requests are not lost when checking a multi-page flow. Request numbers stay stable forplaywright-cli request 5. (microsoft/playwright#43526) - 🔎 Keep common searches from flooding the agent's context (microsoft/playwright#42077) —
playwright-cli find button --max-results=5returns at most five matching items and reports the total match count. (microsoft/playwright#42947) - 🍪 Delete one site's cookie without signing out of others (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) - 🔒 Redact session tokens in URLs printed in responses (microsoft/playwright-mcp#1791) — add
"redactUrlParams": ["access_token", "code"]to.playwright/cli.config.jsonto replace those query and fragment parameter values with<redacted>in command responses. (microsoft/playwright#43258)
🐛 Fixes
fix(cli): do not force-kill the browser on close—playwright-cli closelets Chrome shut down normally, preventing temporary app-clone folders from accumulating on macOS. (#475, 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, #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 extraError:prefix. (#476, microsoft/playwright#43203)fix(chromium): do not hang on pages without a renderer when connecting over CDP—attach --cdphandles discarded or crashed tabs without wedging every command; a follow-up closes those tabs while preserving live ones. (microsoft/playwright#41714, microsoft/playwright#42936, 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#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#43539)fix(mcp): normalize bare host URLs and loopback IP addresses—playwright-cli open 127.0.0.1:3000uses HTTP, and bare external hosts with ports are normalized to HTTPS rather than mistaken for custom schemes. (microsoft/playwright#43263, microsoft/playwright#43264)fix(mcp): race browser_navigate_back and forward against modal states—go-backandgo-forwardsurface navigation dialogs immediately so they can be handled, rather than hanging until timeout. (microsoft/playwright#43251, microsoft/playwright#43252)fix(mcp): preserve origin filters when modifying request headers— header-onlyroutehandlers no longer skip configured allowed/blocked-origin filters. (microsoft/playwright#43630, microsoft/playwright#43637)fix(mcp): pass custom headers to route.fulfill when mocking response— mockedrouteresponses retain supplied headers, including CORS and cache headers. (microsoft/playwright#43245, 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#43227)fix(mcp): match cookie list domain filter on domain boundaries—cookie-list --domain=example.comincludes that domain and its subdomains, not unrelated names such asmy-example.com; matching ignores case and a leading dot. (microsoft/playwright#43308, microsoft/playwright#43316)fix(mcp): do not match sibling paths in cookie-list path filter—cookie-list --path=/apiincludes/apiand paths under/api/, not/apikeys. (microsoft/playwright#43366, microsoft/playwright#43368)fix(mcp): ask for a cookie domain when the page has no host—cookie-setonabout:blankor a data URL asks for--domaininstead of returning an internal assertion error. (microsoft/playwright#43309, microsoft/playwright#43318)fix(mcp): pass credentials from --proxy-server as proxy username/password— authenticated proxy URLs supplied throughPLAYWRIGHT_MCP_PROXY_SERVERretain their credentials instead of failing proxy authentication. (microsoft/playwright#43048, microsoft/playwright#43071)fix(mcp): accept Windows paths in browser_resume location—pause-ataccepts Windows source locations such asC:\tests\example.spec.ts:42. (microsoft/playwright#43340, microsoft/playwright#43349)fix(video): hide ffmpeg console windows on Windows—video-startno longer opens a terminal window that steals focus during background recording. (microsoft/playwright#43515, microsoft/playwright#43575)feat(cli): keep sockets in XDG_RUNTIME_DIR— Unix CLI sessions and the dashboard prefer$XDG_RUNTIME_DIR/playwrightover the shared temporary directory when it is usable. (microsoft/playwright#43698, 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#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#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#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#42967, 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)
📦 Upgrading
npm install -g @playwright/cli@0.1.23This release uses Playwright 1.65.0-alpha-2026-10-30.