Bug 1807268 - Re-enable verifyShowClipboardSuggestionsToggleTest UI test r=jajohnson
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / ComposeBookmarksTest.kt
blob398533830a94562a10893fe6c282f5728d768e2d
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 package org.mozilla.fenix.ui
7 import androidx.compose.ui.test.junit4.AndroidComposeTestRule
8 import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu
9 import androidx.test.espresso.Espresso.pressBack
10 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
11 import org.junit.Rule
12 import org.junit.Test
13 import org.mozilla.fenix.R
14 import org.mozilla.fenix.customannotations.SmokeTest
15 import org.mozilla.fenix.helpers.AppAndSystemHelper.registerAndCleanupIdlingResources
16 import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
17 import org.mozilla.fenix.helpers.RecyclerViewIdlingResource
18 import org.mozilla.fenix.helpers.RetryTestRule
19 import org.mozilla.fenix.helpers.TestAssetHelper
20 import org.mozilla.fenix.helpers.TestHelper.clickSnackbarButton
21 import org.mozilla.fenix.helpers.TestHelper.exitMenu
22 import org.mozilla.fenix.helpers.TestHelper.longTapSelectItem
23 import org.mozilla.fenix.helpers.TestHelper.mDevice
24 import org.mozilla.fenix.helpers.TestHelper.verifySnackBarText
25 import org.mozilla.fenix.helpers.TestSetup
26 import org.mozilla.fenix.ui.robots.bookmarksMenu
27 import org.mozilla.fenix.ui.robots.browserScreen
28 import org.mozilla.fenix.ui.robots.homeScreen
29 import org.mozilla.fenix.ui.robots.multipleSelectionToolbar
30 import org.mozilla.fenix.ui.robots.navigationToolbar
32 /**
33  *  Tests for verifying basic functionality of bookmarks
34  */
35 class ComposeBookmarksTest : TestSetup() {
36     private val bookmarksFolderName = "New Folder"
37     private val testBookmark = object {
38         var title: String = "Bookmark title"
39         var url: String = "https://www.example.com"
40     }
42     @get:Rule(order = 0)
43     val activityTestRule =
44         AndroidComposeTestRule(
45             HomeActivityIntentTestRule.withDefaultSettingsOverrides(
46                 tabsTrayRewriteEnabled = true,
47             ),
48         ) { it.activity }
50     @Rule(order = 1)
51     @JvmField
52     val retryTestRule = RetryTestRule(3)
54     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/522919
55     @Test
56     fun verifyEmptyBookmarksMenuTest() {
57         homeScreen {
58         }.openThreeDotMenu {
59         }.openBookmarks {
60             registerAndCleanupIdlingResources(
61                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 1),
62             ) {
63                 verifyBookmarksMenuView()
64                 verifyAddFolderButton()
65                 verifyCloseButton()
66                 verifyBookmarkTitle("Desktop Bookmarks")
67                 selectFolder("Desktop Bookmarks")
68                 verifyFolderTitle("Bookmarks Menu")
69                 verifyFolderTitle("Bookmarks Toolbar")
70                 verifyFolderTitle("Other Bookmarks")
71                 verifySyncSignInButton()
72             }
73         }.clickSingInToSyncButton {
74             verifyTurnOnSyncToolbarTitle()
75         }
76     }
78     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/522920
79     @Test
80     fun cancelCreateBookmarkFolderTest() {
81         homeScreen {
82         }.openThreeDotMenu {
83         }.openBookmarks {
84             clickAddFolderButton()
85             addNewFolderName(bookmarksFolderName)
86             navigateUp()
87             verifyKeyboardHidden(isExpectedToBeVisible = false)
88             verifyBookmarkFolderIsNotCreated(bookmarksFolderName)
89         }
90     }
92     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2299619
93     @Test
94     fun cancelingChangesInEditModeAreNotSavedTest() {
95         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
97         navigationToolbar {
98         }.enterURLAndEnterToBrowser(defaultWebPage.url) {
99         }.openThreeDotMenu {
100         }.bookmarkPage {
101             clickSnackbarButton("EDIT")
102         }
103         bookmarksMenu {
104             verifyEditBookmarksView()
105             changeBookmarkTitle(testBookmark.title)
106             changeBookmarkUrl(testBookmark.url)
107         }.closeEditBookmarkSection {
108         }
109         browserScreen {
110         }.openThreeDotMenu {
111         }.openBookmarks {
112             verifyBookmarkTitle(defaultWebPage.title)
113             verifyBookmarkedURL(defaultWebPage.url.toString())
114         }
115     }
117     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325633
118     @SmokeTest
119     @Test
120     fun editBookmarksNameAndUrlTest() {
121         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
123         browserScreen {
124             createBookmark(defaultWebPage.url)
125         }.openThreeDotMenu {
126         }.editBookmarkPage {
127             verifyEditBookmarksView()
128             changeBookmarkTitle(testBookmark.title)
129             changeBookmarkUrl(testBookmark.url)
130             saveEditBookmark()
131         }
132         browserScreen {
133         }.openThreeDotMenu {
134         }.openBookmarks {
135             registerAndCleanupIdlingResources(
136                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
137             ) {}
138             verifyBookmarkTitle(testBookmark.title)
139             verifyBookmarkedURL(testBookmark.url)
140         }.openBookmarkWithTitle(testBookmark.title) {
141             verifyUrl("example.com")
142         }
143     }
145     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/341696
146     @Test
147     fun copyBookmarkURLTest() {
148         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
150         browserScreen {
151             createBookmark(defaultWebPage.url)
152         }.openThreeDotMenu {
153         }.openBookmarks {
154             registerAndCleanupIdlingResources(
155                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
156             ) {}
157         }.openThreeDotMenu(defaultWebPage.title) {
158         }.clickCopy {
159             verifySnackBarText(expectedText = "URL copied")
160             navigateUp()
161         }
163         navigationToolbar {
164         }.clickUrlbar {
165             clickClearButton()
166             longClickToolbar()
167             clickPasteText()
168             verifyTypedToolbarText(defaultWebPage.url.toString())
169         }
170     }
172     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325634
173     @Test
174     fun shareBookmarkTest() {
175         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
177         browserScreen {
178             createBookmark(defaultWebPage.url)
179         }.openThreeDotMenu {
180         }.openBookmarks {
181             registerAndCleanupIdlingResources(
182                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
183             ) {}
184         }.openThreeDotMenu(defaultWebPage.title) {
185         }.clickShare {
186             verifyShareOverlay()
187             verifyShareBookmarkFavicon()
188             verifyShareBookmarkTitle()
189             verifyShareBookmarkUrl()
190         }
191     }
193     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325636
194     @Test
195     fun openBookmarkInNewTabTest() {
196         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
198         browserScreen {
199             createBookmark(defaultWebPage.url)
200         }.openThreeDotMenu {
201         }.openBookmarks {
202             registerAndCleanupIdlingResources(
203                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
204             ) {}
205         }.openThreeDotMenu(defaultWebPage.title) {
206         }.clickOpenInNewTab(activityTestRule) {
207             verifyTabTrayIsOpen()
208             verifyNormalBrowsingButtonIsSelected()
209         }
210     }
212     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1919261
213     @Test
214     fun verifyOpenAllInNewTabsOptionTest() {
215         val webPages = listOf(
216             TestAssetHelper.getGenericAsset(mockWebServer, 1),
217             TestAssetHelper.getGenericAsset(mockWebServer, 2),
218             TestAssetHelper.getGenericAsset(mockWebServer, 3),
219             TestAssetHelper.getGenericAsset(mockWebServer, 4),
220         )
222         homeScreen {
223         }.openThreeDotMenu {
224         }.openBookmarks {
225             createFolder("root")
226             createFolder("sub", "root")
227             createFolder("empty", "root")
228         }.closeMenu {
229         }
231         browserScreen {
232             createBookmark(webPages[0].url)
233             createBookmark(webPages[1].url, "root")
234             createBookmark(webPages[2].url, "root")
235             createBookmark(webPages[3].url, "sub")
236         }.openComposeTabDrawer(activityTestRule) {
237             closeTab()
238         }
240         browserScreen {
241         }.openThreeDotMenu {
242         }.openBookmarks {
243         }.openThreeDotMenu("root") {
244         }.clickOpenAllInTabs(activityTestRule) {
245             verifyTabTrayIsOpen()
246             verifyNormalBrowsingButtonIsSelected()
248             verifyExistingOpenTabs("Test_Page_2", "Test_Page_3", "Test_Page_4")
250             // Bookmark that is not under the root folder should not be opened
251             verifyNoExistingOpenTabs("Test_Page_1")
252         }
253     }
255     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1919262
256     @Test
257     fun verifyOpenAllInPrivateTabsTest() {
258         val webPages = listOf(
259             TestAssetHelper.getGenericAsset(mockWebServer, 1),
260             TestAssetHelper.getGenericAsset(mockWebServer, 2),
261         )
263         homeScreen {
264         }.openThreeDotMenu {
265         }.openBookmarks {
266             createFolder("root")
267             createFolder("sub", "root")
268             createFolder("empty", "root")
269         }.closeMenu {
270         }
272         browserScreen {
273             createBookmark(webPages[0].url, "root")
274             createBookmark(webPages[1].url, "sub")
275         }.openComposeTabDrawer(activityTestRule) {
276             closeTab()
277         }
279         browserScreen {
280         }.openThreeDotMenu {
281         }.openBookmarks {
282         }.openThreeDotMenu("root") {
283         }.clickOpenAllInPrivateTabs(activityTestRule) {
284             verifyTabTrayIsOpen()
285             verifyPrivateBrowsingButtonIsSelected()
287             verifyExistingOpenTabs("Test_Page_1", "Test_Page_2")
288         }
289     }
291     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325637
292     @Test
293     fun openBookmarkInPrivateTabTest() {
294         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
296         browserScreen {
297             createBookmark(defaultWebPage.url)
298         }.openThreeDotMenu {
299         }.openBookmarks {
300             registerAndCleanupIdlingResources(
301                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
302             ) {}
303         }.openThreeDotMenu(defaultWebPage.title) {
304         }.clickOpenInPrivateTab(activityTestRule) {
305             verifyTabTrayIsOpen()
306             verifyPrivateBrowsingButtonIsSelected()
307         }
308     }
310     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325635
311     @Test
312     fun deleteBookmarkTest() {
313         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
315         browserScreen {
316             createBookmark(defaultWebPage.url)
317         }.openThreeDotMenu {
318         }.openBookmarks {
319             registerAndCleanupIdlingResources(
320                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
321             ) {}
322         }.openThreeDotMenu(defaultWebPage.title) {
323         }.clickDelete {
324             verifyUndoDeleteSnackBarButton()
325             clickSnackbarButton("UNDO")
326             verifySnackBarHidden()
327             registerAndCleanupIdlingResources(
328                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
329             ) {
330                 verifyBookmarkedURL(defaultWebPage.url.toString())
331             }
332         }.openThreeDotMenu(defaultWebPage.title) {
333         }.clickDelete {
334             verifyBookmarkIsDeleted(defaultWebPage.title)
335         }
336     }
338     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2300275
339     @Test
340     fun bookmarksMultiSelectionToolbarItemsTest() {
341         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
343         browserScreen {
344             createBookmark(defaultWebPage.url)
345         }.openThreeDotMenu {
346         }.openBookmarks {
347             registerAndCleanupIdlingResources(
348                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
349             ) {
350                 longTapSelectItem(defaultWebPage.url)
351             }
352         }
354         multipleSelectionToolbar {
355             verifyMultiSelectionCheckmark(defaultWebPage.url)
356             verifyMultiSelectionCounter()
357             verifyShareBookmarksButton()
358             verifyCloseToolbarButton()
359         }.closeToolbarReturnToBookmarks {
360             verifyBookmarksMenuView()
361         }
362     }
364     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2300276
365     @SmokeTest
366     @Test
367     fun openMultipleSelectedBookmarksInANewTabTest() {
368         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
370         browserScreen {
371             createBookmark(defaultWebPage.url)
372         }.openComposeTabDrawer(activityTestRule) {
373             closeTab()
374         }
376         homeScreen {
377         }.openThreeDotMenu {
378         }.openBookmarks {
379             registerAndCleanupIdlingResources(
380                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
381             ) {
382                 longTapSelectItem(defaultWebPage.url)
383                 openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
384             }
385         }
387         multipleSelectionToolbar {
388         }.clickOpenNewTab(activityTestRule) {
389             verifyTabTrayIsOpen()
390             verifyNormalBrowsingButtonIsSelected()
391             verifyNormalTabsList()
392         }
393     }
395     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2300277
396     @Test
397     fun openMultipleSelectedBookmarksInPrivateTabTest() {
398         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
400         browserScreen {
401             createBookmark(defaultWebPage.url)
402         }.openThreeDotMenu {
403         }.openBookmarks {
404             registerAndCleanupIdlingResources(
405                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
406             ) {
407                 longTapSelectItem(defaultWebPage.url)
408                 openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
409             }
410         }
412         multipleSelectionToolbar {
413         }.clickOpenPrivateTab(activityTestRule) {
414             verifyPrivateBrowsingButtonIsSelected()
415             verifyPrivateTabsList()
416         }
417     }
419     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325644
420     @SmokeTest
421     @Test
422     fun deleteMultipleSelectedBookmarksTest() {
423         val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
424         val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
426         browserScreen {
427             createBookmark(firstWebPage.url)
428             createBookmark(secondWebPage.url)
429         }.openThreeDotMenu {
430         }.openBookmarks {
431             registerAndCleanupIdlingResources(
432                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 3),
433             ) {
434                 longTapSelectItem(firstWebPage.url)
435                 longTapSelectItem(secondWebPage.url)
436             }
437             openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
438         }
440         multipleSelectionToolbar {
441             clickMultiSelectionDelete()
442         }
444         bookmarksMenu {
445             verifySnackBarText(expectedText = "Bookmarks deleted")
446             clickSnackbarButton("UNDO")
447             verifyBookmarkedURL(firstWebPage.url.toString())
448             verifyBookmarkedURL(secondWebPage.url.toString())
449             registerAndCleanupIdlingResources(
450                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 3),
451             ) {
452                 longTapSelectItem(firstWebPage.url)
453                 longTapSelectItem(secondWebPage.url)
454             }
455             openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
456         }
458         multipleSelectionToolbar {
459             clickMultiSelectionDelete()
460         }
462         bookmarksMenu {
463             verifySnackBarText(expectedText = "Bookmarks deleted")
464         }
465     }
467     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2301355
468     @Test
469     fun shareMultipleSelectedBookmarksTest() {
470         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
472         browserScreen {
473             createBookmark(defaultWebPage.url)
474         }.openThreeDotMenu {
475         }.openBookmarks {
476             registerAndCleanupIdlingResources(
477                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
478             ) {
479                 longTapSelectItem(defaultWebPage.url)
480             }
481         }
483         multipleSelectionToolbar {
484             clickShareBookmarksButton()
485             verifyShareOverlay()
486             verifyShareTabFavicon()
487             verifyShareTabTitle()
488             verifyShareTabUrl()
489         }
490     }
492     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325639
493     @Test
494     fun createBookmarkFolderTest() {
495         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
497         browserScreen {
498             createBookmark(defaultWebPage.url)
499         }.openThreeDotMenu {
500         }.openBookmarks {
501             registerAndCleanupIdlingResources(
502                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
503             ) {}
504         }.openThreeDotMenu(defaultWebPage.title) {
505         }.clickEdit {
506             clickParentFolderSelector()
507             clickAddNewFolderButtonFromSelectFolderView()
508             addNewFolderName(bookmarksFolderName)
509             saveNewFolder()
510             navigateUp()
511             saveEditBookmark()
512             selectFolder(bookmarksFolderName)
513             verifyBookmarkedURL(defaultWebPage.url.toString())
514         }
515     }
517     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325645
518     @Test
519     fun navigateBookmarksFoldersTest() {
520         homeScreen {
521         }.openThreeDotMenu {
522         }.openBookmarks {
523             createFolder("1")
524             getInstrumentation().waitForIdleSync()
525             waitForBookmarksFolderContentToExist("Bookmarks", "1")
526             selectFolder("1")
527             verifyCurrentFolderTitle("1")
528             createFolder("2")
529             getInstrumentation().waitForIdleSync()
530             waitForBookmarksFolderContentToExist("1", "2")
531             selectFolder("2")
532             verifyCurrentFolderTitle("2")
533             navigateUp()
534             waitForBookmarksFolderContentToExist("1", "2")
535             verifyCurrentFolderTitle("1")
536             mDevice.pressBack()
537             verifyBookmarksMenuView()
538         }
539     }
541     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/374855
542     @Test
543     fun cantSelectDefaultFoldersTest() {
544         homeScreen {
545         }.openThreeDotMenu {
546         }.openBookmarks {
547             registerAndCleanupIdlingResources(
548                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list)),
549             ) {
550                 longTapDesktopFolder("Desktop Bookmarks")
551                 verifySnackBarText(expectedText = "Can’t edit default folders")
552             }
553         }
554     }
556     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2299703
557     @Test
558     fun deleteBookmarkInEditModeTest() {
559         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
561         browserScreen {
562             createBookmark(defaultWebPage.url)
563         }.openThreeDotMenu {
564         }.openBookmarks {
565             registerAndCleanupIdlingResources(
566                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.bookmark_list), 2),
567             ) {}
568         }.openThreeDotMenu(defaultWebPage.title) {
569         }.clickEdit {
570             clickDeleteInEditModeButton()
571             cancelDeletion()
572             clickDeleteInEditModeButton()
573             confirmDeletion()
574             verifySnackBarText(expectedText = "Deleted")
575             verifyBookmarkIsDeleted("Test_Page_1")
576         }
577     }
579     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1715710
580     @Test
581     fun verifySearchBookmarksViewTest() {
582         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
584         browserScreen {
585             createBookmark(defaultWebPage.url)
586         }.openThreeDotMenu {
587         }.openBookmarks {
588         }.clickSearchButton {
589             verifySearchView()
590             verifySearchToolbar(true)
591             verifySearchSelectorButton()
592             verifySearchEngineIcon("Bookmarks")
593             verifySearchBarPlaceholder("Search bookmarks")
594             verifySearchBarPosition(true)
595             tapOutsideToDismissSearchBar()
596             verifySearchToolbar(false)
597         }
598         bookmarksMenu {
599         }.goBackToBrowserScreen {
600         }.openThreeDotMenu {
601         }.openSettings {
602         }.openCustomizeSubMenu {
603             clickTopToolbarToggle()
604         }
606         exitMenu()
608         browserScreen {
609         }.openThreeDotMenu {
610         }.openBookmarks {
611         }.clickSearchButton {
612             verifySearchToolbar(true)
613             verifySearchEngineIcon("Bookmarks")
614             verifySearchBarPosition(false)
615             pressBack()
616             verifySearchToolbar(false)
617         }
618     }
620     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1715712
621     @Test
622     fun verifySearchForBookmarkedItemsTest() {
623         val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
624         val secondWebPage = TestAssetHelper.getHTMLControlsFormAsset(mockWebServer)
626         homeScreen {
627         }.openThreeDotMenu {
628         }.openBookmarks {
629             createFolder(bookmarksFolderName)
630         }
632         exitMenu()
634         browserScreen {
635             createBookmark(firstWebPage.url, bookmarksFolderName)
636             createBookmark(secondWebPage.url)
637         }.openThreeDotMenu {
638         }.openBookmarks {
639         }.clickSearchButton {
640             // Search for a valid term
641             typeSearch(firstWebPage.title)
642             verifySearchEngineSuggestionResults(activityTestRule, firstWebPage.url.toString(), searchTerm = firstWebPage.title)
643             verifySuggestionsAreNotDisplayed(activityTestRule, secondWebPage.url.toString())
644             // Search for invalid term
645             typeSearch("Android")
646             verifySuggestionsAreNotDisplayed(activityTestRule, firstWebPage.url.toString())
647             verifySuggestionsAreNotDisplayed(activityTestRule, secondWebPage.url.toString())
648         }
649     }
651     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1715711
652     @Test
653     fun verifyVoiceSearchInBookmarksTest() {
654         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
656         browserScreen {
657             createBookmark(defaultWebPage.url)
658         }.openThreeDotMenu {
659         }.openBookmarks {
660         }.clickSearchButton {
661             verifySearchToolbar(true)
662             verifySearchEngineIcon("Bookmarks")
663             startVoiceSearch()
664         }
665     }
667     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1715714
668     @Test
669     fun verifyDeletedBookmarksAreNotDisplayedAsSearchResultsTest() {
670         val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
671         val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
672         val thirdWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 3)
674         browserScreen {
675             createBookmark(firstWebPage.url)
676             createBookmark(secondWebPage.url)
677             createBookmark(thirdWebPage.url)
678         }.openThreeDotMenu {
679         }.openBookmarks {
680         }.openThreeDotMenu(firstWebPage.title) {
681         }.clickDelete {
682             verifyBookmarkIsDeleted(firstWebPage.title)
683         }.openThreeDotMenu(secondWebPage.title) {
684         }.clickDelete {
685             verifyBookmarkIsDeleted(secondWebPage.title)
686         }.clickSearchButton {
687             // Search for a valid term
688             typeSearch("generic")
689             verifySuggestionsAreNotDisplayed(activityTestRule, firstWebPage.url.toString())
690             verifySuggestionsAreNotDisplayed(activityTestRule, secondWebPage.url.toString())
691             verifySearchEngineSuggestionResults(activityTestRule, thirdWebPage.url.toString(), searchTerm = "generic")
692             pressBack()
693         }
694         bookmarksMenu {
695         }.openThreeDotMenu(thirdWebPage.title) {
696         }.clickDelete {
697             verifyBookmarkIsDeleted(thirdWebPage.title)
698         }.clickSearchButton {
699             // Search for a valid term
700             typeSearch("generic")
701             verifySuggestionsAreNotDisplayed(activityTestRule, thirdWebPage.url.toString())
702         }
703     }
705     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/325642
706     // Verifies that deleting a Bookmarks folder also removes the item from inside it.
707     @SmokeTest
708     @Test
709     fun deleteBookmarkFoldersTest() {
710         val website = TestAssetHelper.getGenericAsset(mockWebServer, 1)
712         browserScreen {
713             createBookmark(website.url)
714         }.openThreeDotMenu {
715         }.openBookmarks {
716             verifyBookmarkTitle("Test_Page_1")
717             createFolder("My Folder")
718             verifyFolderTitle("My Folder")
719         }.openThreeDotMenu("Test_Page_1") {
720         }.clickEdit {
721             clickParentFolderSelector()
722             selectFolder("My Folder")
723             navigateUp()
724             saveEditBookmark()
725             createFolder("My Folder 2")
726             verifyFolderTitle("My Folder 2")
727         }.openThreeDotMenu("My Folder 2") {
728         }.clickEdit {
729             clickParentFolderSelector()
730             selectFolder("My Folder")
731             navigateUp()
732             saveEditBookmark()
733         }.openThreeDotMenu("My Folder") {
734         }.clickDelete {
735             cancelFolderDeletion()
736             verifyFolderTitle("My Folder")
737         }.openThreeDotMenu("My Folder") {
738         }.clickDelete {
739             confirmDeletion()
740             verifySnackBarText(expectedText = "Deleted")
741             clickSnackbarButton("UNDO")
742             verifyFolderTitle("My Folder")
743         }.openThreeDotMenu("My Folder") {
744         }.clickDelete {
745             confirmDeletion()
746             verifySnackBarText(expectedText = "Deleted")
747             verifyBookmarkIsDeleted("My Folder")
748             verifyBookmarkIsDeleted("My Folder 2")
749             verifyBookmarkIsDeleted("Test_Page_1")
750             navigateUp()
751         }
752     }