Repository navigation
Releases
Releases · microsoft/playwright-cli
v0.1.24
✨ Highlights
- 🪟 Let agents use your logged-in browser without taking over your screen (microsoft/playwright#42973) —
PLAYWRIGHT_MCP_BACKGROUND=1 playwright-cli attach --extension=chromekeeps controlled tabs and the browser window in the background. You can also set"background": truein your CLI config. (microsoft/playwright#43864) - 🎬 Record the whole viewport in headless Chrome and Edge —
playwright-cli video-startno longer loses the bottom of the page to browser-toolbar sizing in the new headless mode. Trace screenshots benefit too. (microsoft/playwright#43904) - 🧭 Snapshots keep the names agents need (microsoft/playwright#43809) —
playwright-cli snapshotpreserves identifying names on dialogs, landmarks, tables and column headers, even when their heading or caption also appears below them. (microsoft/playwright#43810) - 👁️ Ignore hidden duplicate elements by default (microsoft/playwright#43855) — set
"browser": { "contextOptions": { "locateOnlyVisible": true } }in your CLI config, then runplaywright-cli open --config=cli.config.json. Locators resolve only visible matches, avoiding strict-mode failures from hidden, cached UI. This is opt-in. (microsoft/playwright#43903) - 🗂️ Keep your tab strip free of agent-created groups (microsoft/playwright#43038) — set
"tabGroup": falsein your CLI config and useplaywright-cli attach --extension=chrome --config=cli.config.json. Extension sessions can control tabs without creating a Chrome tab group or changing your existing groups. (microsoft/playwright#43814)
🐛 Fixes
fix(cli): use ordinal filenames for repeated downloads— repeated downloads ofreport.csvbecomereport-1.csv,report-2.csv, and so on instead of silently overwriting earlier files. (#514, microsoft/playwright#44011)fix(cli): restrict profile deletion to the exact session—playwright-cli -s=work delete-datano longer deletes the persistent profile ofwork-test. (#499, microsoft/playwright#43928)fix(cli): report command failures in text and JSON modes— invalid arguments and startup failures produce a readable error, or an{ "isError": true, "error": "..." }object with--json, and exit with code 1 instead of exposing an unhandled rejection. (#502, #522)fix(cli): use CLI command names in error messages— validation errors and recovery hints name commands you can actually run, such asrequestsandrecording-start, rather than MCP tools, and avoid doubledError:prefixes. (#515, microsoft/playwright#43932)fix(cli): avoid killing Windows process enumerators—playwright-cli kill-allcorrectly reports the daemons it stopped on Windows instead of saying none were found. (#525, microsoft/playwright#44008)fix(mcp): preserve non-JSON evaluation results—playwright-cli eval '() => 10n', circular objects, regular expressions and special numeric values are represented without turning successful evaluations into serialization errors or losing their values. JSON-compatible results retain their existing format. (microsoft/playwright-mcp#1838, microsoft/playwright#43973)fix(mcp): resolve config file paths relative to their source— relative profile, storage-state, executable and output paths now resolve next to the config file, including.playwright/cli.config.jsonand~/.playwright/cli.config.json, rather than the working directory. Paths supplied through flags or environment variables remain relative to the working directory. (microsoft/playwright-mcp#1836, microsoft/playwright#43970)fix(mcp): validate device names and preserve device descriptors— an unknown--devicereports a clear error instead of silently disabling emulation; context overrides no longer mutate shared device presets. (microsoft/playwright-mcp#1834, microsoft/playwright#43971)fix(mcp): bound settle waits when page timers cannot run— commands such asevalandclickno longer hang during their post-action wait on CSP-sandboxed pages or pages with paused clocks. (microsoft/playwright#43752, microsoft/playwright#43767)fix(mcp): report event listener exceptions as console errors— exceptions in page or context listeners registered withrun-codeappear in console output instead of terminating the session. (microsoft/playwright#43770, microsoft/playwright#43686)fix(mcp): report one-based console source lines—playwright-cli consolereports line numbers that match editors and DevTools. (microsoft/playwright-mcp#1839, microsoft/playwright#43975)fix(extension): report lost tab instead of crashing— losing the last controlled tab produces an actionable error instead of an undefined-property exception, with guidance when another extension's frame may have caused debugger detachment. (microsoft/playwright#43230, microsoft/playwright#43863)fix(chromium): honor Linux config directories for channel connections— browser discovery and attachment respectCHROME_CONFIG_HOMEandXDG_CONFIG_HOME; CDP connections also use the WebSocket path recorded by Chrome instead of failing with a 404. (microsoft/playwright#43880, microsoft/playwright#43884)fix(chromium): preserve fonts when connecting with noDefaults— attaching to an existing headless browser preserves its font settings and page layout. (microsoft/playwright#43715, microsoft/playwright#43773)fix(chromium): preserve HTTP navigations across HTTPS upgrade modes— explicit HTTP URLs and HTTP route mocks stay on HTTP instead of being unexpectedly upgraded or failing in Chromium, Chrome and Edge. (microsoft/playwright#43871, microsoft/playwright#43877)fix(screenshot): support full-page SVG documents—playwright-cli screenshot --full-pagecaptures standalone SVG documents instead of timing out. (microsoft/playwright#43962, microsoft/playwright#43972)feat(actionability): wait for elements to be non-inert— clicks, fills and option selection wait for inert subtrees to become interactive. Inert elements and content outside modal dialogs remain available in snapshots and role locators. (microsoft/playwright#43792, microsoft/playwright#43850, microsoft/playwright#43851)fix(selectors): support labels for form-associated custom elements— label locators and accessible names recognize labels associated with custom form controls. (microsoft/playwright#43898, microsoft/playwright#43900)fix(aria): match mixed-case selected options in accessible names— embedded comboboxes contribute their selected option's name even with values such asaria-selected="True". (microsoft/playwright#43785, microsoft/playwright#43787)fix(selector generator): do not throw when css fallback path is not unique— ambiguous matches in slotted web components report a useful strict-mode error instead of aTypeError. (microsoft/playwright#43701, microsoft/playwright#43705)fix(frames): reject context waits when page closes— pending operations on an iframe whose document has not loaded fail when its page closes instead of waiting indefinitely. (microsoft/playwright#43647, microsoft/playwright#43650)
...
v0.1.23
✨ 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 t...
v0.1.22
Bug Fixes
run-codescripts can use timers,fetch,URL,Buffer,crypto,AbortControllerandTextEncoder/TextDecoder;requireandprocessstay unavailable (#471). (microsoft/playwright#42975)find --filename=results.mdsaves matches to a file when a query produces too many of them (microsoft/playwright#42077). (microsoft/playwright#42968)gotoandreloadreport a dialog opened during page load instead of timing out (microsoft/playwright#42817). (microsoft/playwright#42908)- The session no longer crashes when the browser is closed during a download (microsoft/playwright#42831). (microsoft/playwright#42922)
install-browser --no-shellis accepted instead of failing withUnknown option: --shell(microsoft/playwright#42804). (microsoft/playwright#42871)webmcp-callno longer runs a tool in a stale tab or frame (microsoft/playwright#42816). (microsoft/playwright#42821)webmcp-callworks with Chromium 155+. (microsoft/playwright#42915)- Snapshots quote accessible names that look like regexes, e.g.
"/home/"(microsoft/playwright#42807). (microsoft/playwright#42811) - The bundled skill only preapproves Playwright commands instead of any
npmandnpxcommand (microsoft/playwright#42745). (microsoft/playwright#42789)
v0.1.21
✨ Highlights
- 🎬 Smooth 60 fps, styleable videos —
video-start --fps=60records smooth 60 fps videos instead of the default 25, andvideo-start --cursorrenders an animated mouse cursor that travels to each action point and stays visible between actions.video-show-actionstakes--point-style,--highlight-styleand--title-styleCSS declarations; the action point marker and the target highlight are now only shown when styled. (microsoft/playwright#42752, microsoft/playwright#42758) - 🧰 WebMCP tools show up in the snapshot — the tools a page registers are listed at the top of the page snapshot with their descriptions and input schemas, so
webmcp-callcan be used without runningwebmcp-listfirst. Setwebmcp: falsein the config file (envPLAYWRIGHT_MCP_WEBMCP=false) to stop collecting page-registered tools. (microsoft/playwright#42671) - 🌗 Switch between light and dark color scheme (microsoft/playwright#42243) — an agent working on a dark theme had no way to see it mid-session. New
set-color-scheme,set-reduced-motion,set-forced-colors,set-contrastandset-mediacommands emulate media features on the fly, and the matchingclear-*commands reset them. (microsoft/playwright#42668) - 📁 Absolute paths in results (microsoft/playwright#42497) — links to snapshots, screenshots, console logs and downloads are relative to the working directory, which a consumer without one cannot resolve. Set
filePaths: "absolute"in the config file (envPLAYWRIGHT_MCP_FILE_PATHS=absolute) to get absolute paths instead. (microsoft/playwright#42673)
🐛 Fixes
fix(chromium): bypass service workers on the storage state page—state-saveno longer runs the site's own scripts, or fails when they redirect, for origins with an active service worker (microsoft/playwright#42656). (#42664, #42741)fix(mcp): keep upload modal, skip short secrets and bad headers— a faileduploadkeeps the file chooser open so it can be retried, secrets shorter than 4 characters no longer rewrite the whole output with<secret>markers, androuteignores header lines that have no name. (#42713)
📦 Upgrading
npm install -g @playwright/cli@0.1.21v0.1.20
What's New
🎉 New Commands
webmcp-list/webmcp-call— List and call the tools a page registers through the WebMCP API, letting the page do the work instead of driving its UI. When a page has WebMCP tools, the page status reports how many are available (#42613). WebMCP is experimental, see WebMCP in Chrome for how to enable it.
Other Changes
- Headless sessions now shut down after one hour without commands, so a session an agent never closed no longer holds a browser; run
openagain to start a new one. Useopen --idle-timeout <ms>(configtimeouts.idle, envPLAYWRIGHT_MCP_IDLE_TIMEOUT) to change the timeout,0disables it. Headed browsers stay open, and attached browsers are only detached whenattach --idle-timeout <ms>is set (#42676) - The skill includes a guide for attaching screenshots and videos to pull requests with
gh --attach(#42645)
Bug Fixes
- Session daemons exit when their control socket is deleted or replaced, instead of staying alive with the browser (#42454)
- Explicitly named output files in a nested directory (e.g.
screenshot --filename=sub/shot.png) no longer fail withENOENT(#42540) - Video chapters and screencast overlays are no longer hidden behind open dialogs and popovers (#42642)
npx playwright test --debug=cliworks for tests that create more than one browser context and for every test in a worker, not just the first (#42503)- With
PLAYWRIGHT_MCP_EXTENSION_TOKENset,attach --extensionfails after 30 seconds with a hint when the extension never connects (e.g. the token belongs to another Chrome profile) instead of hanging forever (#42525) - Disable the Chromium sandbox by default on Linux for the bundled Chromium build, which lacks the setuid sandbox helper (#42490)
Upgrading
npm install -g @playwright/cli@0.1.20v0.1.19
What's New
New Commands
recording-start/recording-stop— Record actions that the user performs manually in the browser and return them as Playwright code. Useful when the user wants to demonstrate a flow instead of describing it (#42359)
Bug Fixes
- The update check result is cached again, so commands no longer pay a network round-trip to the npm registry on every invocation (#454)
- The installed-skill check honors
NO_UPDATE_NOTIFIER/CIand runs at most once a day (#447) - Negative positional arguments (e.g.
mousewheelscroll-up deltas) are no longer parsed as flags (#42333) - The session daemon no longer opens a console window on Windows (#42155)
- Long workspace paths no longer truncate the daemon socket path, which left sessions stuck with
EADDRINUSE(#42185) install --skillsadds.playwright-cli/to.gitignore, since traces there can contain credentials (#42318)- The hint printed after
attachshows-sinstead of--s(#42138) screenshotreturns the original screenshot bytes instead of silently downscaling them to model-specific limits (#42406)- Drop the cached browser backend after
closewith a shared browser context, so subsequent commands no longer fail (#42365) - Tracing can be restarted after a failed
tracing-stopinstead of permanently producing broken archives (#42425) - The default codegen language is inferred from the environment (#42150)
- Do not clobber the
chromiumSandboxsetting from the config file (#42288) - Honor
--user-data-dirin extension mode (#42190) - Do not treat orphaned browser preferences entries as an installed extension (#42224)
state-save/state-loadno longer hang when the state contains IndexedDB and a page on that origin is open (#42260)
v0.1.18
Highlights
install --skillssupports the-gflag (microsoft/playwright#42087) — installs the skill into your home directory instead of the current workspace. (microsoft/playwright#42099)- Generated code in Python, Java and C# (microsoft/playwright-mcp#1696) — code can be generated in Python, Java and C# in addition to JavaScript. (microsoft/playwright#42106)
- Configurable post-action settle delay — tune how long the CLI waits for the page to settle after each action. (microsoft/playwright#41924)
Fixes
feat(mcp): emit structured snapshot in --json responses—--jsonno longer wraps formatted text in a string; responses carry a structured page snapshot. (microsoft/playwright#42076, microsoft/playwright#42098)feat(mcp): add snapshot.boxes config to include bounding boxes in snapshots— bounding boxes can now be enabled globally via config rather than per snapshot. (microsoft/playwright-mcp#1695, microsoft/playwright#42102)fix(cli): exit with non-zero code when the tool result is an error— failed commands no longer exit with status 0, so scripts and agents can detect errors. (microsoft/playwright#42028, microsoft/playwright#42042)fix(cli): accept multiple files in upload command—uploadno longer rejects a second file although it advertises "one or multiple files". (microsoft/playwright#42047, microsoft/playwright#42057)fix(mcp): reconnect to the browser after disconnect— the relay reconnects after the browser extension disconnects. (microsoft/playwright#41874, microsoft/playwright#41966)fix(mcp): launch the Chrome profile that has the extension installed—attachno longer targets a different profile than the one with the extension. (microsoft/playwright#41916, microsoft/playwright#41939)fix(mcp): pass noDefaults for extension CDP connections— extension connections no longer override existing browser defaults. (microsoft/playwright#42117, microsoft/playwright#42119)fix(mcp): clear dialog modal state when dialog is closed out of band— dialogs dismissed by hand in headed mode no longer leave the session stuck in a modal state. (microsoft/playwright#42032)fix(mcp): report malformed JSON config instead of falling back to INI— a broken JSON config file now produces a clear error instead of being silently parsed as INI. (microsoft/playwright#41909)fix(mcp): surface the missing executable path when a browser isn't installed— clearer error message pointing at the missing browser executable. (microsoft/playwright#41941)fix(mcp): identify downloads explicitly— downloads are labeled explicitly in command responses. (microsoft/playwright#41933)fix(mcp): validate Host and Origin on CDP relay WebSocket upgrades— hardens the extension relay against unauthorized cross-origin connections. (microsoft/playwright#42103)fix(mcp): escape user input in codegen output— special characters in your input are escaped correctly in the generated code. (microsoft/playwright#41962)fix(mcp): mention PLAYWRIGHT_MCP_EXECUTABLE_PATH in extension not found error— points at the escape hatch when the extension browser can't be located (e.g. on WSL2). (microsoft/playwright#42092, microsoft/playwright#42122)perf(mcp): skip aria snapshot capture when the response discards it— commands that don't need a snapshot run faster. (microsoft/playwright#41923)- The v0.1.17 fix for
gotocrashing on privileged pages (chrome://…) was reverted upstream: the crash originates in the browser process itself, and the fix only masked it. (microsoft/playwright#41931)
v0.1.17
Fixes
gotono longer crashes the browser session on privileged pages (#433) — navigating to pages likechrome://extensions/orchrome://settings/used to throwTypeError: Cannot read properties of undefined (reading 'url')and take down the whole session. (microsoft/playwright#41675)fix(mcp): await init page before screenshot— screenshots taken right after open no longer race the page init. (microsoft/playwright#41646)fix(mcp): preserve directory for additional tab videos— videos for extra tabs are saved to the configured output directory. (microsoft/playwright#41680)feat(mcp): always pass noDefaults for CDP connections— attaching over CDP no longer applies unwanted default context options. (microsoft/playwright#41676)
v0.1.16
Highlights
- Search a large snapshot instead of capturing the whole thing — the new
findcommand searches the page snapshot for text or a regexp and returns just the matching nodes with surrounding context (likegrep -C), keeping big pages out of the model context. (microsoft/playwright#41605, microsoft/playwright#41654) - Mobile emulation —
open --mobileemulates a generic mobile device (Pixel for Chromium, iPhone for WebKit) and--device="iPhone 15"targets a specific one; mobile pages are usually lighter, so snapshots are smaller and cheaper. (microsoft/playwright#41657) - Leaner snapshots — AI snapshots are distilled to be less verbose, cutting token cost on every command that returns page state. (microsoft/playwright#41604)
- Local invocation via
npx playwright cli— the CLI is now exposed asplaywright cli(andplaywright mcp), so a locally installed Playwright can drive it without a separate global install. (microsoft/playwright#41577)
Fixes
feat(mcp): surface non-2xx navigation status— navigation now reports the HTTP status instead of silently succeeding on error responses. (microsoft/playwright#41589)fix(mcp): enable the chromium sandbox for the default browser— the default Chromium browser now runs sandboxed. (microsoft/playwright#41652)fix(routing): normalize literal glob components through new URL()—routepatterns with literal glob characters now match reliably. (microsoft/playwright#41682)fix(mcp): close isolated HTTP client context on disconnect— isolated sessions release their context cleanly on disconnect. (microsoft/playwright#41560)
v0.1.15
Highlights
- High resolution screenshots (#376) —
playwright-cli screenshot --hirescaptures at the device's full pixel ratio instead of downscaling to CSS pixels. (microsoft/playwright#41465) - Secrets filtered from console logs (#41509) — configured secret values are now redacted in captured console log artifacts. (microsoft/playwright#41515)
Heads up
- The CLI now checks for updates — on startup it notifies you when a newer
@playwright/cliis available on npm. (#426) - The CLI now warns when your installed skill is out of date — if the bundled Playwright skill is newer than the one installed in your workspace, you'll be prompted to reinstall it. Re-run
playwright-cli install --skillsto update. (#427)
Fixes
fix(mcp): pass action timeout to browser_wait_for waitFor calls—wait_fornow honors the configured action timeout instead of waiting indefinitely. (microsoft/playwright#41270)fix(mcp): wait for next pause or context closure in browser_resume— resuming a paused session settles reliably. (microsoft/playwright#41293)fix(mcp): assign caps as array for legacy --vision flag— the legacy--visionflag works again. (microsoft/playwright#41253)fix(mcp): never include data: URL payloads in snapshot or network output— largedata:URLs no longer flood snapshot and network output. (microsoft/playwright#41450)fix(mcp): list a failed network request only once— failed requests are no longer duplicated in network output. (microsoft/playwright#41481)fix(mcp): check tracing state before stopping in browser_stop_tracing— stopping tracing when it is not running no longer errors. (microsoft/playwright#41040)fix(mcp): add missing .catch() on sessionLog write queue— a failed session-log write no longer crashes the session. (microsoft/playwright#41234)
(microsoft/playwright#41382)