diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt index 7a5d4341e6..a32380d59a 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt @@ -44,6 +44,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.ext.components import org.mozilla.fenix.helpers.Constants.LONG_CLICK_DURATION import org.mozilla.fenix.helpers.Constants.RETRY_COUNT +import org.mozilla.fenix.helpers.MatcherHelper import org.mozilla.fenix.helpers.SessionLoadedIdlingResource import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeLong @@ -911,22 +912,32 @@ class BrowserRobot { } fun openTabDrawer(interact: TabDrawerRobot.() -> Unit): TabDrawerRobot.Transition { - mDevice.waitForObjects( - mDevice.findObject( - UiSelector() - .resourceId("$packageName:id/mozac_browser_toolbar_browser_actions"), - ), - waitingTime, - ) - - tabsCounter().click() - - mDevice.waitForObjects( - mDevice.findObject( - UiSelector().resourceId("$packageName:id/new_tab_button"), - ), - waitingTime, - ) + for (i in 1..RETRY_COUNT) { + try { + mDevice.waitForObjects( + mDevice.findObject( + UiSelector() + .resourceId("$packageName:id/mozac_browser_toolbar_browser_actions"), + ), + waitingTime, + ) + + tabsCounter().click() + assertTrue( + MatcherHelper.itemWithResId("$packageName:id/new_tab_button") + .waitForExists(waitingTime), + ) + + break + } catch (e: AssertionError) { + if (i == RETRY_COUNT) { + throw e + } else { + mDevice.waitForIdle() + } + } + } + assertTrue(MatcherHelper.itemWithResId("$packageName:id/new_tab_button").waitForExists(waitingTime)) TabDrawerRobot().interact() return TabDrawerRobot.Transition()