Bug 1914777 - Use cbindgen for border-image-repeat. r=firefox-style-system-reviewers...
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / NavigationToolbarTest.kt
blob80703b48b2725a2315d1d1ef366eafa3d0b1731b
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.core.net.toUri
9 import org.junit.Rule
10 import org.junit.Test
11 import org.mozilla.fenix.customannotations.SmokeTest
12 import org.mozilla.fenix.helpers.AppAndSystemHelper.runWithSystemLocaleChanged
13 import org.mozilla.fenix.helpers.HomeActivityTestRule
14 import org.mozilla.fenix.helpers.TestAssetHelper
15 import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeLong
16 import org.mozilla.fenix.helpers.TestHelper.mDevice
17 import org.mozilla.fenix.helpers.TestSetup
18 import org.mozilla.fenix.ui.robots.homeScreen
19 import org.mozilla.fenix.ui.robots.navigationToolbar
20 import java.util.Locale
22 /**
23  *  Tests for verifying basic functionality of browser navigation and page related interactions
24  *
25  *  Including:
26  *  - Visiting a URL
27  *  - Back and Forward navigation
28  *  - Refresh
29  *  - Find in page
30  */
32 class NavigationToolbarTest : TestSetup() {
33     @get:Rule
34     val composeTestRule =
35         AndroidComposeTestRule(
36             HomeActivityTestRule.withDefaultSettingsOverrides(),
37         ) { it.activity }
39     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/987326
40     // Swipes the nav bar left/right to switch between tabs
41     @SmokeTest
42     @Test
43     fun swipeToSwitchTabTest() {
44         val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
45         val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
47         navigationToolbar {
48         }.enterURLAndEnterToBrowser(firstWebPage.url) {
49         }.openTabDrawer(composeTestRule) {
50         }.openNewTab {
51         }.submitQuery(secondWebPage.url.toString()) {
52             swipeNavBarRight(secondWebPage.url.toString())
53             verifyUrl(firstWebPage.url.toString())
54             swipeNavBarLeft(firstWebPage.url.toString())
55             verifyUrl(secondWebPage.url.toString())
56         }
57     }
59     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/987327
60     // Because it requires changing system prefs, this test will run only on Debug builds
61     @Test
62     fun swipeToSwitchTabInRTLTest() {
63         val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
64         val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
65         val arabicLocale = Locale("ar", "AR")
67         runWithSystemLocaleChanged(arabicLocale, composeTestRule.activityRule) {
68             navigationToolbar {
69             }.enterURLAndEnterToBrowser(firstWebPage.url) {
70             }.openTabDrawer(composeTestRule) {
71             }.openNewTab {
72             }.submitQuery(secondWebPage.url.toString()) {
73                 swipeNavBarLeft(secondWebPage.url.toString())
74                 verifyUrl(firstWebPage.url.toString())
75                 swipeNavBarRight(firstWebPage.url.toString())
76                 verifyUrl(secondWebPage.url.toString())
77             }
78         }
79     }
81     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/2265279
82     @SmokeTest
83     @Test
84     fun verifySecurePageSecuritySubMenuTest() {
85         val defaultWebPage = "https://mozilla-mobile.github.io/testapp/loginForm"
86         val defaultWebPageTitle = "Login_form"
88         navigationToolbar {
89         }.enterURLAndEnterToBrowser(defaultWebPage.toUri()) {
90             waitForPageToLoad(pageLoadWaitingTime = waitingTimeLong)
91         }.openSiteSecuritySheet {
92             verifyQuickActionSheet(defaultWebPage, true)
93             openSecureConnectionSubMenu(true)
94             verifySecureConnectionSubMenu(defaultWebPageTitle, defaultWebPage, true)
95         }
96     }
98     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/2265280
99     @SmokeTest
100     @Test
101     fun verifyInsecurePageSecuritySubMenuTest() {
102         val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
104         navigationToolbar {
105         }.enterURLAndEnterToBrowser(defaultWebPage.url) {
106             waitForPageToLoad()
107         }.openSiteSecuritySheet {
108             verifyQuickActionSheet(defaultWebPage.url.toString(), false)
109             openSecureConnectionSubMenu(false)
110             verifySecureConnectionSubMenu(defaultWebPage.title, defaultWebPage.url.toString(), false)
111         }
112     }
114     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/1661318
115     @SmokeTest
116     @Test
117     fun verifyClearCookiesFromQuickSettingsTest() {
118         val helpPageUrl = "mozilla.org"
120         homeScreen {
121         }.openThreeDotMenu {
122         }.openHelp {
123         }.openSiteSecuritySheet {
124             clickQuickActionSheetClearSiteData()
125             verifyClearSiteDataPrompt(helpPageUrl)
126         }
127     }
129     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/1360555
130     @SmokeTest
131     @Test
132     fun goToHomeScreenTest() {
133         val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
135         navigationToolbar {
136         }.enterURLAndEnterToBrowser(genericURL.url) {
137             mDevice.waitForIdle()
138         }.goToHomescreen {
139             verifyHomeScreen()
140         }
141     }
143     // TestRail link: https://mozilla.testrail.io/index.php?/cases/view/2256552
144     @SmokeTest
145     @Test
146     fun goToHomeScreenInPrivateModeTest() {
147         val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
149         homeScreen {
150             togglePrivateBrowsingModeOnOff()
151         }
153         navigationToolbar {
154         }.enterURLAndEnterToBrowser(genericURL.url) {
155             mDevice.waitForIdle()
156         }.goToHomescreen {
157             verifyHomeScreen()
158         }
159     }