RFR: 8354219 : Automate javax/swing/JComboBox/ComboPopupBug.java
Alexey Ivanov
aivanov at openjdk.org
Mon Apr 14 18:21:42 UTC 2025
On Mon, 14 Apr 2025 14:36:26 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:
>> This test was designed to manually verify that clicking on the JComboBox when the frame containing it is about to close does not cause an IllegalStateException.
>>
>> The test allowed the tester extra time to click on the JComboBox when closing the frame by adding a Thread.sleep() in the close button handler.
>>
>> In this test, a JComboBox is displayed with a Close button at the bottom. The tester should click the Close button, then try to click the JComboBox arrow button to display the popup.
>>
>> In the automated test, we save the JComboBox location size before closing the frame. We then use this information to click on the JComboBox right before the frame is closed.
>
> test/jdk/javax/swing/JComboBox/ComboPopupBug.java line 80:
>
>> 78: }
>> 79: catch (Exception e) {
>> 80: throw new RuntimeException(e);
>
> Swing is not thread-safe, you should get the location and size on EDT too.
> Suggestion:
>
> try {
> SwingUtilities.invokeAndWait(() ->{
> comboBoxLocation = comboBox.getLocationOnScreen();
> comboBoxSize = comboBox.getSize();
>
> closeButton.doClick();
> });
> }
> catch (Exception e) {
> throw new RuntimeException(e);
By the way, since the `closeButton` is clicked on EDT, as it should, you can put both `comboBoxLocation` and `comboBoxSize` into `clickComboBox()` where they're used.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24624#discussion_r2042673896
More information about the client-libs-dev
mailing list