diff --git a/app/src/androidTest/java/org/mozilla/fenix/helpers/TestHelper.kt b/app/src/androidTest/java/org/mozilla/fenix/helpers/TestHelper.kt index 8c1f78e57..0939150f5 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/helpers/TestHelper.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/helpers/TestHelper.kt @@ -8,8 +8,12 @@ import android.net.Uri import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.longClick import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.uiautomator.By import androidx.test.uiautomator.UiScrollable import androidx.test.uiautomator.UiSelector +import androidx.test.uiautomator.Until +import org.mozilla.fenix.helpers.ext.waitNotNull +import org.mozilla.fenix.ui.robots.mDevice object TestHelper { fun scrollToElementByText(text: String): UiScrollable { @@ -19,6 +23,10 @@ object TestHelper { } fun longTapSelectItem(url: Uri) { + mDevice.waitNotNull( + Until.findObject(By.text(url.toString())), + TestAssetHelper.waitingTime + ) onView(withText(url.toString())).perform(longClick()) } } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt index c6ec8901e..8bb57f93d 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt @@ -71,8 +71,8 @@ class HistoryTest { navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { verifyHistoryMenuView() verifyVisitedTimeTitle() @@ -88,8 +88,8 @@ class HistoryTest { navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { openOverflowMenu() clickThreeDotMenuDelete() @@ -98,14 +98,13 @@ class HistoryTest { } @Test - @Ignore("Temp disable flakey test - see: https://github.com/mozilla-mobile/fenix/issues/5462") fun deleteAllHistoryTest() { val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { clickDeleteHistoryButton() verifyDeleteConfirmationMessage() @@ -121,8 +120,8 @@ class HistoryTest { navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) } @@ -166,8 +165,8 @@ class HistoryTest { navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) openActionBarOverflowOrOptionsMenu(activityTestRule.getActivity()) @@ -181,17 +180,18 @@ class HistoryTest { } @Test - @Ignore("Temp disable flakey test - see: https://github.com/mozilla-mobile/fenix/issues/5462") fun deleteMultipleSelectionTest() { val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2) navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openNavigationToolbar { + }.openHomeScreen {} + + navigationToolbar { }.enterURLAndEnterToBrowser(secondWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) longTapSelectItem(secondWebPage.url) @@ -211,8 +211,8 @@ class HistoryTest { navigationToolbar { }.enterURLAndEnterToBrowser(firstWebPage.url) { - }.openHomeScreen { }.openThreeDotMenu { + }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) } @@ -237,8 +237,8 @@ class HistoryTest { } } - @Ignore("Test will be included after back navigation from History Fragment is sorted") @Test + @Ignore("Test will be included after back navigation from History Fragment is sorted") fun verifyCloseMenu() { homeScreen { }.openThreeDotMenu { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt index 503b07302..94a91eea1 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt @@ -15,10 +15,14 @@ import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withParent import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.uiautomator.By +import androidx.test.uiautomator.Until import org.hamcrest.Matchers import org.hamcrest.Matchers.allOf import org.mozilla.fenix.R +import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime import org.mozilla.fenix.helpers.click +import org.mozilla.fenix.helpers.ext.waitNotNull /** * Implementation of Robot Pattern for the history menu. @@ -27,9 +31,25 @@ class HistoryRobot { fun verifyHistoryMenuView() = assertHistoryMenuView() - fun verifyEmptyHistoryView() = assertEmptyHistoryView() + fun verifyEmptyHistoryView() { + mDevice.waitNotNull( + Until.findObject( + By.text("No history here") + ), + waitingTime + ) + assertEmptyHistoryView() + } - fun verifyVisitedTimeTitle() = assertVisitedTimeTitle() + fun verifyVisitedTimeTitle() { + mDevice.waitNotNull( + Until.findObject( + By.text("Last 24 hours") + ), + waitingTime + ) + assertVisitedTimeTitle() + } fun verifyFirstTestPageTitle(title: String) = assertTestPageTitle(title) @@ -40,6 +60,12 @@ class HistoryRobot { fun verifyHomeScreen() = HomeScreenRobot().verifyHomeScreen() fun openOverflowMenu() { + mDevice.waitNotNull( + Until.findObject( + By.res("org.mozilla.fenix.debug:id/overflow_menu") + ), + waitingTime + ) overflowMenu().click() } @@ -48,6 +74,7 @@ class HistoryRobot { } fun clickDeleteHistoryButton() { + mDevice.waitNotNull(Until.findObject(By.text("Delete history")), waitingTime) deleteAllHistoryButton().click() } @@ -59,18 +86,18 @@ class HistoryRobot { } class Transition { - fun goBack(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition { + fun goBack(interact: HistoryRobot.() -> Unit): Transition { goBackButton().click() HistoryRobot().interact() - return HistoryRobot.Transition() + return Transition() } - fun closeMenu(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition { + fun closeMenu(interact: HistoryRobot.() -> Unit): Transition { closeButton().click() HistoryRobot().interact() - return HistoryRobot.Transition() + return Transition() } } }