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.
iceraven-browser/app/src/androidTest/java/org/mozilla/fenix/ui/AddressAutofillTest.kt

421 lines
18 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 org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdContainingText
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestHelper.exitMenu
import org.mozilla.fenix.helpers.TestHelper.packageName
import org.mozilla.fenix.helpers.TestSetup
import org.mozilla.fenix.ui.robots.autofillScreen
import org.mozilla.fenix.ui.robots.clickPageObject
import org.mozilla.fenix.ui.robots.homeScreen
import org.mozilla.fenix.ui.robots.navigationToolbar
class AddressAutofillTest : TestSetup() {
object FirstAddressAutofillDetails {
var navigateToAutofillSettings = true
var isAddressAutofillEnabled = true
var userHasSavedAddress = false
var name = "Mozilla Fenix Firefox"
var streetAddress = "Harrison Street"
var city = "San Francisco"
var state = "Alaska"
var zipCode = "94105"
var country = "United States"
var phoneNumber = "555-5555"
var emailAddress = "foo@bar.com"
}
object SecondAddressAutofillDetails {
var navigateToAutofillSettings = false
var name = "Android Test Name"
var streetAddress = "Fort Street"
var city = "San Jose"
var state = "Arizona"
var zipCode = "95141"
var country = "United States"
var phoneNumber = "777-7777"
var emailAddress = "fuu@bar.org"
}
@get:Rule
val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836845
@SmokeTest
@Test
fun verifyAddressAutofillTest() {
val addressFormPage =
TestAssetHelper.getAddressFormAsset(mockWebServer)
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
}.goBack {
}.goBack {
}
navigationToolbar {
}.enterURLAndEnterToBrowser(addressFormPage.url) {
clickPageObject(itemWithResId("streetAddress"))
clickSelectAddressButton()
clickPageObject(
itemWithResIdContainingText(
"$packageName:id/address_name",
"Harrison Street",
),
)
verifyAutofilledAddress("Harrison Street")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836856
@SmokeTest
@Test
fun deleteSavedAddressTest() {
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
clickManageAddressesButton()
clickSavedAddress("Mozilla")
clickDeleteAddressButton()
clickCancelDeleteAddressButton()
clickDeleteAddressButton()
clickConfirmDeleteAddressButton()
verifyAddAddressButton()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836840
@Test
fun verifyAddAddressViewTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openAutofillSubMenu {
clickAddAddressButton()
verifyAddAddressView()
}.goBackToAutofillSettings {
verifyAutofillToolbarTitle()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836841
@Test
fun verifyEditAddressViewTest() {
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
clickManageAddressesButton()
clickSavedAddress("Mozilla")
verifyEditAddressView()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836839
@Test
fun verifyAddressAutofillToggleTest() {
val addressFormPage =
TestAssetHelper.getAddressFormAsset(mockWebServer)
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(addressFormPage.url) {
clickPageObject(itemWithResId("streetAddress"))
verifySelectAddressButtonExists(true)
}.openThreeDotMenu {
}.openSettings {
}.openAutofillSubMenu {
clickSaveAndAutofillAddressesOption()
verifyAddressAutofillSection(false, true)
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(addressFormPage.url) {
clickPageObject(itemWithResId("streetAddress"))
verifySelectAddressButtonExists(false)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836847
@Test
fun verifyManageAddressesPromptOptionTest() {
val addressFormPage =
TestAssetHelper.getAddressFormAsset(mockWebServer)
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(addressFormPage.url) {
clickPageObject(itemWithResId("streetAddress"))
clickSelectAddressButton()
}.clickManageAddressButton {
verifyAutofillToolbarTitle()
}.goBackToBrowser {
verifySaveLoginPromptIsNotDisplayed()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836849
@Test
fun verifyMultipleAddressesSelectionTest() {
val addressFormPage =
TestAssetHelper.getAddressFormAsset(mockWebServer)
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
clickManageAddressesButton()
clickAddAddressButton()
fillAndSaveAddress(
navigateToAutofillSettings = SecondAddressAutofillDetails.navigateToAutofillSettings,
name = SecondAddressAutofillDetails.name,
streetAddress = SecondAddressAutofillDetails.streetAddress,
city = SecondAddressAutofillDetails.city,
state = SecondAddressAutofillDetails.state,
zipCode = SecondAddressAutofillDetails.zipCode,
country = SecondAddressAutofillDetails.country,
phoneNumber = SecondAddressAutofillDetails.phoneNumber,
emailAddress = SecondAddressAutofillDetails.emailAddress,
)
verifyManageAddressesToolbarTitle()
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(addressFormPage.url) {
clickPageObject(itemWithResId("streetAddress"))
clickSelectAddressButton()
clickPageObject(
itemWithResIdContainingText(
"$packageName:id/address_name",
"Harrison Street",
),
)
verifyAutofilledAddress("Harrison Street")
clearAddressForm()
clickPageObject(itemWithResId("streetAddress"))
clickSelectAddressButton()
clickPageObject(
itemWithResIdContainingText(
"$packageName:id/address_name",
"Fort Street",
),
)
verifyAutofilledAddress("Fort Street")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836850
@Test
fun verifySavedAddressCanBeEditedTest() {
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
clickManageAddressesButton()
clickSavedAddress("Mozilla")
fillAndSaveAddress(
navigateToAutofillSettings = SecondAddressAutofillDetails.navigateToAutofillSettings,
name = SecondAddressAutofillDetails.name,
streetAddress = SecondAddressAutofillDetails.streetAddress,
city = SecondAddressAutofillDetails.city,
state = SecondAddressAutofillDetails.state,
zipCode = SecondAddressAutofillDetails.zipCode,
country = SecondAddressAutofillDetails.country,
phoneNumber = SecondAddressAutofillDetails.phoneNumber,
emailAddress = SecondAddressAutofillDetails.emailAddress,
)
verifyManageAddressesToolbarTitle()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836848
@Test
fun verifyStateFieldUpdatesInAccordanceWithCountryFieldTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openAutofillSubMenu {
verifyAddressAutofillSection(true, false)
clickAddAddressButton()
verifyCountryOption("United States")
verifyStateOption("Alabama")
verifyCountryOptions("Canada", "United States")
clickCountryOption("Canada")
verifyStateOption("Alberta")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836858
@Test
fun verifyFormFieldCanBeFilledManuallyTest() {
val addressFormPage =
TestAssetHelper.getAddressFormAsset(mockWebServer)
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(addressFormPage.url) {
clickPageObject(itemWithResId("streetAddress"))
clickSelectAddressButton()
clickPageObject(
itemWithResIdContainingText(
"$packageName:id/address_name",
"Harrison Street",
),
)
verifyAutofilledAddress("Harrison Street")
setTextForApartmentTextBox("Ap. 07")
verifyManuallyFilledAddress("Ap. 07")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836838
@Test
fun verifyAutofillAddressSectionTest() {
autofillScreen {
fillAndSaveAddress(
navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
name = FirstAddressAutofillDetails.name,
streetAddress = FirstAddressAutofillDetails.streetAddress,
city = FirstAddressAutofillDetails.city,
state = FirstAddressAutofillDetails.state,
zipCode = FirstAddressAutofillDetails.zipCode,
country = FirstAddressAutofillDetails.country,
phoneNumber = FirstAddressAutofillDetails.phoneNumber,
emailAddress = FirstAddressAutofillDetails.emailAddress,
)
verifyAddressAutofillSection(true, true)
clickManageAddressesButton()
verifyManageAddressesSection(
"Mozilla",
"Fenix",
"Firefox",
"Harrison Street",
"San Francisco",
"Alaska",
"94105",
"US",
"555-5555",
"foo@bar.com",
)
}
}
}