From 28222df29c4fd71ebffd336bf3480b6b50d90d73 Mon Sep 17 00:00:00 2001 From: Christian Sadilek Date: Tue, 30 Nov 2021 15:47:18 -0500 Subject: [PATCH] Fix BrowserRobot.goToHomescreen to wait for home screen to be rendered It was previously just waiting for the application to be idle, which is not a reliable check in case the navigation to home is triggered on completion of an async operation i.e., the app / main thread may be idle, but the navigation to home hasn't completed yet. goToHomeScreen further needs to wait for the browser fragment's home button to exist before clicking it. --- .../java/org/mozilla/fenix/ui/robots/BrowserRobot.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 09d7bb151..24debb7c9 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 @@ -605,10 +605,19 @@ class BrowserRobot { } fun goToHomescreen(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition { + assertTrue( + mDevice.findObject(UiSelector().description("Home screen")) + .waitForExists(waitingTime) + ) + onView(withContentDescription("Home screen")) .check(matches(isDisplayed())) .click() - mDevice.waitForIdle() + + assertTrue( + mDevice.findObject(UiSelector().resourceId("$packageName:id/homeLayout")) + .waitForExists(waitingTime) + ) HomeScreenRobot().interact() return HomeScreenRobot.Transition()