Skip to content

Releases: microsoft/playwright-java

v1.39.0

16 Oct 17:16
f38f977

Choose a tag to compare

Evergreen browsers update.

Browser Versions

  • Chromium 119.0.6045.9
  • Mozilla Firefox 118.0.1
  • WebKit 17.4

This version was also tested against the following stable channels:

  • Google Chrome 118
  • Microsoft Edge 118

v1.38.0

19 Sep 00:55
414abb8

Choose a tag to compare

Trace Viewer Updates

Playwright Trace Viewer

  1. Zoom into time range.
  2. 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

14 Aug 18:30
0a5673b

Choose a tag to compare

New APIs

  • New methods BrowserContext.newCDPSession() and Browser.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

14 Jul 22:05
4095ef4

Choose a tag to compare

Highlights

🏝️ Summer maintenance release.

Browser Versions

  • Chromium 115.0.5790.75
  • Mozilla Firefox 115.0
  • WebKit 17.0

This version was also tested against the following stable channels:

  • Google Chrome 114
  • Microsoft Edge 114

v1.35.1

21 Jun 16:19
6b269ff

Choose a tag to compare

Highlights

#1313 - [BUG]Immediate step of page.pause() always throws null pointer exception with version 1.35.0

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.35.0

13 Jun 00:28
ef86560

Choose a tag to compare

Highlights

  • New option setMaskColor for methods Page.screenshot() and Locator.screenshot() to change default masking color.

  • New uninstall CLI 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

26 May 18:49
24d13d9

Choose a tag to compare

Version 1.34.0

Highlights

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

02 May 20:38
b959765

Choose a tag to compare

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 setHasNot and setHasNotText in Locator.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 the LocatorAssertions.isVisible() that ensures that
    element is both attached & visible.

New APIs

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.0 now serves a Playwright image based on Ubuntu Jammy.
    To use the focal-based image, please use mcr.microsoft.com/playwright/java:v1.33.0-focal instead.

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

27 Mar 23:44
e5de389

Choose a tag to compare

New APIs

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

28 Feb 23:15
80fa0c6

Choose a tag to compare

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 setMaxRedirects for method Route.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