Repository navigation
[Feature] Visual comparisons port to java library #1040
Description
Activity
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 and Johannes KimmeyerIn 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');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.Yury Semikhatsky (@yury-s)
Could the following features be added?
We would appreciate it if you could add them.assertThat(page).hasScreenshot(path)
Reacted by Jack StringerHello 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? :)
Hi Yury Semikhatsky (@yury-s),
assertThat(page).hasScreenshot(path)should suffice for our framework's needs. Eagerly waiting for this feature.Also giving it a star. Would be really good to have this also in java.
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.
Reacted by NikkTod, Buzinator, Paweł Bandura, nikosanctioned, windyujp, zaykonatallia and Jack StringerWould also love to see this in Java
Would love to see this feature!
jakubvojacek-wandera commented
on May 31, 2024 More actionsIs there any update on this topic? I would love to have it in Java.
Reacted by zaykonatallia, Grigoriy Didorenko, ashwink-tech-access, Thomas Ægidiussen Jensen (ELS-AAL), Søren Aasbjerg Andersen and Maksym Otryzhkoandersens1 commented
on Oct 31, 2024 More actionsI would really like this feature to be ported, to avoid importing extra 3rd party libraries. +1!
Reacted by Thomas Ægidiussen Jensen (ELS-AAL)+1
Reacted by Søren Aasbjerg Andersenxgidiussenjensent-els commented
on Nov 1, 2024 More actionsWe 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.
Reacted by Søren Aasbjerg Andersen, Denis and CrepeClownthulasipavankumar commented
on Jun 17, 2025 More actions+1
would be a great featureReacted by CrepeClown+1 Would love to see this added to playwright-java
+1
+1
+1
Any update, Yury Semikhatsky (@yury-s)?
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.
It would also help to have a BufferedImage instead of a byte array as it is much easier to obtain pixel data.
Yury Semikhatsky (@yury-s) can you please check the PR review it and merge if it is good?
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
Yury Semikhatsky (@yury-s) +1 for this feature. It would be really useful for our use case.
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.