From c09104308df1a0b33dfc130df645b1351f04ac9f Mon Sep 17 00:00:00 2001 From: AndiAJ Date: Tue, 23 Nov 2021 14:00:00 +0200 Subject: [PATCH] [fenix] New text search UI smoke tests --- .../org/mozilla/fenix/ui/ContextMenusTest.kt | 32 +++++++++++++++++++ .../mozilla/fenix/ui/robots/BrowserRobot.kt | 31 ++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ContextMenusTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ContextMenusTest.kt index c663649aa0..5c033ae189 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ContextMenusTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ContextMenusTest.kt @@ -17,6 +17,7 @@ import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.ui.robots.downloadRobot +import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar /** @@ -235,4 +236,35 @@ class ContextMenusTest { verifyAndroidShareLayout() } } + + @SmokeTest + @Test + fun selectAndSearchTextTest() { + val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + navigationToolbar { + }.enterURLAndEnterToBrowser(genericURL.url) { + longClickAndSearchText("Search", "content") + mDevice.waitForIdle() + verifyTabCounter("2") + verifyUrl("google") + } + } + + @SmokeTest + @Test + fun privateSelectAndSearchTextTest() { + val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + homeScreen { + }.togglePrivateBrowsingMode() + + navigationToolbar { + }.enterURLAndEnterToBrowser(genericURL.url) { + longClickAndSearchText("Private Search", "content") + mDevice.waitForIdle() + verifyTabCounter("2") + verifyUrl("google") + } + } } 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 6a6c389dfb..1dfed6b387 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 @@ -403,6 +403,37 @@ class BrowserRobot { } } + fun longClickAndSearchText(searchButton: String, expectedText: String) { + var currentTries = 0 + while (currentTries++ < 3) { + try { + // Long click desired text + mDevice.waitForWindowUpdate(packageName, waitingTime) + mDevice.findObject(UiSelector().resourceId("$packageName:id/engineView")) + .waitForExists(waitingTime) + mDevice.findObject(UiSelector().textContains(expectedText)).waitForExists(waitingTime) + val link = mDevice.findObject(By.textContains(expectedText)) + link.click(LONG_CLICK_DURATION) + + // Click search from the text selection toolbar + mDevice.findObject(UiSelector().textContains(searchButton)).waitForExists(waitingTime) + val searchText = mDevice.findObject(By.textContains(searchButton)) + searchText.click() + + break + } catch (e: NullPointerException) { + println("Failed to long click desired text: ${e.localizedMessage}") + + // Refresh the page in case the first long click didn't succeed + navigationToolbar { + }.openThreeDotMenu { + }.refreshPage { + mDevice.waitForIdle() + } + } + } + } + fun snackBarButtonClick() { val switchButton = mDevice.findObject(