| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-18 | 5.4 kB | |
| v1.60.0 source code.tar.gz | 2026-05-18 | 2.3 MB | |
| v1.60.0 source code.zip | 2026-05-18 | 2.7 MB | |
| Totals: 3 Items | 4.9 MB | 2 | |
🌐 HAR recording on Tracing
tracing.startHar() (playwright.dev) / tracing.stopHar() (playwright.dev) expose HAR recording as a first-class tracing API, with the same content, mode and urlFilter options as recordHar:
:::java
context.tracing().startHar(Paths.get("trace.har"));
Page page = context.newPage();
page.navigate("https://playwright.dev");
context.tracing().stopHar();
🪝 Drop API
New locator.drop() (playwright.dev) 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:
:::java
page.locator("#dropzone").drop(new Locator.DropPayload()
.setFiles(new FilePayload("note.txt", "text/plain", "hello".getBytes(StandardCharsets.UTF_8))));
page.locator("#dropzone").drop(new Locator.DropPayload()
.setData(Map.of(
"text/plain", "hello world",
"text/uri-list", "https://example.com")));
🎯 Aria snapshots
- assertThat(page).matchesAriaSnapshot() now works on a Page, in addition to a Locator — equivalent to asserting against
page.locator("body"). - New
boxesoption on locator.ariaSnapshot() (playwright.dev) / page.ariaSnapshot() (playwright.dev) appends each element's bounding box as[box=x,y,width,height], useful for AI consumption.
New APIs
Browser, Context and Page
- Event browser.onContext() (playwright.dev) — fired when a new context is created on the browser.
- BrowserContext now mirrors lifecycle events from its pages: browserContext.onDownload() (playwright.dev), browserContext.onFrameAttached() (playwright.dev), browserContext.onFrameDetached() (playwright.dev), browserContext.onFrameNavigated() (playwright.dev), browserContext.onPageClose() (playwright.dev), browserContext.onPageLoad() (playwright.dev).
Locators and Assertions
- New option
descriptionin page.getByRole() (playwright.dev) / locator.getByRole() (playwright.dev) / frame.getByRole() (playwright.dev) / frameLocator.getByRole() (playwright.dev) for matching the accessible description. - New option
pseudoin assertThat(locator).hasCSS() reads computed styles from::beforeor::after. - New option
stylein locator.highlight() (playwright.dev) applies extra inline CSS to the highlight overlay, plus new page.hideHighlight() (playwright.dev) to clear all highlights.
Network
- webSocketRoute.protocols() (playwright.dev) returns the WebSocket subprotocols requested by the page.
- New option
noDefaultsin browserType.connectOverCDP() (playwright.dev) disables Playwright's default overrides on the default context (download behavior, focus emulation, media emulation), so attaching to a user's daily-driver browser doesn't disturb its state.
Errors
- New webError.location() (playwright.dev) mirrors consoleMessage.location() (playwright.dev).
🛠️ Other improvements
- Trace Viewer adds a pretty-print toggle for JSON / form request and response bodies in the network details panel.
Breaking Changes ⚠️
- Removed long-deprecated
handleoption onBrowserContext.exposeBindingandPage.exposeBinding.
Browser Versions
- Chromium 148.0.7778.96
- Mozilla Firefox 150.0.2
- WebKit 26.4
This version was also tested against the following stable channels:
- Google Chrome 147
- Microsoft Edge 147