RFR: 8328716: [TestBug] Screen capturing utility for failed tests

Kevin Rushforth kcr at openjdk.org
Fri Mar 28 21:35:10 UTC 2025


On Fri, 28 Mar 2025 21:21:11 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

>> Introduce a facility, in the form of JUnit5 annotation, to allow for capturing a desktop screenshot of a failed test.
>> 
>> The primary intent is to be able to debug an intermittent test case, rather than wholesale addition of the new annotation to all the tests.
>> 
>> A possible improvement could be to output a data URL
>> 
>> `data:image/png;base64,iVBORw0KGgoAAAANSUhEU...`
>> 
>> so it can be rendered in Safari (Chrome truncates the image possibly due to following a url length limit)
>
> tests/system/src/test/java/test/util/ScreenCaptureTestWatcher.java line 77:
> 
>> 75:     public void testFailed(ExtensionContext extensionContext, Throwable err) {
>> 76:         err.printStackTrace();
>> 77:         System.err.println(generateScreenshot("Screenshot:{", "}"));
> 
> When does the `testFailed` method run? After a failing `@Test` method that throws the exception? What if there is more than one failing test? Ideally what we want is something that runs after all failing tests, but before the `@AfterEach` method.

Or... maybe we really do want to take a screen dump for each failing test in a test class.

Also, what happens if one of the lifecycle methods is the one that throws the error (e.g., `Before` `After`, etc)?

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1746#discussion_r2019426801


More information about the openjfx-dev mailing list