diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/MenuFixture.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/MenuFixture.kt index 1600a5405725..ac9d7b39dda7 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/MenuFixture.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/fixtures/MenuFixture.kt @@ -18,10 +18,13 @@ package com.intellij.testGuiFramework.fixtures import com.intellij.openapi.util.Ref import com.intellij.openapi.wm.impl.IdeFrameImpl import com.intellij.testGuiFramework.framework.GuiTestUtil +import com.intellij.testGuiFramework.framework.GuiTestUtil.defaultTimeout +import com.intellij.testGuiFramework.framework.GuiTestUtil.toMs import com.intellij.testGuiFramework.impl.GuiTestUtilKt.typeMatcher import org.fest.assertions.Assertions.assertThat import org.fest.swing.core.GenericTypeMatcher import org.fest.swing.core.Robot +import org.fest.swing.driver.JComponentDriver import org.fest.swing.timing.Condition import org.fest.swing.timing.Pause import org.fest.swing.timing.Timeout @@ -128,5 +131,17 @@ class MenuFixture internal constructor(private val myRobot: Robot, private val m } class MenuItemFixture(selfType: Class, robot: Robot, target: JMenuItem) : JComponentFixture( - selfType, robot, target) + selfType, robot, target) { + + init { + replaceDriverWith(MenuItemFixtureDriver(robot)) + } + + //wait for component showing on screen, as a workaround for IDEA-195830 + class MenuItemFixtureDriver(robot: Robot) : JComponentDriver(robot) { + override fun click(jMenuItem: JMenuItem) { + waitForShowing(jMenuItem, defaultTimeout.toMs()) + } + } + } } diff --git a/platform/testGuiFramework/src/com/intellij/testGuiFramework/framework/GuiTestUtil.kt b/platform/testGuiFramework/src/com/intellij/testGuiFramework/framework/GuiTestUtil.kt index 3779d9623d6b..f284beaacf87 100644 --- a/platform/testGuiFramework/src/com/intellij/testGuiFramework/framework/GuiTestUtil.kt +++ b/platform/testGuiFramework/src/com/intellij/testGuiFramework/framework/GuiTestUtil.kt @@ -808,4 +808,6 @@ object GuiTestUtil { tmpFile.toFile().deleteOnExit() } + fun Long.toMs(): Long = this * 1000 + }