✨ Highlights
- 🌙 Keep the browser in the background (microsoft/playwright#42973) — connecting through the extension activated the tab and focused the browser window, taking the screen from the app you were working in. Pass
--backgroundalongside--extension(configbackground: true, envPLAYWRIGHT_MCP_BACKGROUND=1) to leave the connected tab inactive and its window unfocused, and to open the client's new tabs in the background. WithPLAYWRIGHT_MCP_EXTENSION_TOKENset, the connect page opens in the background too (Chrome 158.0.8127.2 or later, with the browser already running). Requires extension 0.5.0 or later. Chrome throttles timers and animation frames in background tabs. (microsoft/playwright#43864) - 🗂️ Leave tabs out of the Playwright tab group (microsoft/playwright#43038) — the extension always moved the tabs a client controls into its own tab group. Pass
--no-tab-groupalongside--extension(configtabGroup: false, envPLAYWRIGHT_MCP_NO_TAB_GROUP=1) to keep the selected tab and the tabs the client opens in their existing groups, if any. Connection approval is unchanged, each controlled tab still belongs to one client, and the extension's status page lists the controlled tabs. Requires extension 0.5.0 or later. (microsoft/playwright#43814) - 👁️ Match only visible elements (microsoft/playwright#43855) — a locator could resolve to a hidden element, or fail because a hidden duplicate matched as well. Set
browser.contextOptions.locateOnlyVisible: truein the config file to restrict locators to visible elements, both in thetargetof element tools such asbrowser_clickand inbrowser_run_code_unsafe, as if.filter({ visible: true })ended each of them. A locator that ends with its own visibility filter keeps it. Off by default. (microsoft/playwright#43903) - 🏷️ Keep container names in snapshots (microsoft/playwright#43809) — dialogs, landmarks and tables could appear unnamed even when their heading or caption was visible.
browser_snapshotnow retains identifying names on containers and table headers when the text supplying the name also appears among their children. (microsoft/playwright#43810) - 🎯 Find custom form controls by label (microsoft/playwright#43898) — native
<label>associations were ignored for form-associated custom elements. Element tools now recognize these controls through targets such asgetByLabel('City'), and accessible names use the associated labels too. Bothforattributes and nested labels are supported. (microsoft/playwright#43900)
🐛 Fixes
fix(aria): restore snapshot visibility rules for inert and modal content— the filtering announced in v0.0.84 is reverted:browser_snapshotno longer hides content solely because it is inert or outside a modal dialog. Click, fill and select actions still wait for explicitly inert targets to become non-inert (microsoft/playwright#43792). (microsoft/playwright#43850, microsoft/playwright#43851)fix(mcp): preserve non-JSON evaluation results—browser_evaluatereturns readable representations of values such as BigInt,NaN,Infinity,undefinedand circular objects instead of losing values or failing JSON serialization. JSON-compatible results keep their existing format (#1838). (microsoft/playwright#43973)fix(mcp): resolve config file paths relative to their source— profile, executable, storage-state, output and other file paths in a config resolve against that file's directory, or its target's directory for a symlink. CLI and environment paths remain relative to the working directory. Extension connections also honor the merged executable-path configuration (#1836). (microsoft/playwright#43970)fix(extension): report lost tab instead of crashing— tool responses report when a page closes before its snapshot can be captured. Extension connections also explain that Chrome may have detached the debugger because of an unsupported frame, rather than crashing response rendering (microsoft/playwright#43230). (microsoft/playwright#43863)fix(mcp): bound settle waits when page timers cannot run— tool calls no longer hang during their settling delay when page timers are throttled, paused or otherwise unable to run (microsoft/playwright#43752). (microsoft/playwright#43767)fix(mcp): report event listener exceptions as console errors— exceptions from page and context listeners installed throughbrowser_run_code_unsafeappear in tool responses andbrowser_console_messagesinstead of escaping as unhandled errors (microsoft/playwright#43770). (microsoft/playwright#43686)fix(mcp): validate device names and preserve device descriptors— unknown--devicevalues produce an explicit error, and per-client overrides no longer mutate shared device presets (#1834). (microsoft/playwright#43971)fix(mcp): report one-based console source lines— source locations inbrowser_console_messagesand console entries in tool responses now use editor-style line numbers starting at 1 (#1839). (microsoft/playwright#43975)fix(mcp): clarify screenshot actions with vision tools— thebrowser_take_screenshotdescription no longer rules out acting on a screenshot.browser_snapshotstays the default for actions; with--caps=vision, the description points to the coordinate-based mouse tools for elements that the snapshot does not expose, such as canvas content (#1816). (microsoft/playwright#43857)fix(aria): match mixed-case selected options in accessible names— snapshots and role locators include the selected option's text when a custom listbox uses a mixed-case value such asaria-selected="TRUE"(microsoft/playwright#43785). (microsoft/playwright#43787)fix(chromium): preserve fonts when connecting with noDefaults— extension connections no longer overwrite the existing browser's font settings, avoiding unexpected changes to page rendering (microsoft/playwright#43715). (microsoft/playwright#43773)fix(chromium): honor Linux config directories for channel connections— extension profile lookup respectsCHROME_USER_DATA_DIR,CHROME_CONFIG_HOMEandXDG_CONFIG_HOME. Channel-based--cdp-endpointconnections also use the WebSocket path advertised inDevToolsActivePort(microsoft/playwright#43880). (microsoft/playwright#43884)fix(chromium): preserve HTTP navigations across HTTPS upgrade modes— in browsers launched by the server,browser_navigatekeeps HTTP URLs on HTTP instead of Chrome automatically upgrading them to HTTPS (microsoft/playwright#43871). (microsoft/playwright#43877)fix(chromium): account for tabs and toolbar in the new headless mode— with--headless, Chrome and Edge now size their window to fit the viewport below the tab strip and toolbar, so videos frombrowser_start_video(opt-in via--caps=devtools) no longer lose the bottom of the page. (microsoft/playwright#43904)fix(screenshot): support full-page SVG documents—browser_take_screenshotwithfullPage: trueworks on standalone SVG documents instead of waiting for a nonexistent HTML body (microsoft/playwright#43962). (microsoft/playwright#43972)