package org.mozilla.fenix.ui import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.exitMenu import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar class AddressAutofillTest { private lateinit var mockWebServer: MockWebServer @get:Rule val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides() @Before fun setUp() { mockWebServer = MockWebServer().apply { dispatcher = AndroidAssetDispatcher() start() } } @After fun tearDown() { mockWebServer.shutdown() } @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() } } @Test fun verifyAddAddressViewTest() { homeScreen { }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { clickAddAddressButton() verifyAddAddressView() }.goBackToAutofillSettings { verifyAutofillToolbarTitle() } } @Test fun verifyEditAddressViewTest() { 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") verifyEditAddressView() } } @Test fun verifyAddressAutofillToggleTest() { val addressFormPage = TestAssetHelper.getAddressFormAsset(mockWebServer) homeScreen { }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { verifyAddressAutofillSection(true, false) clickAddAddressButton() fillAndSaveAddress( "Mozilla", "Fenix", "Firefox", "Harrison Street", "San Francisco", "Alaska", "94105", "United States", "555-5555", "foo@bar.com", ) } exitMenu() navigationToolbar { }.enterURLAndEnterToBrowser(addressFormPage.url) { clickStreetAddressTextBox() verifySelectAddressButtonExists(true) }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { clickSaveAndAutofillAddressesOption() verifyAddressAutofillSection(false, true) } exitMenu() navigationToolbar { }.enterURLAndEnterToBrowser(addressFormPage.url) { clickStreetAddressTextBox() verifySelectAddressButtonExists(false) } } @Test fun verifyManageAddressesPromptOptionTest() { val addressFormPage = TestAssetHelper.getAddressFormAsset(mockWebServer) homeScreen { }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { verifyAddressAutofillSection(true, false) clickAddAddressButton() fillAndSaveAddress( "Mozilla", "Fenix", "Firefox", "Harrison Street", "San Francisco", "Alaska", "94105", "United States", "555-5555", "foo@bar.com", ) } exitMenu() navigationToolbar { }.enterURLAndEnterToBrowser(addressFormPage.url) { clickStreetAddressTextBox() clickSelectAddressButton() }.clickManageAddressButton { verifyAutofillToolbarTitle() }.goBackToBrowser { verifySaveLoginPromptIsNotDisplayed() } } @Test fun verifyAddressAutofillSelectionTest() { val addressFormPage = TestAssetHelper.getAddressFormAsset(mockWebServer) homeScreen { }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { verifyAddressAutofillSection(true, false) clickAddAddressButton() fillAndSaveAddress( "Mozilla", "Fenix", "Firefox", "Harrison Street", "San Francisco", "Alaska", "94105", "United States", "555-5555", "foo@bar.com", ) clickManageAddressesButton() clickAddAddressButton() fillAndSaveAddress( "Android", "Test", "Name", "Fort Street", "San Jose", "Arizona", "95141", "United States", "777-7777", "fuu@bar.org", ) verifyManageAddressesToolbarTitle() } exitMenu() navigationToolbar { }.enterURLAndEnterToBrowser(addressFormPage.url) { clickStreetAddressTextBox() clickSelectAddressButton() clickAddressSuggestion("Harrison Street") verifyAutofilledAddress("Harrison Street") clearAddressForm() clickStreetAddressTextBox() clickSelectAddressButton() clickAddressSuggestion("Fort Street") verifyAutofilledAddress("Fort Street") } } @Test fun verifySavedAddressCanBeEditedTest() { homeScreen { }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { verifyAddressAutofillSection(true, false) clickAddAddressButton() fillAndSaveAddress( "Mozilla", "Fenix", "Firefox", "Harrison Street", "San Francisco", "Alaska", "94105", "United States", "555-5555", "foo@bar.com", ) clickManageAddressesButton() clickSavedAddress("Mozilla") fillAndSaveAddress( "Android", "Test", "Name", "Fort Street", "San Jose", "Arizona", "95141", "United States", "777-7777", "fuu@bar.org", ) verifyManageAddressesToolbarTitle() } } @Test fun verifyStateFieldUpdatesInAccordanceWithCountryFieldTest() { homeScreen { }.openThreeDotMenu { }.openSettings { }.openAutofillSubMenu { verifyAddressAutofillSection(true, false) clickAddAddressButton() verifyCountryOption("United States") verifyStateOption("Alabama") verifyCountryOptions("Canada", "United States") clickCountryOption("Canada") verifyStateOption("Alberta") } } }