Bug 1847211 - New unified search tab UI tests

fenix/118.0
AndiAJ 10 months ago committed by mergify[bot]
parent 4eade0d04f
commit c0f4bfbf89

@ -20,11 +20,13 @@ import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.helpers.Constants
import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.MatcherHelper
import org.mozilla.fenix.helpers.MockBrowserDataHelper.createTabItem
import org.mozilla.fenix.helpers.MockBrowserDataHelper.setCustomSearchEngine
import org.mozilla.fenix.helpers.SearchDispatcher
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestHelper
import org.mozilla.fenix.helpers.TestHelper.exitMenu
import org.mozilla.fenix.helpers.TestHelper.verifyKeyboardVisibility
import org.mozilla.fenix.ui.robots.clickContextMenuItem
import org.mozilla.fenix.ui.robots.clickPageObject
import org.mozilla.fenix.ui.robots.homeScreen
@ -611,4 +613,61 @@ class ComposeSearchTest {
}
}
}
@Test
fun verifySearchTabsItemsTest() {
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod("Tabs")
verifyKeyboardVisibility(isExpectedToBeVisible = true)
verifyScanButtonVisibility(visible = false)
verifyVoiceSearchButtonVisibility(enabled = true)
verifySearchBarPlaceholder(text = "Search tabs")
}
}
@Test
fun verifySearchTabsWithoutOpenTabsTest() {
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod(searchEngineName = "Tabs")
typeSearch(searchTerm = "Mozilla")
verifyNoSuggestionsAreDisplayed(rule = activityTestRule, "Mozilla")
clickClearButton()
verifySearchBarPlaceholder("Search tabs")
}
}
@Test
fun verifySearchTabsWithOpenTabsTest() {
val firstPageUrl = TestAssetHelper.getGenericAsset(searchMockServer, 1)
val secondPageUrl = TestAssetHelper.getGenericAsset(searchMockServer, 2)
createTabItem(firstPageUrl.url.toString())
createTabItem(secondPageUrl.url.toString())
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod(searchEngineName = "Tabs")
typeSearch(searchTerm = "Mozilla")
verifyNoSuggestionsAreDisplayed(rule = activityTestRule, "Mozilla")
clickClearButton()
typeSearch(searchTerm = "generic")
verifyTypedToolbarText("generic")
verifyFirefoxSuggestResults(
rule = activityTestRule,
searchTerm = "generic",
firstPageUrl.url.toString(),
secondPageUrl.url.toString(),
)
}.clickSearchSuggestion(firstPageUrl.url.toString()) {
verifyTabCounter("2")
}.openComposeTabDrawer(activityTestRule) {
verifyOpenTabsOrder(position = 1, title = firstPageUrl.url.toString())
verifyOpenTabsOrder(position = 2, title = secondPageUrl.url.toString())
}
}
}

