Skip to content

playwright

v1.61.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

automation chrome chromium e2e-testing electron end-to-end-testing
+9 more
firefox javascript playwright test test-automation testing testing-tools web webkit

Summary

AI summary

Updates Test runner, Browser Versions, and Browser and Screencast across a mixed release.

Changes in this release

Feature Medium

Adds Credentials API for virtual passkey authenticator in tests

Adds Credentials API for virtual passkey authenticator in tests

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds WebStorage API to read/write page's localStorage and sessionStorage

Adds WebStorage API to read/write page's localStorage and sessionStorage

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds apiResponse.securityDetails() and apiResponse.serverAddr() methods mirroring browser-side equivalents

Adds apiResponse.securityDetails() and apiResponse.serverAddr() methods mirroring browser-side equivalents

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds `artifactsDir` option to browserType.connectOverCDP() for artifact storage control

Adds `artifactsDir` option to browserType.connectOverCDP() for artifact storage control

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds `cursor` option to screencast.showActions() for cursor decoration control

Adds `cursor` option to screencast.showActions() for cursor decoration control

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds `timestamp` field to onFrame callback in screencast.start()

Adds `timestamp` field to onFrame callback in screencast.start()

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds new video modes 'on-all-retries', 'retain-on-first-failure', and 'retain-on-failure-and-retries' to testOptions.video

Adds new video modes 'on-all-retries', 'retain-on-first-failure', and 'retain-on-failure-and-retries' to testOptions.video

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds support for `expect.soft.poll(...)` in test runner

Adds support for `expect.soft.poll(...)` in test runner

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds fullConfig.argv snapshot of process.argv and fullConfig.failOnFlakyTests flag to test runner config

Adds fullConfig.argv snapshot of process.argv and fullConfig.failOnFlakyTests flag to test runner config

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds `-G` shorthand command line option for `--grep-invert` in test runner

Adds `-G` shorthand command line option for `--grep-invert` in test runner

Source: llm_adapter@2026-06-15

Confidence: high

Performance Medium

HAR and trace recordings now include WebSocket requests

HAR and trace recordings now include WebSocket requests

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Full changelog

🔑 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.credentials.create('example.com', {
  id: credentialId,
  userHandle,
  privateKey,
  publicKey,
});
await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');
// The page's navigator.credentials.get() is answered with the seeded passkey.

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:

await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
const items = await page.sessionStorage.items();

New APIs

Network

Browser and Screencast

  • New option artifactsDir in browserType.connectOverCDP() controls where artifacts such as traces and downloads are stored when attached to an existing browser.
  • New option cursor in screencast.showActions() controls the cursor decoration rendered for pointer actions.
  • The onFrame callback in screencast.start() now receives a timestamp of when the frame was presented by the browser.

Test runner

  • The testOptions.video option now supports the same set of modes as trace: new 'on-all-retries', 'retain-on-first-failure' and 'retain-on-failure-and-retries' values. See the video modes table for which runs are recorded and kept in each mode.
  • Supported expect.soft.poll(...).
  • New fullConfig.argv — a snapshot of process.argv from the runner process, handy for reading custom arguments passed after the -- separator.
  • New fullConfig.failOnFlakyTests mirrors the config option, so reporters can explain why a flaky run failed.
  • testInfo.errors now lists each sub-error of an AggregateError as a separate entry.
  • New -G command line shorthand for --grep-invert.

🛠️ Other improvements

  • Playwright now supports Ubuntu 26.04.
  • HAR and trace recordings now include WebSocket requests.

Browser Versions

  • Chromium 149.0.7827.55
  • Mozilla Firefox 151.0
  • WebKit 26.5

This version was also tested against the following stable channels:

  • Google Chrome 149
  • Microsoft Edge 149

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track playwright

Get notified when new releases ship.

Sign up free

About playwright

All releases →

Related context

Earlier breaking changes

  • v1.60.0 Removed videosPath and videoSize context options
  • v1.60.0 Removed logger option from connect APIs
  • v1.60.0 Removed handle option from exposeBinding
  • v1.60.0 Removed deprecated Locator.ariaRef() API

Beta — feedback welcome: [email protected]