microsoft avatar

Playwright Release Notes & Changelog

microsoft/playwright

The latest Playwright release is v1.64.0, published on .

Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.

97,414 starsTypeScriptv1.64.0
playwrighttestingautomationwebkitfirefoxe2e-testingwebchrome

Playwright release notes

๐Ÿงฐ 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:

Playwright MCP also supports WebMCP by default, with page-defined tools offered to the agent as webmcp_<tool>. Pass --no-webmcp to opt out.

playwright-cli exposes them as well:

๐ŸŽฌ Better videos

Videos can now be recorded at a custom frame rate, and the decorations for actions are styled with plain CSS:

๐Ÿ”’ 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:

A test can hold multiple locks, and test.describe() accepts a lock for the whole group.
Learn more about test locks.

๐ŸชŸ Locate across frames

page.frameLocator() and frame.frameLocator() called without a selector search in any frame of the
subtree, so you no longer need to locate the iframe first:

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 branded primitive type (string & { brand }) no longer type-checks since 1.62
  • #42013 [BUG]Image-type actionable elements are not presented in the snapshot.

๐Ÿงฑ 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:

Pass a story type as a template argument to type-check its props, and use update(props) / unmount() on the returned locator to re-render or tear down within a test.

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]: [Regression]: Sync loader throws "context.conditions?.includes is not a function" on Node 22.15

๐Ÿ”‘ 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:

You can also let the app register a passkey once in a setup test, read it back with credentials.get(), and seed it into later tests โ€” see Credentials for details.

๐Ÿ—ƒ๏ธ Web Storage

New WebStorage API, available via page.localStorage and page.sessionStorage, reads and writes the page's storage for the current origin:

๐ŸŒ 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:

๐Ÿช Drop API

New locator.drop() simulates an external drag-and-drop of files or clipboard-like data onto an element. Playwright dispatches dragenter, dragover, and drop with a synthetic [DataTransfer] in the page context โ€” works cross-browser and is great for testing upload zones:

๐ŸŽฏ Aria snapshots

๐ŸŽฌ 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:

Action annotations โ€” enable built-in visual annotations that highlight interacted elements and display action titles during recording:

screencast.showActions() accepts position ('top-left', 'top', 'top-right', 'bottom-left', 'bottom', 'bottom-right'), duration (ms per annotation), and

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

Looking for an older version? The full Playwright changelog is on the official microsoft/playwright releases page.

How to get notified of new Playwright releases

Stay updated when Playwright ships a new version. With GitWatchman, you can monitor microsoft/playwright and receive the full release notes by email, Slack, Discord or Telegram whenever a new version is published.

  1. Sign in with your GitHub or Google account at gitwatchman.com
  2. Add microsoft/playwright to your monitored repositories
  3. Get an alert with the release notes for every new version

You can also subscribe to the RSS feed for Playwright releases (see our GitHub release RSS guide), follow Playwright pre-releases and betas, or compare the best GitHub release trackers.

Related projects to track

Get notified of new Playwright releases

One alert per release with the full notes, by email, Slack, Discord or Telegram. Free for up to 5 repositories.

Track Playwright for free