On Fri, 19 Sep 2025 10:18:52 GMT, Jayathirth D V <[email protected]> wrote:

>> We are seeing very rare intermittent failures in RegionBackgroundFillUITest 
>> & RegionBackgroundImageUITest tests in linux. We already have 
>> [JDK-8328217](https://bugs.openjdk.org/browse/JDK-8328217) to fix this issue.
>> 
>> To identify the root cause better, we want to capture the test content when 
>> it is failing using ScreenCaptureTestWatcher utility.
>> 
>> Since we wan to capture the test window before test stage is cleared. We are 
>> now clearing the test stage and next test setup. Initially tried updating 
>> this behaviour in `VisualTestBase` itself, but that causes tests like 
>> `test.robot.test3d.PointLightIlluminationTest` as it overrides the test 
>> setup functions.
>> 
>> This change is tested to make sure ScreenCaptureTestWatcher takes 
>> appropriate screen capture on failure and CI full headful test run is green.
>
> Jayathirth D V has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Add missing initialization logic

tests/system/src/test/java/test/robot/javafx/scene/layout/RegionBackgroundImageUITest.java
 line 57:

> 55:     @BeforeEach
> 56:     public void doSetup() {
> 57:         runAndWait(() -> {

suggestion:

we've got `Util::shutdown()` which `hide()`s all the windows then calls 
`Platform::exit`.

we could add `Util::hideAllWindows(Runnable)` that can be used in these tests, 
and remove stages from the `VisualTestBase class`:


    /**
     * This synchronous method first hides all the open {@code Window}s in the 
platform thread,
     * then invokes {@link Platform.exit()}.
     */
    public static void shutdown() {
        hideAllWindows(Platform::exit);
    }

    /// Hides all open `Window`s then invokes `after` (if non-null) in the FX 
Application Thread.
    public static void hideAllWindows(Runnable after) {
        runAndWait(() -> {
            List.
                copyOf(Window.getWindows()).
                forEach(Window::hide);
            if (after != null) {
                after.run();
            }
        });
    }


What do you think?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1913#discussion_r2363246828

Reply via email to