Bug 1807268 - Re-enable verifyShowClipboardSuggestionsToggleTest UI test r=jajohnson
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / SettingsGeneralTest.kt
blob5736fa14c12adda38befd4a22398a69d0bbbaa17
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 org.junit.Ignore
8 import org.junit.Rule
9 import org.junit.Test
10 import org.mozilla.fenix.FenixApplication
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.AppAndSystemHelper.runWithSystemLocaleChanged
15 import org.mozilla.fenix.helpers.DataGenerationHelper.getStringResource
16 import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
17 import org.mozilla.fenix.helpers.RecyclerViewIdlingResource
18 import org.mozilla.fenix.helpers.TestAssetHelper.getLoremIpsumAsset
19 import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeLong
20 import org.mozilla.fenix.helpers.TestHelper.mDevice
21 import org.mozilla.fenix.helpers.TestSetup
22 import org.mozilla.fenix.ui.robots.checkTextSizeOnWebsite
23 import org.mozilla.fenix.ui.robots.homeScreen
24 import org.mozilla.fenix.ui.util.FRENCH_LANGUAGE_HEADER
25 import org.mozilla.fenix.ui.util.FRENCH_SYSTEM_LOCALE_OPTION
26 import org.mozilla.fenix.ui.util.FR_SETTINGS
27 import org.mozilla.fenix.ui.util.ROMANIAN_LANGUAGE_HEADER
28 import java.util.Locale
30 /**
31  *  Tests for verifying the General section of the Settings menu
32  *
33  */
34 class SettingsGeneralTest : TestSetup() {
35     @get:Rule
36     val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
38     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2092697
39     @Test
40     fun verifyGeneralSettingsItemsTest() {
41         homeScreen {
42         }.openThreeDotMenu {
43         }.openSettings {
44             verifySettingsToolbar()
45             verifyGeneralHeading()
46             verifySearchButton()
47             verifySettingsOptionSummary("Search", "Google")
48             verifyTabsButton()
49             verifySettingsOptionSummary("Tabs", "Close manually")
50             verifyHomepageButton()
51             verifySettingsOptionSummary("Homepage", "Open on homepage after four hours")
52             verifyCustomizeButton()
53             verifyLoginsAndPasswordsButton()
54             verifyAutofillButton()
55             verifyAccessibilityButton()
56             verifyLanguageButton()
57             verifySetAsDefaultBrowserButton()
58             verifyDefaultBrowserToggle(false)
59         }
60     }
62     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/344213
63     @SmokeTest
64     @Test
65     fun verifyFontSizingChangeTest() {
66         // Goes through the settings and changes the default text on a webpage, then verifies if the text has changed.
67         val fenixApp = activityIntentTestRule.activity.applicationContext as FenixApplication
68         val webpage = getLoremIpsumAsset(mockWebServer).url
70         // This value will represent the text size percentage the webpage will scale to. The default value is 100%.
71         val textSizePercentage = 180
73         homeScreen {
74         }.openThreeDotMenu {
75         }.openSettings {
76         }.openAccessibilitySubMenu {
77             clickFontSizingSwitch()
78             verifyEnabledMenuItems()
79             changeTextSizeSlider(textSizePercentage)
80             verifyTextSizePercentage(textSizePercentage)
81         }.goBack {
82         }.goBack {
83         }.openNavigationToolbar {
84         }.enterURLAndEnterToBrowser(webpage) {
85             checkTextSizeOnWebsite(textSizePercentage, fenixApp.components)
86         }.openThreeDotMenu {
87         }.openSettings {
88         }.openAccessibilitySubMenu {
89             clickFontSizingSwitch()
90             verifyMenuItemsAreDisabled()
91         }
92     }
94     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/516079
95     @SmokeTest
96     @Test
97     fun setAppLanguageDifferentThanSystemLanguageTest() {
98         val enLanguageHeaderText = getStringResource(R.string.preferences_language)
100         homeScreen {
101         }.openThreeDotMenu {
102         }.openSettings {
103         }.openLanguageSubMenu {
104             registerAndCleanupIdlingResources(
105                 RecyclerViewIdlingResource(
106                     activityIntentTestRule.activity.findViewById(R.id.locale_list),
107                     2,
108                 ),
109             ) {
110                 selectLanguage("Romanian")
111                 verifyLanguageHeaderIsTranslated(ROMANIAN_LANGUAGE_HEADER)
112                 selectLanguage("Français")
113                 verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
114                 selectLanguage(FRENCH_SYSTEM_LOCALE_OPTION)
115                 verifyLanguageHeaderIsTranslated(enLanguageHeaderText)
116             }
117         }
118     }
120     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/516080
121     @Test
122     fun searchInLanguagesListTest() {
123         val systemLocaleDefault = getStringResource(R.string.default_locale_text)
125         homeScreen {
126         }.openThreeDotMenu {
127         }.openSettings {
128         }.openLanguageSubMenu {
129             verifyLanguageListIsDisplayed()
130             openSearchBar()
131             typeInSearchBar("French")
132             verifySearchResultsContains(systemLocaleDefault)
133             clearSearchBar()
134             typeInSearchBar("French")
135             selectLanguageSearchResult("Français")
136             verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
137             // Add this step when https://github.com/mozilla-mobile/fenix/issues/26733 is fixed
138             // verifyLanguageListIsDisplayed()
139         }
140     }
142     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/516078
143     // Because it requires changing system prefs, this test will run only on Debug builds
144     @Ignore("Failing due to app translation bug, see: https://github.com/mozilla-mobile/fenix/issues/26729")
145     @Test
146     fun verifyFollowDeviceLanguageTest() {
147         val frenchLocale = Locale("fr", "FR")
149         runWithSystemLocaleChanged(frenchLocale, activityIntentTestRule) {
150             mDevice.waitForIdle(waitingTimeLong)
152             homeScreen {
153             }.openThreeDotMenu {
154             }.openSettings(localizedText = FR_SETTINGS) {
155             }.openLanguageSubMenu(localizedText = FRENCH_LANGUAGE_HEADER) {
156                 verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
157                 verifySelectedLanguage(FRENCH_SYSTEM_LOCALE_OPTION)
158             }
159         }
160     }
162     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1360557
163     @Test
164     fun tabsSettingsMenuItemsTest() {
165         homeScreen {
166         }.openThreeDotMenu {
167         }.openSettings {
168             verifyTabsButton()
169             verifySettingsOptionSummary("Tabs", "Close manually")
170         }.openTabsSubMenu {
171             verifyTabViewOptions()
172             verifyCloseTabsOptions()
173             verifyMoveOldTabsToInactiveOptions()
174             verifySelectedCloseTabsOption("Never")
175             clickClosedTabsOption("After one day")
176             verifySelectedCloseTabsOption("After one day")
177         }.goBack {
178             verifySettingsOptionSummary("Tabs", "Close after one day")
179         }.openTabsSubMenu {
180             clickClosedTabsOption("After one week")
181             verifySelectedCloseTabsOption("After one week")
182         }.goBack {
183             verifySettingsOptionSummary("Tabs", "Close after one week")
184         }.openTabsSubMenu {
185             clickClosedTabsOption("After one month")
186             verifySelectedCloseTabsOption("After one month")
187         }.goBack {
188             verifySettingsOptionSummary("Tabs", "Close after one month")
189         }
190     }
192     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/243583
193     // For API>23
194     // Verifies the default browser switch opens the system default apps menu.
195     @SmokeTest
196     @Test
197     fun changeDefaultBrowserSetting() {
198         homeScreen {
199         }.openThreeDotMenu {
200         }.openSettings {
201             verifyDefaultBrowserToggle(false)
202             clickDefaultBrowserSwitch()
203             verifyAndroidDefaultAppsMenuAppears()
204         }
205         // Dismiss the request
206         mDevice.pressBack()
207     }