Releases: microsoft/playwright-java
Release list
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
v1.30.0
🎉 Happy New Year 🎉
Maintenance release with bugfixes and new browsers only.
Browser Versions
- Chromium 110.0.5481.38
- Mozilla Firefox 108.0.2
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 109
- Microsoft Edge 109
v1.29.0
New APIs
-
New method
Route.fetch:page.route("**/api/settings", route -> { // Fetch original settings. APIResponse response = route.fetch(); // Force settings theme to a predefined value. String body = response.text().replace("\"theme\":\"default\"", "\"theme\":\"Solorized\""); // Fulfill with modified data. route.fulfill(new Route.FulfillOptions().setResponse(response).setBody(body)); });
-
New method
Locator.allto iterate over all matching elements:// Check all checkboxes! Locator checkboxes = page.getByRole(AriaRole.CHECKBOX); for (Locator checkbox : checkboxes.all()) checkbox.check();
-
Locator.selectOptionmatches now by value or label:<select multiple> <option value="red">Red</div> <option value="green">Green</div> <option value="blue">Blue</div> </select>
element.selectOption("Red");
Browser Versions
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 108
- Microsoft Edge 108
v1.28.1
Highlights
This patch release includes the following bug fixes:
#1130 - [Bug] Chaining Locator.getByRole() returns null
microsoft/playwright#18920 - [BUG] [expanded=false] in role selector returns elements without aria-expanded attribute
Browser Versions
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 107
- Microsoft Edge 107
v1.28.0
Highlights
Playwright Tools
- Live Locators in CodeGen. Generate a locator for any element on the page using "Explore" tool.
New APIs
Browser Versions
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
This version was also tested against the following stable channels:
- Google Chrome 107
- Microsoft Edge 107
v1.27.1
Highlights
This patch release includes the following bug fixes:
microsoft/playwright#18010 - fix(generator): generate nice locators for arbitrary selectors
microsoft/playwright#17955 - [Question] Github Actions test compatibility check failed mitigation?
microsoft/playwright#17952 - fix: fix typo in treeitem role typing
Browser Versions
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
This version was also tested against the following stable channels:
- Google Chrome 106
- Microsoft Edge 106
