Bug 1807268 - Re-enable verifyShowClipboardSuggestionsToggleTest UI test r=jajohnson
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / RecentlyClosedTabsTest.kt
blob044696b36c9956051ad0fc57474332069d290a31
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 org.junit.Rule
10 import org.junit.Test
11 import org.mozilla.fenix.R
12 import org.mozilla.fenix.customannotations.SmokeTest
13 import org.mozilla.fenix.helpers.AppAndSystemHelper.registerAndCleanupIdlingResources
14 import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
15 import org.mozilla.fenix.helpers.RecyclerViewIdlingResource
16 import org.mozilla.fenix.helpers.TestAssetHelper.getGenericAsset
17 import org.mozilla.fenix.helpers.TestHelper.longTapSelectItem
18 import org.mozilla.fenix.helpers.TestHelper.mDevice
19 import org.mozilla.fenix.helpers.TestSetup
20 import org.mozilla.fenix.ui.robots.browserScreen
21 import org.mozilla.fenix.ui.robots.homeScreen
22 import org.mozilla.fenix.ui.robots.navigationToolbar
24 /**
25  *  Tests for verifying basic functionality of recently closed tabs history
26  *
27  */
28 class RecentlyClosedTabsTest : TestSetup() {
29     @get:Rule
30     val activityTestRule = AndroidComposeTestRule(
31         HomeActivityIntentTestRule.withDefaultSettingsOverrides(
32             tabsTrayRewriteEnabled = true,
33         ),
34     ) { it.activity }
36     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1065414
37     // Verifies that a recently closed item is properly opened
38     @SmokeTest
39     @Test
40     fun openRecentlyClosedItemTest() {
41         val website = getGenericAsset(mockWebServer, 1)
43         homeScreen {
44         }.openNavigationToolbar {
45         }.enterURLAndEnterToBrowser(website.url) {
46             mDevice.waitForIdle()
47         }.openComposeTabDrawer(activityTestRule) {
48             closeTab()
49         }
50         homeScreen {
51         }.openThreeDotMenu {
52         }.openHistory {
53         }.openRecentlyClosedTabs {
54             waitForListToExist()
55             registerAndCleanupIdlingResources(
56                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.recently_closed_list), 1),
57             ) {
58                 verifyRecentlyClosedTabsMenuView()
59                 verifyRecentlyClosedTabsPageTitle("Test_Page_1")
60                 verifyRecentlyClosedTabsUrl(website.url)
61             }
62         }.clickRecentlyClosedItem("Test_Page_1") {
63             verifyUrl(website.url.toString())
64         }
65     }
67     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2195812
68     // Verifies that tapping the "x" button removes a recently closed item from the list
69     @SmokeTest
70     @Test
71     fun deleteRecentlyClosedTabsItemTest() {
72         val website = getGenericAsset(mockWebServer, 1)
74         homeScreen {
75         }.openNavigationToolbar {
76         }.enterURLAndEnterToBrowser(website.url) {
77             mDevice.waitForIdle()
78         }.openComposeTabDrawer(activityTestRule) {
79             closeTab()
80         }
81         homeScreen {
82         }.openThreeDotMenu {
83         }.openHistory {
84         }.openRecentlyClosedTabs {
85             waitForListToExist()
86             registerAndCleanupIdlingResources(
87                 RecyclerViewIdlingResource(activityTestRule.activity.findViewById(R.id.recently_closed_list), 1),
88             ) {
89                 verifyRecentlyClosedTabsMenuView()
90             }
91             clickDeleteRecentlyClosedTabs()
92             verifyEmptyRecentlyClosedTabsList()
93         }
94     }
96     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1605515
97     @Test
98     fun openMultipleRecentlyClosedTabsTest() {
99         val firstPage = getGenericAsset(mockWebServer, 1)
100         val secondPage = getGenericAsset(mockWebServer, 2)
102         navigationToolbar {
103         }.enterURLAndEnterToBrowser(firstPage.url) {
104             waitForPageToLoad()
105         }.openComposeTabDrawer(activityTestRule) {
106         }.openNewTab {
107         }.submitQuery(secondPage.url.toString()) {
108             waitForPageToLoad()
109         }.openComposeTabDrawer(activityTestRule) {
110         }.openThreeDotMenu {
111         }.closeAllTabs {
112         }.openThreeDotMenu {
113         }.openHistory {
114         }.openRecentlyClosedTabs {
115             waitForListToExist()
116             longTapSelectItem(firstPage.url)
117             longTapSelectItem(secondPage.url)
118             openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
119         }.clickOpenInNewTab(activityTestRule) {
120             // URL verification to be removed once https://bugzilla.mozilla.org/show_bug.cgi?id=1839179 is fixed.
121             browserScreen {
122                 verifyPageContent(secondPage.content)
123                 verifyUrl(secondPage.url.toString())
124             }.openComposeTabDrawer(activityTestRule) {
125                 verifyNormalBrowsingButtonIsSelected(true)
126                 verifyExistingOpenTabs(firstPage.title, secondPage.title)
127             }
128         }
129     }
131     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2198690
132     @Test
133     fun openRecentlyClosedTabsInPrivateBrowsingTest() {
134         val firstPage = getGenericAsset(mockWebServer, 1)
135         val secondPage = getGenericAsset(mockWebServer, 2)
137         navigationToolbar {
138         }.enterURLAndEnterToBrowser(firstPage.url) {
139             waitForPageToLoad()
140         }.openComposeTabDrawer(activityTestRule) {
141         }.openNewTab {
142         }.submitQuery(secondPage.url.toString()) {
143             waitForPageToLoad()
144         }.openComposeTabDrawer(activityTestRule) {
145         }.openThreeDotMenu {
146         }.closeAllTabs {
147         }.openThreeDotMenu {
148         }.openHistory {
149         }.openRecentlyClosedTabs {
150             waitForListToExist()
151             longTapSelectItem(firstPage.url)
152             longTapSelectItem(secondPage.url)
153             openActionBarOverflowOrOptionsMenu(activityTestRule.activity)
154         }.clickOpenInPrivateTab(activityTestRule) {
155             // URL verification to be removed once https://bugzilla.mozilla.org/show_bug.cgi?id=1839179 is fixed.
156             browserScreen {
157                 verifyPageContent(secondPage.content)
158                 verifyUrl(secondPage.url.toString())
159             }.openComposeTabDrawer(activityTestRule) {
160                 verifyPrivateBrowsingButtonIsSelected(true)
161                 verifyExistingOpenTabs(firstPage.title, secondPage.title)
162             }
163         }
164     }
166     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1605514
167     @Test
168     fun shareMultipleRecentlyClosedTabsTest() {
169         val firstPage = getGenericAsset(mockWebServer, 1)
170         val secondPage = getGenericAsset(mockWebServer, 2)
171         val sharingApp = "Gmail"
172         val urlString = "${firstPage.url}\n\n${secondPage.url}"
174         navigationToolbar {
175         }.enterURLAndEnterToBrowser(firstPage.url) {
176             waitForPageToLoad()
177         }.openComposeTabDrawer(activityTestRule) {
178         }.openNewTab {
179         }.submitQuery(secondPage.url.toString()) {
180             waitForPageToLoad()
181         }.openComposeTabDrawer(activityTestRule) {
182         }.openThreeDotMenu {
183         }.closeAllTabs {
184         }.openThreeDotMenu {
185         }.openHistory {
186         }.openRecentlyClosedTabs {
187             waitForListToExist()
188             longTapSelectItem(firstPage.url)
189             longTapSelectItem(secondPage.url)
190         }.clickShare {
191             verifyShareTabsOverlay(firstPage.title, secondPage.title)
192             verifySharingWithSelectedApp(sharingApp, urlString, "${firstPage.title}, ${secondPage.title}")
193         }
194     }
196     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1065438
197     @Test
198     fun closedPrivateTabsAreNotSavedInRecentlyClosedTabsTest() {
199         val firstPage = getGenericAsset(mockWebServer, 1)
200         val secondPage = getGenericAsset(mockWebServer, 2)
202         homeScreen {}.togglePrivateBrowsingMode()
203         navigationToolbar {
204         }.enterURLAndEnterToBrowser(firstPage.url) {
205             waitForPageToLoad()
206         }.openComposeTabDrawer(activityTestRule) {
207         }.openNewTab {
208         }.submitQuery(secondPage.url.toString()) {
209             waitForPageToLoad()
210         }.openComposeTabDrawer(activityTestRule) {
211         }.openThreeDotMenu {
212         }.closeAllTabs {
213         }.openThreeDotMenu {
214         }.openHistory {
215         }.openRecentlyClosedTabs {
216             verifyEmptyRecentlyClosedTabsList()
217         }
218     }
220     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1065439
221     @Test
222     fun deletingBrowserHistoryClearsRecentlyClosedTabsListTest() {
223         val firstPage = getGenericAsset(mockWebServer, 1)
224         val secondPage = getGenericAsset(mockWebServer, 2)
226         navigationToolbar {
227         }.enterURLAndEnterToBrowser(firstPage.url) {
228             waitForPageToLoad()
229         }.openComposeTabDrawer(activityTestRule) {
230         }.openNewTab {
231         }.submitQuery(secondPage.url.toString()) {
232             waitForPageToLoad()
233         }.openComposeTabDrawer(activityTestRule) {
234         }.openThreeDotMenu {
235         }.closeAllTabs {
236         }.openThreeDotMenu {
237         }.openHistory {
238         }.openRecentlyClosedTabs {
239             waitForListToExist()
240         }.goBackToHistoryMenu {
241             clickDeleteAllHistoryButton()
242             selectEverythingOption()
243             confirmDeleteAllHistory()
244             verifyEmptyHistoryView()
245         }.openRecentlyClosedTabs {
246             verifyEmptyRecentlyClosedTabsList()
247         }
248     }