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
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
31 * Tests for verifying the General section of the Settings menu
34 class SettingsGeneralTest : TestSetup() {
36 val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
38 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2092697
40 fun verifyGeneralSettingsItemsTest() {
44 verifySettingsToolbar()
45 verifyGeneralHeading()
47 verifySettingsOptionSummary("Search", "Google")
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)
62 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/344213
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
76 }.openAccessibilitySubMenu {
77 clickFontSizingSwitch()
78 verifyEnabledMenuItems()
79 changeTextSizeSlider(textSizePercentage)
80 verifyTextSizePercentage(textSizePercentage)
83 }.openNavigationToolbar {
84 }.enterURLAndEnterToBrowser(webpage) {
85 checkTextSizeOnWebsite(textSizePercentage, fenixApp.components)
88 }.openAccessibilitySubMenu {
89 clickFontSizingSwitch()
90 verifyMenuItemsAreDisabled()
94 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/516079
97 fun setAppLanguageDifferentThanSystemLanguageTest() {
98 val enLanguageHeaderText = getStringResource(R.string.preferences_language)
103 }.openLanguageSubMenu {
104 registerAndCleanupIdlingResources(
105 RecyclerViewIdlingResource(
106 activityIntentTestRule.activity.findViewById(R.id.locale_list),
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)
120 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/516080
122 fun searchInLanguagesListTest() {
123 val systemLocaleDefault = getStringResource(R.string.default_locale_text)
128 }.openLanguageSubMenu {
129 verifyLanguageListIsDisplayed()
131 typeInSearchBar("French")
132 verifySearchResultsContains(systemLocaleDefault)
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()
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")
146 fun verifyFollowDeviceLanguageTest() {
147 val frenchLocale = Locale("fr", "FR")
149 runWithSystemLocaleChanged(frenchLocale, activityIntentTestRule) {
150 mDevice.waitForIdle(waitingTimeLong)
154 }.openSettings(localizedText = FR_SETTINGS) {
155 }.openLanguageSubMenu(localizedText = FRENCH_LANGUAGE_HEADER) {
156 verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
157 verifySelectedLanguage(FRENCH_SYSTEM_LOCALE_OPTION)
162 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1360557
164 fun tabsSettingsMenuItemsTest() {
169 verifySettingsOptionSummary("Tabs", "Close manually")
171 verifyTabViewOptions()
172 verifyCloseTabsOptions()
173 verifyMoveOldTabsToInactiveOptions()
174 verifySelectedCloseTabsOption("Never")
175 clickClosedTabsOption("After one day")
176 verifySelectedCloseTabsOption("After one day")
178 verifySettingsOptionSummary("Tabs", "Close after one day")
180 clickClosedTabsOption("After one week")
181 verifySelectedCloseTabsOption("After one week")
183 verifySettingsOptionSummary("Tabs", "Close after one week")
185 clickClosedTabsOption("After one month")
186 verifySelectedCloseTabsOption("After one month")
188 verifySettingsOptionSummary("Tabs", "Close after one month")
192 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/243583
194 // Verifies the default browser switch opens the system default apps menu.
197 fun changeDefaultBrowserSetting() {
201 verifyDefaultBrowserToggle(false)
202 clickDefaultBrowserSwitch()
203 verifyAndroidDefaultAppsMenuAppears()
205 // Dismiss the request