v1.64.1
Bug Fixes #43247 [Bug]: _electron.launch intermittently loses a packaged app's first window since 1.64.0 #43242 [Regression]: Chromium 155+ aborts a preflighted cross-origin redirect whenever any route is registered (net::ERR_ABORTED)
Bug Fixes #43247 [Bug]: _electron.launch intermittently loses a packaged app's first window since 1.64.0 #43242 [Regression]: Chromium 155+ aborts a preflighted cross-origin redirect whenever any route is registered (net::ERR_ABORTED)
🧰 WebMCP New page.webmcp and frame.webmcp give access to the tools that a page registers through the experimental WebMCP browser API, so you can test them like any other part of your app: const browser = await chromium.launch({ args: ['--enable-features=WebMCP'] }); const page = await browser.newPage(); await page.goto('https://example.com'); for (const tool of await page.webmcp.tools()) console.l…
🔒 Test locks Tests that access a shared resource — an external service, a global account setting — can now declare a named lock. Tests that share a lock name never run concurrently, across files, workers and projects, while everything else keeps running in parallel: test('update user settings', { lock: 'user-settings' }, async ({ page }) => { // never runs at the same time as other tests holding '…
Bug Fixes #41989 [Regression]: tsconfig "extends" bare specifier isn't resolved via node_modules walk-up like tsc (fatal since 1.62) #41998 [Regression]: directory-form tsconfig project references ("path": "../pkg") fail to resolve (fatal since 1.62) #41985 Accessibility snapshot drops button name when text is nested inside spans with aria-hidden SVG #42000 [Regression]: page.evaluate() arg of a b…
🧱 New component testing model Component testing moves to a stories and galleries model. A story wraps your component in one specific scenario — hard-coded props, mock data, providers — and a gallery page that you serve renders stories on demand. The new fixtures.mount() fixture navigates to the gallery, mounts a story by id, and returns a Locator scoped to the story's root element: test('click sho…
Bug Fixes #41365 [Bug]: Expect.Extend matcher with same name as default matcher in same expect instance overrides default matchers implementation to custom matcher #41351 [Bug]: Playwright UI mode: apiRequestContext._wrapApiCall reports unexpected number of bytes (same test passes in headed mode) #41360 [Bug]: Trace viewer: message times in websockets are downscaled by 1000 #41311 [Bug]: [Regressi…
🔑 WebAuthn passkeys New Credentials virtual authenticator, available via browserContext.credentials, lets tests register passkeys and answer navigator.credentials.create() / navigator.credentials.get() ceremonies in the page — no real hardware key required, works in all browsers: const context = await browser.newContext(); // Seed a passkey your backend provisioned for a test user. await context.c…
🎬 Screencast New page.screencast API provides a unified interface for capturing page content with: Screencast recordings Action annotations Visual overlays Real-time frame capture Agentic video receipts Screencast recording — record video with precise start/stop control, as an alternative to the recordVideo option: await page.screencast.start({ path: 'video.webm' }); // ... perform actions ... awa…
🌐 HAR recording on Tracing tracing.startHar() / tracing.stopHar() expose HAR recording as a first-class tracing API, with the same content, mode and urlFilter options as recordHar. The returned Disposable makes it easy to scope a recording with await using: await using har = await context.tracing.startHar('trace.har'); const page = await context.newPage(); await page.goto('https://playwright.dev')…
Bug Fixes [Windows] Reverted hiding console window when spawning browser processes, which caused regressions including broken codegen, --ui and show commands (#39990)
Highlights #39121 fix(trace viewer): make paths via stdin work #39129 fix: do not force swiftshader on chromium mac Browser Versions Chromium 145.0.7632.6 Mozilla Firefox 146.0.1 WebKit 26.0
Highlights #39036 fix(msedge): fix local network permissions #39037 chore: update cft download location #38995 chore(webkit): disable frame sessions on fronzen builds Browser Versions Chromium 145.0.7632.6 Mozilla Firefox 146.0.1 WebKit 26.0
📣 Playwright CLI+SKILLs 📣 We are adding a new token-efficient CLI mode of operation to Playwright with the skills located at playwright-cli. This brings the long-awaited official SKILL-focused CLI mode to our story and makes it more coding agent-friendly. It is the first snapshot with the essential command set (which is already larger than the original MCP!), but we expect it to grow rapidly. Unli…
Speedboard In HTML reporter, there's a new tab we call "Speedboard": It shows you all your executed tests sorted by slowness, and can help you understand where your test suite is taking longer than expected. Take a look at yours - maybe you'll find some tests that are spending a longer time waiting than they should! Chrome for Testing Starting with this release, Playwright switches from Chromium,…
Highlights #37871 chore: allow local-network-access permission in chromium #37891 fix(agents): remove workspaceFolder ref from vscode mcp #37759 chore: rename agents to test agents #37757 chore(mcp): fallback to cwd when resolving test config Browser Versions Chromium 141.0.7390.37 Mozilla Firefox 142.0.1 WebKit 26.0