You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/androidTest/java/org/mozilla/fenix/ui/SearchTest.kt

757 lines
28 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.ui
import android.content.Context
import android.hardware.camera2.CameraManager
import androidx.compose.ui.test.junit4.AndroidComposeTestRule
import androidx.core.net.toUri
import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu
import androidx.test.espresso.Espresso.pressBack
import mozilla.components.concept.engine.utils.EngineReleaseChannel
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Assume.assumeTrue
import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.helpers.Constants.PackageName.ANDROID_SETTINGS
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.createBookmarkItem
import org.mozilla.fenix.helpers.MockBrowserDataHelper.createHistoryItem
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
import org.mozilla.fenix.helpers.TestHelper.appContext
import org.mozilla.fenix.helpers.TestHelper.assertNativeAppOpens
import org.mozilla.fenix.helpers.TestHelper.clickSnackbarButton
import org.mozilla.fenix.helpers.TestHelper.denyPermission
import org.mozilla.fenix.helpers.TestHelper.exitMenu
import org.mozilla.fenix.helpers.TestHelper.grantSystemPermission
import org.mozilla.fenix.helpers.TestHelper.longTapSelectItem
import org.mozilla.fenix.helpers.TestHelper.mDevice
import org.mozilla.fenix.helpers.TestHelper.runWithCondition
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
import org.mozilla.fenix.ui.robots.longClickPageObject
import org.mozilla.fenix.ui.robots.multipleSelectionToolbar
import org.mozilla.fenix.ui.robots.navigationToolbar
import org.mozilla.fenix.ui.robots.searchScreen
/**
* Tests for verifying the search fragment
*
* Including:
* - Verify the toolbar, awesomebar, and shortcut bar are displayed
* - Select shortcut button
* - Select scan button
*
*/
class SearchTest {
private lateinit var searchMockServer: MockWebServer
private var queryString = "firefox"
private val generalEnginesList = listOf("DuckDuckGo", "Google", "Bing")
private val topicEnginesList = listOf("Amazon.com", "Wikipedia", "eBay")
@get:Rule
val activityTestRule = AndroidComposeTestRule(
HomeActivityTestRule(
skipOnboarding = true,
isPocketEnabled = false,
isJumpBackInCFREnabled = false,
isRecentTabsFeatureEnabled = false,
isTCPCFREnabled = false,
isWallpaperOnboardingEnabled = false,
isCookieBannerReductionDialogEnabled = false,
tabsTrayRewriteEnabled = false,
),
) { it.activity }
@Before
fun setUp() {
searchMockServer = MockWebServer().apply {
dispatcher = SearchDispatcher()
start()
}
}
@After
fun tearDown() {
searchMockServer.shutdown()
}
@Test
fun searchBarItemsTest() {
navigationToolbar {
verifyDefaultSearchEngine("Google")
verifySearchBarPlaceholder("Search or enter address")
}.clickUrlbar {
verifyKeyboardVisibility(isExpectedToBeVisible = true)
verifyScanButtonVisibility(visible = true)
verifyVoiceSearchButtonVisibility(enabled = true)
verifySearchBarPlaceholder("Search or enter address")
typeSearch("mozilla ")
verifyScanButtonVisibility(visible = false)
verifyVoiceSearchButtonVisibility(enabled = true)
}
}
@Test
fun searchSelectorMenuItemsTest() {
homeScreen {
}.openSearch {
verifySearchView()
verifySearchToolbar(isDisplayed = true)
clickSearchSelectorButton()
verifySearchShortcutListContains(
"DuckDuckGo", "Google", "Amazon.com", "Wikipedia", "Bing", "eBay",
"Bookmarks", "Tabs", "History", "Search settings",
)
}
}
@Test
fun searchPlaceholderForDefaultEnginesTest() {
generalEnginesList.forEach {
homeScreen {
}.openSearch {
clickSearchSelectorButton()
}.clickSearchEngineSettings {
openDefaultSearchEngineMenu()
changeDefaultSearchEngine(it)
exitMenu()
}
navigationToolbar {
verifySearchBarPlaceholder("Search or enter address")
}
}
}
@Test
fun searchPlaceholderForOtherGeneralSearchEnginesTest() {
val generalEnginesList = listOf("DuckDuckGo", "Bing")
generalEnginesList.forEach {
homeScreen {
}.openSearch {
clickSearchSelectorButton()
selectTemporarySearchMethod(it)
verifySearchBarPlaceholder("Search the web")
}.dismissSearchBar {}
}
}
@Test
fun searchPlaceholderForTopicSearchEngineTest() {
val topicEnginesList = listOf("Amazon.com", "Wikipedia", "eBay")
topicEnginesList.forEach {
homeScreen {
}.openSearch {
clickSearchSelectorButton()
selectTemporarySearchMethod(it)
verifySearchBarPlaceholder("Enter search terms")
}.dismissSearchBar {}
}
}
@SmokeTest
@Test
fun scanButtonDenyPermissionTest() {
val cameraManager = appContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager
assumeTrue(cameraManager.cameraIdList.isNotEmpty())
homeScreen {
}.openSearch {
clickScanButton()
denyPermission()
clickScanButton()
clickDismissPermissionRequiredDialog()
}
homeScreen {
}.openSearch {
clickScanButton()
clickGoToPermissionsSettings()
assertNativeAppOpens(ANDROID_SETTINGS)
}
}
@SmokeTest
@Test
fun scanButtonAllowPermissionTest() {
val cameraManager = appContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager
assumeTrue(cameraManager.cameraIdList.isNotEmpty())
homeScreen {
}.openSearch {
clickScanButton()
grantSystemPermission()
verifyScannerOpen()
}
}
@Test
fun scanButtonAvailableOnlyForGeneralSearchEnginesTest() {
generalEnginesList.forEach {
homeScreen {
}.openSearch {
clickSearchSelectorButton()
selectTemporarySearchMethod(it)
verifyScanButtonVisibility(visible = true)
}.dismissSearchBar {}
}
topicEnginesList.forEach {
homeScreen {
}.openSearch {
clickSearchSelectorButton()
selectTemporarySearchMethod(it)
verifyScanButtonVisibility(visible = false)
}.dismissSearchBar {}
}
}
// Verifies a temporary change of search engine from the Search shortcut menu
@SmokeTest
@Test
fun selectSearchEnginesShortcutTest() {
val enginesList = listOf("DuckDuckGo", "Google", "Amazon.com", "Wikipedia", "Bing", "eBay")
enginesList.forEach {
homeScreen {
}.openSearch {
clickSearchSelectorButton()
verifySearchShortcutListContains(it)
selectTemporarySearchMethod(it)
verifySearchEngineIcon(it)
}.submitQuery("mozilla ") {
verifyUrl("mozilla")
}.goToHomescreen {}
}
}
@Test
fun accessSearchSettingFromSearchSelectorMenuTest() {
searchScreen {
clickSearchSelectorButton()
}.clickSearchEngineSettings {
verifyToolbarText("Search")
openDefaultSearchEngineMenu()
changeDefaultSearchEngine("DuckDuckGo")
exitMenu()
}
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
verifyUrl(queryString)
}
}
@Test
fun clearSearchTest() {
homeScreen {
}.openSearch {
typeSearch(queryString)
clickClearButton()
verifySearchBarPlaceholder("Search or enter address")
}
}
@Ignore("Test run timing out: https://github.com/mozilla-mobile/fenix/issues/27704")
@SmokeTest
@Test
fun searchGroupShowsInRecentlyVisitedTest() {
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
pressBack()
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}
}
@Ignore("Test run timing out: https://github.com/mozilla-mobile/fenix/issues/27704")
@Test
fun verifySearchGroupHistoryWithNoDuplicatesTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1).url
val secondPageUrl = getGenericAsset(searchMockServer, 2).url
val originPageUrl =
"http://localhost:${searchMockServer.port}/pages/searchResults.html?search=test%20search".toUri()
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
pressBack()
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
pressBack()
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
pressBack()
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}.openRecentlyVisitedSearchGroupHistoryList(queryString) {
verifyTestPageUrl(firstPageUrl)
verifyTestPageUrl(secondPageUrl)
verifyTestPageUrl(originPageUrl)
}
}
@Ignore("Failing due to known bug, see https://github.com/mozilla-mobile/fenix/issues/23818")
@Test
fun searchGroupGeneratedInTheSameTabTest() {
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
clickPageObject(itemContainingText("Link 1"))
waitForPageToLoad()
pressBack()
clickPageObject(itemContainingText("Link 2"))
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}
}
@SmokeTest
@Test
fun noSearchGroupFromPrivateBrowsingTest() {
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in private tab")
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in private tab")
}.openTabDrawer {
}.toggleToPrivateTabs {
}.openTabWithIndex(0) {
}.openTabDrawer {
}.openTabWithIndex(1) {
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
togglePrivateBrowsingModeOnOff()
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = false, searchTerm = queryString, groupSize = 3)
}.openThreeDotMenu {
}.openHistory {
verifyHistoryItemExists(shouldExist = false, item = "3 sites")
}
}
@Ignore("Test run timing out: https://github.com/mozilla-mobile/fenix/issues/27704")
@SmokeTest
@Test
fun deleteItemsFromSearchGroupHistoryTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1).url
val secondPageUrl = getGenericAsset(searchMockServer, 2).url
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
mDevice.pressBack()
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}.openRecentlyVisitedSearchGroupHistoryList(queryString) {
clickDeleteHistoryButton(firstPageUrl.toString())
longTapSelectItem(secondPageUrl)
multipleSelectionToolbar {
openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
clickMultiSelectionDelete()
}
exitMenu()
}
homeScreen {
// checking that the group is removed when only 1 item is left
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = false, searchTerm = queryString, groupSize = 1)
}
}
@Ignore("Test run timing out: https://github.com/mozilla-mobile/fenix/issues/27704")
@Test
fun deleteSearchGroupFromHistoryTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1).url
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
mDevice.pressBack()
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}.openRecentlyVisitedSearchGroupHistoryList(queryString) {
clickDeleteAllHistoryButton()
confirmDeleteAllHistory()
verifyDeleteSnackbarText("Group deleted")
verifyHistoryItemExists(shouldExist = false, firstPageUrl.toString())
}.goBack {}
homeScreen {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = false, queryString, groupSize = 3)
}.openThreeDotMenu {
}.openHistory {
verifySearchGroupDisplayed(shouldBeDisplayed = false, queryString, groupSize = 3)
verifyEmptyHistoryView()
}
}
@Ignore("Test run timing out: https://github.com/mozilla-mobile/fenix/issues/27704")
@Test
fun reopenTabsFromSearchGroupTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1).url
val secondPageUrl = getGenericAsset(searchMockServer, 2).url
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
mDevice.pressBack()
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}.openRecentlyVisitedSearchGroupHistoryList(queryString) {
}.openWebsite(firstPageUrl) {
verifyUrl(firstPageUrl.toString())
}.goToHomescreen {
}.openRecentlyVisitedSearchGroupHistoryList(queryString) {
longTapSelectItem(firstPageUrl)
longTapSelectItem(secondPageUrl)
openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
}
multipleSelectionToolbar {
}.clickOpenNewTab {
verifyNormalModeSelected()
}.closeTabDrawer {}
openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
multipleSelectionToolbar {
}.clickOpenPrivateTab {
verifyPrivateModeSelected()
}
}
@Ignore("Test run timing out: https://github.com/mozilla-mobile/fenix/issues/27704")
@Test
fun sharePageFromASearchGroupTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1).url
// setting our custom mockWebServer search URL
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
// Performs a search and opens 2 dummy search results links to create a search group
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
longClickPageObject(itemWithText("Link 1"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
mDevice.pressBack()
longClickPageObject(itemWithText("Link 2"))
clickContextMenuItem("Open link in new tab")
clickSnackbarButton("SWITCH")
waitForPageToLoad()
}.openTabDrawer {
}.openTabsListThreeDotMenu {
}.closeAllTabs {
verifyRecentlyVisitedSearchGroupDisplayed(shouldBeDisplayed = true, searchTerm = queryString, groupSize = 3)
}.openRecentlyVisitedSearchGroupHistoryList(queryString) {
longTapSelectItem(firstPageUrl)
}
multipleSelectionToolbar {
clickShareHistoryButton()
verifyShareOverlay()
verifyShareTabFavicon()
verifyShareTabTitle()
verifyShareTabUrl()
}
}
// Default search code for Google-US
@Test
fun defaultSearchCodeGoogleUS() {
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
waitForPageToLoad()
}.openThreeDotMenu {
}.openHistory {
// Full URL no longer visible in the nav bar, so we'll check the history record
// A search group is sometimes created when searching with Google (probably redirects)
try {
verifyHistoryItemExists(shouldExist = true, searchEngineCodes["Google"]!!)
} catch (e: AssertionError) {
openSearchGroup(queryString)
verifyHistoryItemExists(shouldExist = true, searchEngineCodes["Google"]!!)
}
}
}
// Default search code for Bing-US
@Test
fun defaultSearchCodeBingUS() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openSearchSubMenu {
openDefaultSearchEngineMenu()
changeDefaultSearchEngine("Bing")
exitMenu()
}
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
waitForPageToLoad()
}.openThreeDotMenu {
}.openHistory {
// Full URL no longer visible in the nav bar, so we'll check the history record
verifyHistoryItemExists(shouldExist = true, searchEngineCodes["Bing"]!!)
}
}
// Default search code for DuckDuckGo-US
@Test
fun defaultSearchCodeDuckDuckGoUS() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openSearchSubMenu {
openDefaultSearchEngineMenu()
changeDefaultSearchEngine("DuckDuckGo")
exitMenu()
}
homeScreen {
}.openSearch {
}.submitQuery(queryString) {
waitForPageToLoad()
}.openThreeDotMenu {
}.openHistory {
// Full URL no longer visible in the nav bar, so we'll check the history record
// A search group is sometimes created when searching with DuckDuckGo
try {
verifyHistoryItemExists(shouldExist = true, item = searchEngineCodes["DuckDuckGo"]!!)
} catch (e: AssertionError) {
openSearchGroup(queryString)
verifyHistoryItemExists(shouldExist = true, item = searchEngineCodes["DuckDuckGo"]!!)
}
}
}
@SmokeTest
@Test
fun verifySearchHistoryWithBrowsingDataTest() {
val firstPageUrl = getGenericAsset(searchMockServer, 1)
val secondPageUrl = getGenericAsset(searchMockServer, 2)
createHistoryItem(firstPageUrl.url.toString())
createHistoryItem(secondPageUrl.url.toString())
navigationToolbar {
}.clickUrlbar {
clickSearchSelectorButton()
selectTemporarySearchMethod(searchEngineName = "History")
typeSearch(searchTerm = "Mozilla")
verifySuggestionsAreNotDisplayed(rule = activityTestRule, "Mozilla")
clickClearButton()
typeSearch(searchTerm = "generic")
verifyTypedToolbarText("generic")
verifySearchEngineSuggestionResults(
rule = activityTestRule,
searchSuggestions = arrayOf(
firstPageUrl.url.toString(),
secondPageUrl.url.toString(),
),
searchTerm = "generic",
)
}.clickSearchSuggestion(firstPageUrl.url.toString()) {
verifyUrl(firstPageUrl.url.toString())
}
}
@SmokeTest
@Test
fun verifySearchTabsWithOpenTabsTest() {
runWithCondition(
// This test will run only on Beta and RC builds
// The new composable tabs tray is only available in Nightly and Debug.
activityTestRule.activity.components.core.engine.version.releaseChannel == EngineReleaseChannel.RELEASE ||
activityTestRule.activity.components.core.engine.version.releaseChannel == EngineReleaseChannel.BETA,
) {
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")
verifySuggestionsAreNotDisplayed(rule = activityTestRule, "Mozilla")
clickClearButton()
typeSearch(searchTerm = "generic")
verifyTypedToolbarText("generic")
verifySearchEngineSuggestionResults(
rule = activityTestRule,
searchSuggestions = arrayOf(
"Firefox Suggest",
firstPageUrl.url.toString(),
secondPageUrl.url.toString(),
),
searchTerm = "generic",
)
}.clickSearchSuggestion(firstPageUrl.url.toString()) {
verifyTabCounter("2")
}.openTabDrawer {
verifyOpenTabsOrder(position = 1, title = firstPageUrl.url.toString())
verifyOpenTabsOrder(position = 2, title = secondPageUrl.url.toString())
}
}
}
@SmokeTest
@Test
fun searchHistoryNotRememberedInPrivateBrowsingTest() {
appContext.settings().shouldShowSearchSuggestionsInPrivate = true
val firstPageUrl = getGenericAsset(searchMockServer, 1)
val searchEngineName = "TestSearchEngine"
setCustomSearchEngine(searchMockServer, searchEngineName)
createBookmarkItem(firstPageUrl.url.toString(), firstPageUrl.title, 1u)
homeScreen {
}.openNavigationToolbar {
}.clickUrlbar {
}.submitQuery("test page 1") {
}.goToHomescreen {
}.togglePrivateBrowsingMode()
homeScreen {
}.openNavigationToolbar {
}.clickUrlbar {
}.submitQuery("test page 2") {
}.openNavigationToolbar {
}.clickUrlbar {
typeSearch(searchTerm = "test page")
verifySearchEngineSuggestionResults(
rule = activityTestRule,
searchSuggestions = arrayOf(
"TestSearchEngine search",
"test page 1",
"Firefox Suggest",
firstPageUrl.url.toString(),
),
searchTerm = "test page 1",
)
// 2 search engine suggestions and 2 browser suggestions (1 history, 1 bookmark)
verifySearchSuggestionsCount(activityTestRule, numberOfSuggestions = 4, searchTerm = "test page")
verifySuggestionsAreNotDisplayed(
activityTestRule,
searchSuggestions = arrayOf(
"test page 2",
),
)
}
}
}