Releases: microsoft/playwright-java
v1.39.0
v1.38.0
Trace Viewer Updates
- Zoom into time range.
- Network panel redesign.
New APIs
Browser Versions
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 116
- Microsoft Edge 116
v1.37.0
New APIs
-
New methods
BrowserContext.newCDPSession()andBrowser.newBrowserCDPSession()create a Chrome DevTools Protocol session for the page and browser respectively.CDPSession cdpSession = page.context().newCDPSession(page); cdpSession.send("Runtime.enable"); JsonObject params = new JsonObject(); params.addProperty("expression", "window.foo = 'bar'"); cdpSession.send("Runtime.evaluate", params); Object foo = page.evaluate("window['foo']"); assertEquals("bar", foo);
📚 Debian 12 Bookworm Support
Playwright now supports Debian 12 Bookworm on both x86_64 and arm64 for Chromium, Firefox and WebKit.
Let us know if you encounter any issues!
Linux support looks like this:
| Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | |
|---|---|---|---|---|
| Chromium | ✅ | ✅ | ✅ | ✅ |
| WebKit | ✅ | ✅ | ✅ | ✅ |
| Firefox | ✅ | ✅ | ✅ | ✅ |
Browser Versions
- Chromium 116.0.5845.82
- Mozilla Firefox 115.0
- WebKit 17.0
This version was also tested against the following stable channels:
- Google Chrome 115
- Microsoft Edge 115
v1.36.0
v1.35.1
v1.35.0
Highlights
-
New option
setMaskColorfor methodsPage.screenshot()andLocator.screenshot()to change default masking color. -
New
uninstallCLI command to uninstall browser binaries:$ mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall" # remove browsers installed by this installation $ mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall --all" # remove all ever-install Playwright browsers
Browser Versions
- Chromium 115.0.5790.13
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 114
- Microsoft Edge 114
v1.34.0
Version 1.34.0
Highlights
-
New
Locator.and()to create a locator that matches both locators.Locator button = page.getByRole(AriaRole.BUTTON).and(page.getByTitle("Subscribe"));
-
New events
BrowserContext.onConsoleMessage()andBrowserContext.onDialog()to subscribe to any dialogs
and console messages from any page from the given browser context. Use the new methodsConsoleMessage.page()andDialog.page()to pin-point event source.
Browser Versions
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 113
- Microsoft Edge 113
v1.33.0
Version 1.33.0
Locators Update
-
Use
Locator.or()to create a locator that matches either of the two locators.
Consider a scenario where you'd like to click on a "New email" button, but sometimes a security settings dialog shows up instead.
In this case, you can wait for either a "New email" button, or a dialog and act accordingly:Locator newEmail = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("New")); Locator dialog = page.getByText("Confirm security settings"); assertThat(newEmail.or(dialog)).isVisible(); if (dialog.isVisible()) page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Dismiss")).click(); newEmail.click();
-
Use new options
setHasNotandsetHasNotTextinLocator.filter()
to find elements that do not match certain conditions.Locator rowLocator = page.locator("tr"); rowLocator .filter(new Locator.FilterOptions().setHasNotText("text in column 1")) .filter(new Locator.FilterOptions().setHasNot( page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("column 2 button" )))) .screenshot();
-
Use new web-first assertion
LocatorAssertions.isAttached()to ensure that the element
is present in the page's DOM. Do not confuse with theLocatorAssertions.isVisible()that ensures that
element is both attached & visible.
New APIs
Locator.or()- New option
setHasNotinLocator.filter() - New option
setHasNotTextinLocator.filter() LocatorAssertions.isAttached()- New option
setTimeoutinRoute.fetch()
Other highlights
- Native support for Apple Silicon - Playwright now runs without Rosetta
- Added Ubuntu 22.04 (Jammy) Docker image
⚠️ Breaking change
- The
mcr.microsoft.com/playwright/java:v1.33.0now serves a Playwright image based on Ubuntu Jammy.
To use the focal-based image, please usemcr.microsoft.com/playwright/java:v1.33.0-focalinstead.
Browser Versions
- Chromium 113.0.5672.53
- Mozilla Firefox 112.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 112
- Microsoft Edge 112
v1.32.0
New APIs
- Chaining existing locator objects, see locator docs for details.
- New options
setUpdateModeandsetUpdateContentinPage.routeFromHAR()andBrowserContext.routeFromHAR(). - New option
namein methodTracing.startChunk().
Browser Versions
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 111
- Microsoft Edge 111
v1.31.0
New APIs
New assertion assertThat(locator).isInViewport() ensures that locator points to an element that intersects viewport, according to the intersection observer API.
Locator locator = page.getByRole(AriaRole.BUTTON);
// Make sure at least some part of element intersects viewport.
assertThat(locator).isInViewport();
// Make sure element is fully outside of viewport.
assertThat(locator).not().isInViewport();
// Make sure that at least half of the element intersects viewport.
assertThat(locator).isInViewport(new LocatorAssertions.IsInViewportOptions().setRatio(0.5));Miscellaneous
- DOM snapshots in trace viewer can be now opened in a separate window.
- New option
setMaxRedirectsfor methodRoute.fetch. - Official docker images now include Node 18 instead of Node 16.
Browser Versions
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 110
- Microsoft Edge 110
