On Sat, 12 Jul 2025 10:35:23 GMT, Marius Hanl <mh...@openjdk.org> wrote:

>> Currently, the VirtualFlowTestUtils used ONLY for tests has many utility 
>> methods to get and do something with the VirtualFlow of Virtualized Controls.
>> 
>> It has one flaw: It may creates a temporary Stage with the StageLoader, when 
>> the Control was never inside a Scene (and Stage) yet. This is done to get 
>> the VirtualFlow, which is not possible otherwise.
>> 
>> Take the following test code:
>> 
>> VirtualFlowTestUtils.clickOnRow(tableView, 2);
>> VirtualFlowTestUtils.clickOnRow(tableView, 4);
>> 
>> 
>> What it does it to create a Stage for the first method and dispose it after. 
>> And create another Stage for the second method and dispose it after.
>> 
>> This does not test a realistic scenario and the chance is quite high that 
>> developers used that methods without even knowing that it contains such 
>> logic.
>> 
>> So the idea is to remove the StageLoader code from VirtualFlowTestUtils and 
>> rather use it in the Test code before calling the Util methods.
>> 
>> For the example above, this would result in:
>> 
>> stageLoader = new StageLoader(tableView);
>> VirtualFlowTestUtils.clickOnRow(tableView, 2);
>> VirtualFlowTestUtils.clickOnRow(tableView, 4);
>> 
>> 
>> The stageLoader should be disposed in an @AfterEach.
>> 
>> Note: Nearly all touched tests are indeed much older test code. New tests 
>> are not affected and already use it correcty.
>> Sometimes a call to `Toolkit.getToolkit().firePulse();` was needed. 
>> Previously, creating a new Stage for every call to the util methods did that 
>> implicitly.
>
> Marius Hanl has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Exception message

Marked as reviewed by angorya (Reviewer).

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

PR Review: https://git.openjdk.org/jfx/pull/1829#pullrequestreview-3016630279

Reply via email to