You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
10 KiB
Kotlin
297 lines
10 KiB
Kotlin
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.fenix.ui
|
|
|
|
import okhttp3.mockwebserver.MockWebServer
|
|
import org.junit.After
|
|
import org.junit.Before
|
|
import org.junit.Ignore
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.mozilla.fenix.FenixApplication
|
|
import org.mozilla.fenix.R
|
|
import org.mozilla.fenix.customannotations.SmokeTest
|
|
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
|
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
|
|
import org.mozilla.fenix.helpers.RecyclerViewIdlingResource
|
|
import org.mozilla.fenix.helpers.TestAssetHelper
|
|
import org.mozilla.fenix.helpers.TestAssetHelper.getLoremIpsumAsset
|
|
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeLong
|
|
import org.mozilla.fenix.helpers.TestHelper.getStringResource
|
|
import org.mozilla.fenix.helpers.TestHelper.mDevice
|
|
import org.mozilla.fenix.helpers.TestHelper.registerAndCleanupIdlingResources
|
|
import org.mozilla.fenix.helpers.TestHelper.runWithSystemLocaleChanged
|
|
import org.mozilla.fenix.ui.SettingsBasicsTest.CreditCard.MOCK_CREDIT_CARD_NUMBER
|
|
import org.mozilla.fenix.ui.SettingsBasicsTest.CreditCard.MOCK_EXPIRATION_MONTH
|
|
import org.mozilla.fenix.ui.SettingsBasicsTest.CreditCard.MOCK_EXPIRATION_YEAR
|
|
import org.mozilla.fenix.ui.SettingsBasicsTest.CreditCard.MOCK_LAST_CARD_DIGITS
|
|
import org.mozilla.fenix.ui.SettingsBasicsTest.CreditCard.MOCK_NAME_ON_CARD
|
|
import org.mozilla.fenix.ui.robots.checkTextSizeOnWebsite
|
|
import org.mozilla.fenix.ui.robots.homeScreen
|
|
import org.mozilla.fenix.ui.robots.navigationToolbar
|
|
import org.mozilla.fenix.ui.util.FRENCH_LANGUAGE_HEADER
|
|
import org.mozilla.fenix.ui.util.FRENCH_SYSTEM_LOCALE_OPTION
|
|
import org.mozilla.fenix.ui.util.FR_SETTINGS
|
|
import org.mozilla.fenix.ui.util.ROMANIAN_LANGUAGE_HEADER
|
|
import java.time.LocalDate
|
|
import java.util.Locale
|
|
|
|
/**
|
|
* Tests for verifying the General section of the Settings menu
|
|
*
|
|
*/
|
|
class SettingsBasicsTest {
|
|
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
|
private lateinit var mockWebServer: MockWebServer
|
|
|
|
object CreditCard {
|
|
const val MOCK_CREDIT_CARD_NUMBER = "5555555555554444"
|
|
const val MOCK_LAST_CARD_DIGITS = "4444"
|
|
const val MOCK_NAME_ON_CARD = "Mastercard"
|
|
const val MOCK_EXPIRATION_MONTH = "February"
|
|
val MOCK_EXPIRATION_YEAR = (LocalDate.now().year + 1).toString()
|
|
}
|
|
|
|
@get:Rule
|
|
val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
|
|
|
|
@Before
|
|
fun setUp() {
|
|
mockWebServer = MockWebServer().apply {
|
|
dispatcher = AndroidAssetDispatcher()
|
|
start()
|
|
}
|
|
}
|
|
|
|
@After
|
|
fun tearDown() {
|
|
mockWebServer.shutdown()
|
|
}
|
|
|
|
@Test
|
|
fun settingsGeneralItemsTests() {
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
verifySettingsToolbar()
|
|
verifyGeneralHeading()
|
|
verifySearchButton()
|
|
verifyTabsButton()
|
|
verifyHomepageButton()
|
|
verifyCustomizeButton()
|
|
verifyLoginsAndPasswordsButton()
|
|
verifyAutofillButton()
|
|
verifyAccessibilityButton()
|
|
verifyLanguageButton()
|
|
verifySetAsDefaultBrowserButton()
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun changeAccessibiltySettings() {
|
|
// Goes through the settings and changes the default text on a webpage, then verifies if the text has changed.
|
|
val fenixApp = activityIntentTestRule.activity.applicationContext as FenixApplication
|
|
val webpage = getLoremIpsumAsset(mockWebServer).url
|
|
|
|
// This value will represent the text size percentage the webpage will scale to. The default value is 100%.
|
|
val textSizePercentage = 180
|
|
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openAccessibilitySubMenu {
|
|
clickFontSizingSwitch()
|
|
verifyEnabledMenuItems()
|
|
changeTextSizeSlider(textSizePercentage)
|
|
verifyTextSizePercentage(textSizePercentage)
|
|
}.goBack {
|
|
}.goBack {
|
|
}.openNavigationToolbar {
|
|
}.enterURLAndEnterToBrowser(webpage) {
|
|
checkTextSizeOnWebsite(textSizePercentage, fenixApp.components)
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openAccessibilitySubMenu {
|
|
clickFontSizingSwitch()
|
|
verifyMenuItemsAreDisabled()
|
|
}
|
|
}
|
|
|
|
@SmokeTest
|
|
@Test
|
|
fun verifyAddressAutofillTest() {
|
|
val addressFormPage =
|
|
TestAssetHelper.getAddressFormAsset(mockWebServer)
|
|
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openAutofillSubMenu {
|
|
clickAddAddressButton()
|
|
fillAndSaveAddress(
|
|
"Mozilla",
|
|
"Fenix",
|
|
"Firefox",
|
|
"Harrison Street",
|
|
"San Francisco",
|
|
"Alaska",
|
|
"94105",
|
|
"United States",
|
|
"555-5555",
|
|
"foo@bar.com",
|
|
)
|
|
}.goBack {
|
|
}.goBack {
|
|
}
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(addressFormPage.url) {
|
|
clickStreetAddressTextBox()
|
|
clickSelectAddressButton()
|
|
clickAddressSuggestion("Harrison Street")
|
|
verifyAutofilledAddress("Harrison Street")
|
|
}
|
|
}
|
|
|
|
@SmokeTest
|
|
@Test
|
|
fun deleteSavedAddressTest() {
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openAutofillSubMenu {
|
|
clickAddAddressButton()
|
|
fillAndSaveAddress(
|
|
"Mozilla",
|
|
"Fenix",
|
|
"Firefox",
|
|
"Harrison Street",
|
|
"San Francisco",
|
|
"Alaska",
|
|
"94105",
|
|
"United States",
|
|
"555-5555",
|
|
"foo@bar.com",
|
|
)
|
|
clickManageAddressesButton()
|
|
clickSavedAddress("Mozilla")
|
|
clickDeleteAddressButton()
|
|
clickCancelDeleteAddressButton()
|
|
clickDeleteAddressButton()
|
|
clickConfirmDeleteAddressButton()
|
|
verifyAddAddressButton()
|
|
}
|
|
}
|
|
|
|
@SmokeTest
|
|
@Test
|
|
fun verifyCreditCardAutofillTest() {
|
|
val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
|
|
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openAutofillSubMenu {
|
|
clickAddCreditCardButton()
|
|
fillAndSaveCreditCard(MOCK_CREDIT_CARD_NUMBER, MOCK_NAME_ON_CARD, MOCK_EXPIRATION_MONTH, MOCK_EXPIRATION_YEAR)
|
|
// Opening Manage saved cards to dismiss here the Secure your credit prompt
|
|
clickManageSavedCardsButton()
|
|
clickSecuredCreditCardsLaterButton()
|
|
}.goBackToAutofillSettings {
|
|
}.goBack {
|
|
}.goBack {
|
|
}
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(creditCardFormPage.url) {
|
|
clickCardNumberTextBox()
|
|
clickSelectCreditCardButton()
|
|
clickCreditCardSuggestion(MOCK_LAST_CARD_DIGITS)
|
|
verifyAutofilledCreditCard(MOCK_CREDIT_CARD_NUMBER)
|
|
}
|
|
}
|
|
|
|
@SmokeTest
|
|
@Test
|
|
fun deleteSavedCreditCardTest() {
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openAutofillSubMenu {
|
|
clickAddCreditCardButton()
|
|
fillAndSaveCreditCard(MOCK_CREDIT_CARD_NUMBER, MOCK_NAME_ON_CARD, MOCK_EXPIRATION_MONTH, MOCK_EXPIRATION_YEAR)
|
|
clickManageSavedCardsButton()
|
|
clickSecuredCreditCardsLaterButton()
|
|
clickSavedCreditCard()
|
|
clickDeleteCreditCardButton()
|
|
clickConfirmDeleteCreditCardButton()
|
|
verifyAddCreditCardsButton()
|
|
}
|
|
}
|
|
|
|
@SmokeTest
|
|
@Test
|
|
fun switchLanguageTest() {
|
|
val enLanguageHeaderText = getStringResource(R.string.preferences_language)
|
|
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openLanguageSubMenu {
|
|
registerAndCleanupIdlingResources(
|
|
RecyclerViewIdlingResource(
|
|
activityIntentTestRule.activity.findViewById(R.id.locale_list),
|
|
2,
|
|
),
|
|
) {
|
|
selectLanguage("Romanian")
|
|
verifyLanguageHeaderIsTranslated(ROMANIAN_LANGUAGE_HEADER)
|
|
selectLanguage("Français")
|
|
verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
|
|
selectLanguage(FRENCH_SYSTEM_LOCALE_OPTION)
|
|
verifyLanguageHeaderIsTranslated(enLanguageHeaderText)
|
|
}
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun searchInLanguagesListTest() {
|
|
val systemLocaleDefault = getStringResource(R.string.default_locale_text)
|
|
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openLanguageSubMenu {
|
|
verifyLanguageListIsDisplayed()
|
|
openSearchBar()
|
|
typeInSearchBar("French")
|
|
verifySearchResultsContains(systemLocaleDefault)
|
|
clearSearchBar()
|
|
typeInSearchBar("French")
|
|
selectLanguageSearchResult("Français")
|
|
verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
|
|
// Add this step when https://github.com/mozilla-mobile/fenix/issues/26733 is fixed
|
|
// verifyLanguageListIsDisplayed()
|
|
}
|
|
}
|
|
|
|
// Because it requires changing system prefs, this test will run only on Debug builds
|
|
@Ignore("Failing due to app translation bug, see: https://github.com/mozilla-mobile/fenix/issues/26729")
|
|
@Test
|
|
fun frenchSystemLocaleTest() {
|
|
val frenchLocale = Locale("fr", "FR")
|
|
|
|
runWithSystemLocaleChanged(frenchLocale, activityIntentTestRule) {
|
|
mDevice.waitForIdle(waitingTimeLong)
|
|
|
|
homeScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings(localizedText = FR_SETTINGS) {
|
|
}.openLanguageSubMenu(localizedText = FRENCH_LANGUAGE_HEADER) {
|
|
verifyLanguageHeaderIsTranslated(FRENCH_LANGUAGE_HEADER)
|
|
verifySelectedLanguage(FRENCH_SYSTEM_LOCALE_OPTION)
|
|
}
|
|
}
|
|
}
|
|
}
|