@ -23,6 +23,7 @@ import org.mozilla.fenix.helpers.Constants.searchEngineCodes
import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
import org.mozilla.fenix.helpers.MockBrowserDataHelper.createTabItem
import org.mozilla.fenix.helpers.MockBrowserDataHelper.setCustomSearchEngine
import org.mozilla.fenix.helpers.SearchDispatcher
import org.mozilla.fenix.helpers.TestAssetHelper.getGenericAsset
@ -68,6 +69,7 @@ class SearchTest {
isRecentTabsFeatureEnabled = false,
isTCPCFREnabled = false,
isWallpaperOnboardingEnabled = false,
tabsTrayRewriteEnabled = false,
),
) { it.activity }
@ -619,4 +621,61 @@ class SearchTest {
}
}
}
@Test
fun verifySearchTabsItemsTest() {
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod("Tabs")
verifyKeyboardVisibility(isExpectedToBeVisible = true)
verifyScanButtonVisibility(visible = false)
verifyVoiceSearchButtonVisibility(enabled = true)
verifySearchBarPlaceholder(text = "Search tabs")
}
}
@Test
fun verifySearchTabsWithoutOpenTabsTest() {
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod(searchEngineName = "Tabs")
typeSearch(searchTerm = "Mozilla")
verifyNoSuggestionsAreDisplayed(rule = activityTestRule, "Mozilla")
clickClearButton()
verifySearchBarPlaceholder("Search tabs")
}
}
@Test
fun verifySearchTabsWithOpenTabsTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1)
val secondPageUrl = getGenericAsset(searchMockServer, 2)
createTabItem(firstPageUrl.url.toString())
createTabItem(secondPageUrl.url.toString())
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod(searchEngineName = "Tabs")
typeSearch(searchTerm = "Mozilla")
verifyNoSuggestionsAreDisplayed(rule = activityTestRule, "Mozilla")
clickClearButton()
typeSearch(searchTerm = "generic")
verifyTypedToolbarText("generic")
verifyFirefoxSuggestResults(
rule = activityTestRule,
searchTerm = "generic",
firstPageUrl.url.toString(),
secondPageUrl.url.toString(),
)
}.clickSearchSuggestion(firstPageUrl.url.toString()) {
verifyTabCounter("2")
}.openTabDrawer {
verifyOpenTabsOrder(position = 1, title = firstPageUrl.url.toString())
verifyOpenTabsOrder(position = 2, title = secondPageUrl.url.toString())
}
}
}

@ -15,10 +15,12 @@ import androidx.compose.ui.test.assertIsSelected
import androidx.compose.ui.test.filter
import androidx.compose.ui.test.hasAnyChild
import androidx.compose.ui.test.hasParent
import androidx.compose.ui.test.hasTestTag
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.longClick
import androidx.compose.ui.test.onAllNodesWithTag
import androidx.compose.ui.test.onChildAt
import androidx.compose.ui.test.onChildren
import androidx.compose.ui.test.onFirst
import androidx.compose.ui.test.onNodeWithContentDescription
@ -98,6 +100,12 @@ class ComposeTabDrawerRobot(private val composeTestRule: HomeActivityComposeTest
}
}
fun verifyOpenTabsOrder(title: String, position: Int) =
composeTestRule.normalTabsList()
.onChildAt(position - 1)
.assert(hasTestTag(TabsTrayTestTag.tabItemRoot))
.assert(hasAnyChild(hasText(title)))
fun verifyNoExistingOpenTabs(vararg titles: String) {
titles.forEach { title ->
TestCase.assertFalse(

@ -6,8 +6,10 @@
package org.mozilla.fenix.ui.robots
import androidx.compose.ui.test.assertAny
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.onAllNodesWithTag
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performScrollToNode
import androidx.test.espresso.Espresso.onView
@ -139,10 +141,11 @@ class SearchRobot {
fun verifyNoSuggestionsAreDisplayed(rule: ComposeTestRule, vararg searchSuggestions: String) {
rule.waitForIdle()
for (searchSuggestion in searchSuggestions) {
assertTrue(
mDevice.findObject(UiSelector().textContains(searchSuggestion))
.waitUntilGone(waitingTimeLong),
)
rule.onAllNodesWithTag("mozac.awesomebar.suggestions")
.assertAny(
hasText(searchSuggestion)
.not(),
)
}
}

@ -89,6 +89,20 @@ class TabDrawerRobot {
fun clickSyncedTabsButton() = syncedTabsButton().click()
fun verifyExistingOpenTabs(vararg titles: String) = assertExistingOpenTabs(*titles)
fun verifyOpenTabsOrder(position: Int, title: String) {
mDevice.findObject(
UiSelector()
.resourceId("$packageName:id/tab_item")
.childSelector(
UiSelector().textContains(title),
),
).getFromParent(
UiSelector()
.resourceId("$packageName:id/tab_tray_grid_item")
.index(position - 1),
)
}
fun verifyNoExistingOpenTabs(vararg titles: String) = assertNoExistingOpenTabs(*titles)
fun verifyCloseTabsButton(title: String) = assertCloseTabsButton(title)

Loading…
Cancel
Save