From 8714f47b6f773f2901aa32d2ca7557f5a821de97 Mon Sep 17 00:00:00 2001 From: Oana Horvath Date: Thu, 17 Feb 2022 12:12:10 +0200 Subject: [PATCH] run #2 --- .../java/org/mozilla/fenix/ui/SearchTest.kt | 4 +-- .../fenix/ui/robots/HomeScreenRobot.kt | 2 +- .../mozilla/fenix/ui/robots/SearchRobot.kt | 32 +++++++++---------- .../taskcluster/androidTest/flank-x86.yml | 7 ++-- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SearchTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SearchTest.kt index 799b27d60a07..e909f9fe9484 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SearchTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SearchTest.kt @@ -106,7 +106,7 @@ class SearchTest { verifySearchBarEmpty() clickSearchEngineButton(activityTestRule, "DuckDuckGo") typeSearch("mozilla") - verifySearchEngineResults(activityTestRule, "DuckDuckGo", 4) + verifySearchEngineResults(3) clickSearchEngineResult(activityTestRule, "DuckDuckGo") verifySearchEngineURL("DuckDuckGo") } @@ -140,7 +140,7 @@ class SearchTest { @SmokeTest @Test - fun testSearchGroupInRecentlyVisited() { + fun searchGroupShowsInRecentlyVisitedTest() { val firstPage = searchMockServer.url("generic1.html").toString() val secondPage = searchMockServer.url("generic2.html").toString() val searchString = "http://localhost:${searchMockServer.port}/searchResults.html?search={searchTerms}" diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt index b222b122db77..d6b4359afff3 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt @@ -126,7 +126,7 @@ class HomeScreenRobot { fun verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed: Boolean, searchTerm: String, groupSize: Int) { // checks if the search group exists in the Recently visited section - + recentlyVisitedList.waitForExists(waitingTime) scrollToElementByText("Recently visited") if (shouldBeDisplayed) { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SearchRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SearchRobot.kt index a6a862ed1b47..f90b0dcc258c 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SearchRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SearchRobot.kt @@ -7,7 +7,6 @@ package org.mozilla.fenix.ui.robots import androidx.compose.ui.test.ExperimentalTestApi -import androidx.compose.ui.test.assertCountEquals import androidx.compose.ui.test.assertHasClickAction import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.ComposeTestRule @@ -33,6 +32,7 @@ import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.By import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiObject +import androidx.test.uiautomator.UiScrollable import androidx.test.uiautomator.UiSelector import androidx.test.uiautomator.Until import org.hamcrest.CoreMatchers.allOf @@ -77,8 +77,8 @@ class SearchRobot { fun verifySearchEngineButton() = assertSearchButton() fun verifySearchWithText() = assertSearchWithText() - fun verifySearchEngineResults(rule: ComposeTestRule, searchEngineName: String, count: Int) = - assertSearchEngineResults(rule, searchEngineName, count) + fun verifySearchEngineResults(count: Int) = + assertSearchEngineResults(count) fun verifySearchEngineSuggestionResults(rule: ComposeTestRule, searchSuggestion: String) = assertSearchEngineSuggestionResults(rule, searchSuggestion) fun verifyNoSuggestionsAreDisplayed(rule: ComposeTestRule, searchSuggestion: String) = @@ -149,7 +149,7 @@ class SearchRobot { fun clickSearchEngineResult(rule: ComposeTestRule, searchEngineName: String) { mDevice.waitNotNull( Until.findObjects(By.text(searchEngineName)), - TestAssetHelper.waitingTime + waitingTime ) rule.onAllNodesWithText(searchEngineName) @@ -263,17 +263,17 @@ private fun browserToolbarEditView() = mDevice.findObject(UiSelector().resourceId("$packageName:id/mozac_browser_toolbar_edit_url_view")) private fun denyPermissionButton(): UiObject { - mDevice.waitNotNull(Until.findObjects(By.text("Deny")), TestAssetHelper.waitingTime) + mDevice.waitNotNull(Until.findObjects(By.text("Deny")), waitingTime) return mDevice.findObject(UiSelector().text("Deny")) } private fun allowPermissionButton(): UiObject { - mDevice.waitNotNull(Until.findObjects(By.text("Allow")), TestAssetHelper.waitingTime) + mDevice.waitNotNull(Until.findObjects(By.text("Allow")), waitingTime) return mDevice.findObject(UiSelector().text("Allow")) } private fun scanButton(): ViewInteraction { - mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/search_scan_button")), TestAssetHelper.waitingTime) + mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/search_scan_button")), waitingTime) return onView(allOf(withId(R.id.qr_scan_button))) } @@ -285,23 +285,18 @@ private fun searchWrapper() = mDevice.findObject(UiSelector().resourceId("$packa private fun assertSearchEngineURL(searchEngineName: String) { mDevice.waitNotNull( Until.findObject(By.textContains("${searchEngineName.lowercase()}.com/?q=mozilla")), - TestAssetHelper.waitingTime + waitingTime ) onView(allOf(withText(startsWith("${searchEngineName.lowercase()}.com")))) .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))) } -private fun assertSearchEngineResults(rule: ComposeTestRule, searchEngineName: String, count: Int) { - rule.waitForIdle() - +private fun assertSearchEngineResults(minCount: Int) { mDevice.waitForObjects( - mDevice.findObject( - UiSelector().textContains(searchEngineName) - ) + searchSuggestionsList.getChild(UiSelector().index(minCount)) ) - rule.onAllNodesWithText(searchEngineName) - .assertCountEquals(count) + assertTrue(searchSuggestionsList.childCount >= minCount) } private fun assertSearchEngineSuggestionResults(rule: ComposeTestRule, searchResult: String) { @@ -472,3 +467,8 @@ private val awesomeBar = mDevice.findObject(UiSelector().resourceId("$packageName:id/mozac_browser_toolbar_edit_url_view")) private val voiceSearchButton = mDevice.findObject(UiSelector().description("Voice search")) + +private val searchSuggestionsList = + UiScrollable( + UiSelector().className("android.widget.ScrollView") + ) diff --git a/automation/taskcluster/androidTest/flank-x86.yml b/automation/taskcluster/androidTest/flank-x86.yml index 803efb724601..7404b4ab3956 100644 --- a/automation/taskcluster/androidTest/flank-x86.yml +++ b/automation/taskcluster/androidTest/flank-x86.yml @@ -40,7 +40,10 @@ gcloud: test-targets: # - notPackage org.mozilla.fenix.screenshots # - notPackage org.mozilla.fenix.syncintegration - - class org.mozilla.fenix.ui.SearchTest + - class org.mozilla.fenix.ui.SearchTest#shortcutButtonTest + - class org.mozilla.fenix.ui.SearchTest#searchGroupShowsInRecentlyVisitedTest + - class org.mozilla.fenix.ui.SearchTest#noCurrentSearchGroupFromPrivateBrowsingTest + - class org.mozilla.fenix.ui.SearchTest#noRecentlyVisitedSearchGroupInPrivateBrowsingTest - class org.mozilla.fenix.ui.SettingsSearchTest#editCustomSearchEngineTest device: @@ -55,7 +58,7 @@ flank: max-test-shards: -1 # num-test-runs: the amount of times to run the tests. # 1 runs the tests once. 10 runs all the tests 10x - num-test-runs: 5 + num-test-runs: 20 ### Output Style flag ## Output style of execution status. May be one of [verbose, multi, single, compact]. ## For runs with only one test execution the default value is 'verbose', in other cases