RFR: 8298500: Create test to initially show stage with various attributes (iconified, maximized, full screen)

Lukasz Kostyra lkostyra at openjdk.org
Wed Sep 13 15:35:48 UTC 2023


On Wed, 13 Sep 2023 14:58:21 GMT, Andy Goryachev <angorya at openjdk.org> wrote:

>> PR adds tests mentioned in the title - a new `AttributesTest` class is added testing iconification, maximization and full-screen-ification of a Stage.
>> 
>> All variants are tested with decorated stage style.
>> 
>> Iconification is tested via overlaying two stages on top of one another, and then iconifying the top one - this is similar to already existing `IconifyTest.java` but it tests just the iconfication process and nothing more.
>> 
>> Maximization and FullScreen are both tested by creating two stages _not_ overlapping each other. After maximization/fullscreen top stage (being always on top as well) should cover the bottom stage. Moreover, FullScreen and Maximize are differentiated by checking if window decoration exists - maximized Stage will have its decoration taking space on top of the screen, whereas FullScreen one will not.
>> 
>> **NOTE:** on macOS I had issues with `getColor()` returning a valid color when called a second time. This only happened on macOS and with FullScreen test (others worked fine). Unfortunately I couldn't figure out why it returned (0, 0, 0, 255) or (255, 255, 255, 255). To mitigate that I moved color checks into separate `runAndWait()`-s with a small sleep between them, which seemed to help `getColor()` return proper values.
>> 
>> Verified to work on Windows 11, macOS and Linux.
>
> tests/system/src/test/java/test/robot/javafx/stage/AttributesTest.java line 42:
> 
>> 40: import javafx.scene.layout.Pane;
>> 41: import javafx.scene.paint.Color;
>> 42: import static junit.framework.Assert.assertFalse;
> 
> should we use junit5 for new tests?

Fair point, import autocomplete got me there.

> tests/system/src/test/java/test/robot/javafx/stage/AttributesTest.java line 48:
> 
>> 46: import static test.util.Util.TIMEOUT;
>> 47: 
>> 48: public class AttributesTest extends VisualTestBase {
> 
> a brief javadoc explaining what this test does would be nice.
> also, perhaps the class name could be more descriptive, i.e. StageAttributesTest or something like that.

I'll add the javadoc.

I skipped the `Stage` prefix since this test is in a directory of `Stage`-related tests. Should I still add it despite that?

> tests/system/src/test/java/test/robot/javafx/stage/AttributesTest.java line 56:
> 
>> 54:     private static final Color TOP_COLOR = Color.RED;
>> 55: 
>> 56:     private static final double TOLERANCE = 0.07;
> 
> just curious: how did we arrive at this value?

I borrowed it from `IconifyTest.java` which most of this file is based on. Hard for me to say why is it exactly that.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1240#discussion_r1324707762
PR Review Comment: https://git.openjdk.org/jfx/pull/1240#discussion_r1324707030
PR Review Comment: https://git.openjdk.org/jfx/pull/1240#discussion_r1324705760


More information about the openjfx-dev mailing list