You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Feature] Visual comparisons port to java library #1040
Playwright node.js already has "Visual comparisons" functionality which can be used for visual regression testing, we need the same in playwright java library as well.
Reacted by bmarcy-me, Lyubomir Ivanov, Tahanima Chowdhury, mcturtle987, Azat Ismagilov, Ignas Čiplys, Mantas Gurskis, Erikas Čeponis, Alex, Paweł Bandura and 34 more
This is a part of playwright test runner in node.js world. The test runner manages the screenshot files and directories, generating names for them etc. We can expose the image matching functions but JUnit/TestNG don't have built in support for managing test artifacts and we don't have our own runner in Java. Do you think that having something like assertThat(page).hasScreenshot(path) would be sufficient?
Reacted by Buzinator, Coty Rosenblath, CrepeClown, nikosanctioned, AndyTomicki, Ignas Čiplys, zaykonatallia, Johannes Kimmeyer and karthik-selvan-8298
In our framework we are using listeners to capture screenshots and manage file names, so it would be good to have atleast the functionality already present in node.js version.
From documentation i see there are assertions involving pixel threshold and content.
Selenium has ashot library which supports visual testing on below parameters:
comparison of screenshots of pages;
comparing screenshots of pages + ignoring specified elements (dynamic content, etc.);
comparison of screenshots of elements;
breakpoints – you can compare screenshots of pages or elements with different widths. The default is 3 breakpoints – 1920px, 768px, 360px;
auto-generation of expected screenshots;
you can write tests as ordinary functional automation tests, there are no restrictions – this is important because sometimes it may be necessary to perform some complex actions before taking a screenshot.
Hello Yury Semikhatsky (@yury-s) - assertThat(page).hasScreenshot(path) would be great feature to have, exposing the image matching functions is the important thing here.
Is there any timeline for that feature to be developed? :)
I have been attempting to implement visual comparisons manually, and have been finding that the screenshots from Java Playwright vary in colours, positions and dimensions, while those from TypeScript do not. A first-party solution for visual comparisons in Java would be much appreciated.
Hi, the Playwright bot reviewed the current Java APIs and this thread on my behalf.
This remains a valid feature request that needs a Java API design decision. Java provides screenshot capture, but not hasScreenshot() or visual baseline assertions. matchesAriaSnapshot() compares accessibility structure rather than pixels.
The open question is whether Java should compare against a caller managed expected image, or also manage baseline naming, updates and failure artifacts. The earlier API suggestion is at #1040 (comment). The proposal at #1950 was closed without merging.
Activity
yury-s commentedon Aug 31, 2022
This is a part of playwright test runner in node.js world. The test runner manages the screenshot files and directories, generating names for them etc. We can expose the image matching functions but JUnit/TestNG don't have built in support for managing test artifacts and we don't have our own runner in Java. Do you think that having something like
assertThat(page).hasScreenshot(path)would be sufficient?kabhinav26 commentedon Sep 5, 2022
In our framework we are using listeners to capture screenshots and manage file names, so it would be good to have atleast the functionality already present in node.js version.
From documentation i see there are assertions involving pixel threshold and content.
await expect(page).toHaveScreenshot({ maxDiffPixels: 100 });
expect(await page.textContent('.hero__title')).toMatchSnapshot('hero.txt');
kabhinav26 commentedon Sep 5, 2022
Selenium has ashot library which supports visual testing on below parameters:
comparison of screenshots of pages;
comparing screenshots of pages + ignoring specified elements (dynamic content, etc.);
comparison of screenshots of elements;
breakpoints – you can compare screenshots of pages or elements with different widths. The default is 3 breakpoints – 1920px, 768px, 360px;
auto-generation of expected screenshots;
you can write tests as ordinary functional automation tests, there are no restrictions – this is important because sometimes it may be necessary to perform some complex actions before taking a screenshot.
tsachi368 commentedon Oct 31, 2022
Yury Semikhatsky (@yury-s)
Could the following features be added?
We would appreciate it if you could add them.
assertThat(page).hasScreenshot(path)
NikkTod commentedon Jan 8, 2023
Hello Yury Semikhatsky (@yury-s) - assertThat(page).hasScreenshot(path) would be great feature to have, exposing the image matching functions is the important thing here.
Is there any timeline for that feature to be developed? :)
Tahanima commentedon Feb 24, 2023
Hi Yury Semikhatsky (@yury-s),
assertThat(page).hasScreenshot(path)should suffice for our framework's needs. Eagerly waiting for this feature.morepe commentedon Mar 3, 2023
Also giving it a star. Would be really good to have this also in java.
mcturtle987 commentedon Mar 3, 2023
We would really need this. We would like to avoid having java and nodejs separate modules just because this feature is not available in java atm.
buzinator-be commentedon May 30, 2023
Would also love to see this in Java
flxtcha commentedon Nov 8, 2023
Would love to see this feature!
jakubvojacek-wandera commentedon May 31, 2024
Is there any update on this topic? I would love to have it in Java.
andersens1 commentedon Oct 31, 2024
I would really like this feature to be ported, to avoid importing extra 3rd party libraries. +1!
youvegotnigel commentedon Nov 1, 2024
+1
xgidiussenjensent-els commentedon Nov 1, 2024
We also need to be able do visual comparisons in playwright-java and it would be really nice to not have to resort to 3rd party libraries.
thulasipavankumar commentedon Jun 17, 2025
+1
would be a great feature
CrepeClown commentedon Jun 17, 2025
+1 Would love to see this added to playwright-java
ksn5 commentedon Oct 2, 2025
+1
nstreltsov commentedon Nov 25, 2025
+1
nobesio commentedon Dec 22, 2025
+1
salpelter commentedon Feb 22, 2026
Any update, Yury Semikhatsky (@yury-s)?
jack5github commentedon Mar 2, 2026
I have been attempting to implement visual comparisons manually, and have been finding that the screenshots from Java Playwright vary in colours, positions and dimensions, while those from TypeScript do not. A first-party solution for visual comparisons in Java would be much appreciated.
leluna commentedon Jun 22, 2026
It would also help to have a BufferedImage instead of a byte array as it is much easier to obtain pixel data.
anilreddy commentedon Jul 22, 2026
Yury Semikhatsky (@yury-s) can you please check the PR review it and merge if it is good?
anilreddy commentedon Aug 4, 2026
Yury Semikhatsky (@yury-s) Please let me know if you want to assign this ticket to me or someone else anything is fine for me. Thanks
ksn5 commentedon Aug 6, 2026
Yury Semikhatsky (@yury-s) +1 for this feature. It would be really useful for our use case.
dcrousso commentedon Oct 21, 2026
Hi, the Playwright bot reviewed the current Java APIs and this thread on my behalf.
This remains a valid feature request that needs a Java API design decision. Java provides screenshot capture, but not
hasScreenshot()or visual baseline assertions.matchesAriaSnapshot()compares accessibility structure rather than pixels.The open question is whether Java should compare against a caller managed expected image, or also manage baseline naming, updates and failure artifacts. The earlier API suggestion is at #1040 (comment). The proposal at #1950 was closed without merging.
For now, screenshots can be saved or returned as
byte[]for an external comparison workflow: https://playwright.dev/java/docs/screenshots#capture-into-buffer.