diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java index 68dee301d34..17c04ae7e64 100644 --- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java +++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dialogs/ResourceInitialSelectionTest.java @@ -82,6 +82,9 @@ public void testSingleSelectionAndNoInitialSelectionWithInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + DisplayHelper.waitForCondition(display, 3000, () -> !getSelectedItems(dialog).isEmpty()); + List selected = getSelectedItems(dialog); assertFalse("One file should be selected by default", selected.isEmpty()); @@ -100,6 +103,10 @@ public void testSingleSelectionAndOneInitialSelectionWithInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + DisplayHelper.waitForCondition(display, 3000, + () -> asList(FILES.get("foo.txt")).equals(getSelectedItems(dialog))); + List selected = getSelectedItems(dialog); assertEquals("One file should be selected by default", asList(FILES.get("foo.txt")), selected); @@ -119,6 +126,14 @@ public void testSingleSelectionAndOneInitialNonExistingSelectionWithInitialPatte dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + // Wait for table to be populated (even if selection remains empty) + DisplayHelper.waitForCondition(display, 3000, () -> { + Table table = (Table) ((Composite) ((Composite) ((Composite) dialog.getShell().getChildren()[0]) + .getChildren()[0]).getChildren()[0]).getChildren()[3]; + return table.getItemCount() > 0; + }); + List selected = getSelectedItems(dialog); assertTrue("No file should be selected by default", selected.isEmpty()); @@ -136,6 +151,14 @@ public void testSingleSelectionAndOneInitialSelectionWithoutInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + // Wait for table to be populated (even if selection remains empty) + DisplayHelper.waitForCondition(display, 3000, () -> { + Table table = (Table) ((Composite) ((Composite) ((Composite) dialog.getShell().getChildren()[0]) + .getChildren()[0]).getChildren()[0]).getChildren()[3]; + return table.getItemCount() > 0; + }); + List selected = getSelectedItems(dialog); assertTrue("No file should be selected by default", selected.isEmpty()); @@ -155,6 +178,14 @@ public void testSingleSelectionAndOneFilteredSelection() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + // Wait for table to be populated (even if selection remains empty) + DisplayHelper.waitForCondition(display, 3000, () -> { + Table table = (Table) ((Composite) ((Composite) ((Composite) dialog.getShell().getChildren()[0]) + .getChildren()[0]).getChildren()[0]).getChildren()[3]; + return table.getItemCount() > 0; + }); + List selected = getSelectedItems(dialog); assertTrue("No file should be selected by default", selected.isEmpty()); @@ -174,6 +205,10 @@ public void testSingleSelectionAndTwoInitialSelectionsWithInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + DisplayHelper.waitForCondition(display, 3000, + () -> asList(FILES.get("foo.txt")).equals(getSelectedItems(dialog))); + List selected = getSelectedItems(dialog); assertEquals("The first file should be selected by default", asList(FILES.get("foo.txt")), selected); @@ -192,6 +227,9 @@ public void testMultiSelectionAndNoInitialSelectionWithInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + DisplayHelper.waitForCondition(display, 3000, () -> !getSelectedItems(dialog).isEmpty()); + List selected = getSelectedItems(dialog); assertFalse("One file should be selected by default", selected.isEmpty()); @@ -211,6 +249,10 @@ public void testMultiSelectionAndOneInitialSelectionWithInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + DisplayHelper.waitForCondition(display, 3000, + () -> asList(FILES.get("foo.txt")).equals(getSelectedItems(dialog))); + List selected = getSelectedItems(dialog); assertEquals("One file should be selected by default", asList(FILES.get("foo.txt")), selected); @@ -228,6 +270,14 @@ public void testMultiSelectionAndOneInitialSelectionWithoutInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + // Wait for table to be populated (even if selection remains empty) + DisplayHelper.waitForCondition(display, 3000, () -> { + Table table = (Table) ((Composite) ((Composite) ((Composite) dialog.getShell().getChildren()[0]) + .getChildren()[0]).getChildren()[0]).getChildren()[3]; + return table.getItemCount() > 0; + }); + List selected = getSelectedItems(dialog); assertTrue("No file should be selected by default", selected.isEmpty()); @@ -247,6 +297,14 @@ public void testMultiSelectionAndTwoInitialNonExistingSelectionWithInitialPatter dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + // Wait for table to be populated (even if selection remains empty) + DisplayHelper.waitForCondition(display, 3000, () -> { + Table table = (Table) ((Composite) ((Composite) ((Composite) dialog.getShell().getChildren()[0]) + .getChildren()[0]).getChildren()[0]).getChildren()[3]; + return table.getItemCount() > 0; + }); + List selected = getSelectedItems(dialog); assertTrue("No file should be selected by default", selected.isEmpty()); @@ -266,8 +324,12 @@ public void testMultiSelectionAndSomeInitialNonExistingSelectionWithInitialPatte dialog.open(); dialog.refresh(); - List selected = getSelectedItems(dialog); + Display display = PlatformUI.getWorkbench().getDisplay(); Set expectedSelection = new HashSet<>(asList(FILES.get("bar.txt"), FILES.get("foofoo"))); + DisplayHelper.waitForCondition(display, 3000, + () -> expectedSelection.equals(new HashSet<>(getSelectedItems(dialog)))); + + List selected = getSelectedItems(dialog); boolean allInitialElementsAreSelected = expectedSelection.equals(new HashSet<>(selected)); assertTrue("Two files should be selected by default", allInitialElementsAreSelected); @@ -288,6 +350,12 @@ public void testMultiSelectionAndTwoInitialSelectionsWithInitialPattern() { dialog.open(); dialog.refresh(); + Display display = PlatformUI.getWorkbench().getDisplay(); + DisplayHelper.waitForCondition(display, 3000, () -> { + List selected = getSelectedItems(dialog); + return selected.containsAll(initialSelection) && initialSelection.containsAll(selected); + }); + List selected = getSelectedItems(dialog); boolean initialElementsAreSelected = selected.containsAll(initialSelection) && initialSelection.containsAll(selected); @@ -310,8 +378,14 @@ public void testMultiSelectionAndTwoInitialFilteredSelections() { dialog.open(); dialog.refresh(); - List selected = getSelectedItems(dialog); + Display display = PlatformUI.getWorkbench().getDisplay(); List expectedSelection = asList(FILES.get("foo.txt"), FILES.get("bar.txt")); + DisplayHelper.waitForCondition(display, 3000, () -> { + List selected = getSelectedItems(dialog); + return selected.containsAll(expectedSelection) && expectedSelection.containsAll(selected); + }); + + List selected = getSelectedItems(dialog); boolean initialElementsAreSelected = selected.containsAll(expectedSelection) && expectedSelection.containsAll(selected);