diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MMenuItemTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MMenuItemTest.java index ab765e1c1d1..69d1216a37e 100644 --- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MMenuItemTest.java +++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/MMenuItemTest.java @@ -763,6 +763,9 @@ public void execute(MUIElement uiElement, MMenuItem menuItem, activePart.getContext().set("key", "active"); inactivePart.getContext().set("key", "inactive"); + // Ensure all pending UI events are processed before triggering the menu item + contextRule.spinEventLoop(); + assertFalse(executed[0]); Object widget1 = menuItem.getWidget(); @@ -836,6 +839,10 @@ public void execute(MUIElement uiElement, MMenuItem menuItem, activePart.getContext().set("key", "active"); inactivePart.getContext().set("key", "inactive"); + // Ensure all pending UI events are processed before triggering the menu item + // This prevents race conditions where the handler may not be fully registered yet + contextRule.spinEventLoop(); + assertFalse(executed[0]); assertEquals(activePart, window.getContext().get(EPartService.class) .getActivePart());