--- id: release-notes title: "Release notes" toc_max_heading_level: 2 --- ## Version 1.25 ### New APIs & changes - Default assertions timeout now can be changed with [`setDefaultAssertionTimeout`](./test-assertions#playwright-assertions-set-default-assertion-timeout). ### Announcements * ðŸŠĶ This is the last release with macOS 10.15 support (deprecated as of 1.21). * ⚠ïļ Ubuntu 18 is now deprecated and will not be supported as of Dec 2022. ### Browser Versions * Chromium 105.0.5195.19 * Mozilla Firefox 103.0 * WebKit 16.0 This version was also tested against the following stable channels: * Google Chrome 104 * Microsoft Edge 104 ## Version 1.24
### 🐂 Debian 11 Bullseye Support Playwright now supports Debian 11 Bullseye on x86_64 for Chromium, Firefox and WebKit. Let us know if you encounter any issues! Linux support looks like this: | | Ubuntu 18.04 | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ | ✅ | ## Version 1.23 ### Network Replay Now you can record network traffic into a HAR file and re-use this traffic in your tests. To record network into HAR file: ```bash mvn exec:java -e -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args="open --save-har=example.har --save-har-glob='**/api/**' https://example.com" ``` Alternatively, you can record HAR programmatically: ```java BrowserContext context = browser.newContext(new Browser.NewContextOptions() .setRecordHarPath(Paths.get("example.har")) .setRecordHarUrlFilter("**/api/**")); // ... Perform actions ... // Close context to ensure HAR is saved to disk. context.close(); ``` Use the new methods [`method: Page.routeFromHAR`] or [`method: BrowserContext.routeFromHAR`] to serve matching responses from the [HAR](http://www.softwareishard.com/blog/har-12-spec/) file: ```java context.routeFromHAR(Paths.get("example.har")); ``` Read more in [our documentation](./network#record-and-replay-requests). ### Advanced Routing You can now use [`method: Route.fallback`] to defer routing to other handlers. Consider the following example: ```java // Remove a header from all requests. page.route("**/*", route -> { Map headers = new HashMap<>(route.request().headers()); headers.remove("X-Secret"); route.resume(new Route.ResumeOptions().setHeaders(headers)); }); // Abort all images. page.route("**/*", route -> { if ("image".equals(route.request().resourceType())) route.abort(); else route.fallback(); }); ``` Note that the new methods [`method: Page.routeFromHAR`] and [`method: BrowserContext.routeFromHAR`] also participate in routing and could be deferred to. ### Web-First Assertions Update * New method [`method: LocatorAssertions.toHaveValues`] that asserts all selected values of `