Bug 1807268 - Re-enable verifyShowClipboardSuggestionsToggleTest UI test r=jajohnson
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / HomeScreenTest.kt
blobf1cff8c781100ab95ede8e522bd7f89f8a23c0a6
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 org.junit.Rule
9 import org.junit.Test
10 import org.mozilla.fenix.customannotations.SmokeTest
11 import org.mozilla.fenix.helpers.HomeActivityTestRule
12 import org.mozilla.fenix.helpers.RetryTestRule
13 import org.mozilla.fenix.helpers.TestAssetHelper
14 import org.mozilla.fenix.helpers.TestHelper
15 import org.mozilla.fenix.helpers.TestSetup
16 import org.mozilla.fenix.ui.robots.homeScreen
17 import org.mozilla.fenix.ui.robots.navigationToolbar
18 import org.mozilla.fenix.ui.robots.searchScreen
20 /**
21  *  Tests for verifying the presence of home screen and first-run homescreen elements
22  *
23  *  Note: For private browsing, navigation bar and tabs see separate test class
24  *
25  */
27 class HomeScreenTest : TestSetup() {
28     @get:Rule(order = 0)
29     val activityTestRule =
30         AndroidComposeTestRule(HomeActivityTestRule.withDefaultSettingsOverrides()) { it.activity }
32     @Rule(order = 1)
33     @JvmField
34     val retryTestRule = RetryTestRule(3)
36     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/235396
37     @Test
38     fun homeScreenItemsTest() {
39         // Workaround to make sure the Pocket articles are populated before starting the test.
40         homeScreen {
41         }.openThreeDotMenu {
42         }.openSettings {
43         }.goBack {
44             verifyHomeWordmark()
45             verifyHomePrivateBrowsingButton()
46             verifyExistingTopSitesTabs("Wikipedia")
47             verifyExistingTopSitesTabs("Top Articles")
48             verifyExistingTopSitesTabs("Google")
49             verifyCollectionsHeader()
50             verifyNoCollectionsText()
51             scrollToPocketProvokingStories()
52             verifyThoughtProvokingStories(true)
53             verifyStoriesByTopicItems()
54             verifyCustomizeHomepageButton(true)
55             verifyNavigationToolbar()
56             verifyHomeMenuButton()
57             verifyTabButton()
58             verifyTabCounter("0")
59         }
60     }
62     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/244199
63     @Test
64     fun privateBrowsingHomeScreenItemsTest() {
65         homeScreen { }.togglePrivateBrowsingMode()
67         homeScreen {
68             verifyPrivateBrowsingHomeScreenItems()
69         }.openCommonMythsLink {
70             verifyUrl("common-myths-about-private-browsing")
71         }
72     }
74     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1364362
75     @SmokeTest
76     @Test
77     fun verifyJumpBackInSectionTest() {
78         activityTestRule.activityRule.applySettingsExceptions {
79             it.isRecentlyVisitedFeatureEnabled = false
80             it.isPocketEnabled = false
81         }
83         val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 4)
84         val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
86         navigationToolbar {
87         }.enterURLAndEnterToBrowser(firstWebPage.url) {
88             verifyPageContent(firstWebPage.content)
89             verifyUrl(firstWebPage.url.toString())
90         }.goToHomescreen {
91             verifyJumpBackInSectionIsDisplayed()
92             verifyJumpBackInItemTitle(activityTestRule, firstWebPage.title)
93             verifyJumpBackInItemWithUrl(activityTestRule, firstWebPage.url.toString())
94             verifyJumpBackInShowAllButton()
95         }.clickJumpBackInShowAllButton {
96             verifyExistingOpenTabs(firstWebPage.title)
97         }.closeTabDrawer {
98         }
100         navigationToolbar {
101         }.enterURLAndEnterToBrowser(secondWebPage.url) {
102             verifyPageContent(secondWebPage.content)
103             verifyUrl(secondWebPage.url.toString())
104         }.goToHomescreen {
105             verifyJumpBackInSectionIsDisplayed()
106             verifyJumpBackInItemTitle(activityTestRule, secondWebPage.title)
107             verifyJumpBackInItemWithUrl(activityTestRule, secondWebPage.url.toString())
108         }.openTabDrawer {
109             closeTabWithTitle(secondWebPage.title)
110         }.closeTabDrawer {
111         }
113         homeScreen {
114             verifyJumpBackInSectionIsDisplayed()
115             verifyJumpBackInItemTitle(activityTestRule, firstWebPage.title)
116             verifyJumpBackInItemWithUrl(activityTestRule, firstWebPage.url.toString())
117         }.openTabDrawer {
118             closeTab()
119         }
121         homeScreen {
122             verifyJumpBackInSectionIsNotDisplayed()
123         }
124     }
126     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1569839
127     @Test
128     fun verifyCustomizeHomepageButtonTest() {
129         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
131         navigationToolbar {
132         }.enterURLAndEnterToBrowser(defaultWebPage.url) {
133         }.goToHomescreen {
134         }.openCustomizeHomepage {
135             clickShortcutsButton()
136             clickJumpBackInButton()
137             clickRecentBookmarksButton()
138             clickRecentSearchesButton()
139             clickPocketButton()
140         }.goBackToHomeScreen {
141             verifyCustomizeHomepageButton(false)
142         }.openThreeDotMenu {
143         }.openCustomizeHome {
144             clickShortcutsButton()
145         }.goBackToHomeScreen {
146             verifyCustomizeHomepageButton(true)
147         }
148     }
150     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/414970
151     @SmokeTest
152     @Test
153     fun addPrivateBrowsingShortcutFromHomeScreenCFRTest() {
154         homeScreen {
155         }.triggerPrivateBrowsingShortcutPrompt {
156             verifyNoThanksPrivateBrowsingShortcutButton(activityTestRule)
157             verifyAddPrivateBrowsingShortcutButton(activityTestRule)
158             clickAddPrivateBrowsingShortcutButton(activityTestRule)
159             clickAddAutomaticallyButton()
160         }.openHomeScreenShortcut("Private ${TestHelper.appName}") {}
161         searchScreen {
162             verifySearchView()
163         }.dismissSearchBar {
164             verifyCommonMythsLink()
165         }
166     }
168     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1569867
169     @Test
170     fun verifyJumpBackInContextualHintTest() {
171         activityTestRule.activityRule.applySettingsExceptions {
172             it.isJumpBackInCFREnabled = true
173         }
175         val genericPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
177         navigationToolbar {
178         }.enterURLAndEnterToBrowser(genericPage.url) {
179         }.goToHomescreen {
180             verifyJumpBackInMessage(activityTestRule)
181         }
182     }