Bug 1807268 - Re-enable verifyShowClipboardSuggestionsToggleTest UI test r=jajohnson
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / AddressAutofillTest.kt
blob61a3c0b7fc4fb7a96ee748bcc7a7ac09c5d12645
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.Rule
8 import org.junit.Test
9 import org.mozilla.fenix.customannotations.SmokeTest
10 import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
11 import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId
12 import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdContainingText
13 import org.mozilla.fenix.helpers.TestAssetHelper
14 import org.mozilla.fenix.helpers.TestHelper.exitMenu
15 import org.mozilla.fenix.helpers.TestHelper.packageName
16 import org.mozilla.fenix.helpers.TestSetup
17 import org.mozilla.fenix.ui.robots.autofillScreen
18 import org.mozilla.fenix.ui.robots.clickPageObject
19 import org.mozilla.fenix.ui.robots.homeScreen
20 import org.mozilla.fenix.ui.robots.navigationToolbar
22 class AddressAutofillTest : TestSetup() {
23     object FirstAddressAutofillDetails {
24         var navigateToAutofillSettings = true
25         var isAddressAutofillEnabled = true
26         var userHasSavedAddress = false
27         var name = "Mozilla Fenix Firefox"
28         var streetAddress = "Harrison Street"
29         var city = "San Francisco"
30         var state = "Alaska"
31         var zipCode = "94105"
32         var country = "United States"
33         var phoneNumber = "555-5555"
34         var emailAddress = "foo@bar.com"
35     }
37     object SecondAddressAutofillDetails {
38         var navigateToAutofillSettings = false
39         var name = "Android Test Name"
40         var streetAddress = "Fort Street"
41         var city = "San Jose"
42         var state = "Arizona"
43         var zipCode = "95141"
44         var country = "United States"
45         var phoneNumber = "777-7777"
46         var emailAddress = "fuu@bar.org"
47     }
49     @get:Rule
50     val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
52     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836845
53     @SmokeTest
54     @Test
55     fun verifyAddressAutofillTest() {
56         val addressFormPage =
57             TestAssetHelper.getAddressFormAsset(mockWebServer)
59         autofillScreen {
60             fillAndSaveAddress(
61                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
62                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
63                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
64                 name = FirstAddressAutofillDetails.name,
65                 streetAddress = FirstAddressAutofillDetails.streetAddress,
66                 city = FirstAddressAutofillDetails.city,
67                 state = FirstAddressAutofillDetails.state,
68                 zipCode = FirstAddressAutofillDetails.zipCode,
69                 country = FirstAddressAutofillDetails.country,
70                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
71                 emailAddress = FirstAddressAutofillDetails.emailAddress,
72             )
73         }.goBack {
74         }.goBack {
75         }
76         navigationToolbar {
77         }.enterURLAndEnterToBrowser(addressFormPage.url) {
78             clickPageObject(itemWithResId("streetAddress"))
79             clickSelectAddressButton()
80             clickPageObject(
81                 itemWithResIdContainingText(
82                     "$packageName:id/address_name",
83                     "Harrison Street",
84                 ),
85             )
86             verifyAutofilledAddress("Harrison Street")
87         }
88     }
90     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836856
91     @SmokeTest
92     @Test
93     fun deleteSavedAddressTest() {
94         autofillScreen {
95             fillAndSaveAddress(
96                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
97                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
98                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
99                 name = FirstAddressAutofillDetails.name,
100                 streetAddress = FirstAddressAutofillDetails.streetAddress,
101                 city = FirstAddressAutofillDetails.city,
102                 state = FirstAddressAutofillDetails.state,
103                 zipCode = FirstAddressAutofillDetails.zipCode,
104                 country = FirstAddressAutofillDetails.country,
105                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
106                 emailAddress = FirstAddressAutofillDetails.emailAddress,
107             )
108             clickManageAddressesButton()
109             clickSavedAddress("Mozilla")
110             clickDeleteAddressButton()
111             clickCancelDeleteAddressButton()
112             clickDeleteAddressButton()
113             clickConfirmDeleteAddressButton()
114             verifyAddAddressButton()
115         }
116     }
118     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836840
119     @Test
120     fun verifyAddAddressViewTest() {
121         homeScreen {
122         }.openThreeDotMenu {
123         }.openSettings {
124         }.openAutofillSubMenu {
125             clickAddAddressButton()
126             verifyAddAddressView()
127         }.goBackToAutofillSettings {
128             verifyAutofillToolbarTitle()
129         }
130     }
132     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836841
133     @Test
134     fun verifyEditAddressViewTest() {
135         autofillScreen {
136             fillAndSaveAddress(
137                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
138                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
139                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
140                 name = FirstAddressAutofillDetails.name,
141                 streetAddress = FirstAddressAutofillDetails.streetAddress,
142                 city = FirstAddressAutofillDetails.city,
143                 state = FirstAddressAutofillDetails.state,
144                 zipCode = FirstAddressAutofillDetails.zipCode,
145                 country = FirstAddressAutofillDetails.country,
146                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
147                 emailAddress = FirstAddressAutofillDetails.emailAddress,
148             )
149             clickManageAddressesButton()
150             clickSavedAddress("Mozilla")
151             verifyEditAddressView()
152         }
153     }
155     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836839
156     @Test
157     fun verifyAddressAutofillToggleTest() {
158         val addressFormPage =
159             TestAssetHelper.getAddressFormAsset(mockWebServer)
161         autofillScreen {
162             fillAndSaveAddress(
163                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
164                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
165                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
166                 name = FirstAddressAutofillDetails.name,
167                 streetAddress = FirstAddressAutofillDetails.streetAddress,
168                 city = FirstAddressAutofillDetails.city,
169                 state = FirstAddressAutofillDetails.state,
170                 zipCode = FirstAddressAutofillDetails.zipCode,
171                 country = FirstAddressAutofillDetails.country,
172                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
173                 emailAddress = FirstAddressAutofillDetails.emailAddress,
174             )
175         }
177         exitMenu()
179         navigationToolbar {
180         }.enterURLAndEnterToBrowser(addressFormPage.url) {
181             clickPageObject(itemWithResId("streetAddress"))
182             verifySelectAddressButtonExists(true)
183         }.openThreeDotMenu {
184         }.openSettings {
185         }.openAutofillSubMenu {
186             clickSaveAndAutofillAddressesOption()
187             verifyAddressAutofillSection(false, true)
188         }
190         exitMenu()
192         navigationToolbar {
193         }.enterURLAndEnterToBrowser(addressFormPage.url) {
194             clickPageObject(itemWithResId("streetAddress"))
195             verifySelectAddressButtonExists(false)
196         }
197     }
199     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836847
200     @Test
201     fun verifyManageAddressesPromptOptionTest() {
202         val addressFormPage =
203             TestAssetHelper.getAddressFormAsset(mockWebServer)
205         autofillScreen {
206             fillAndSaveAddress(
207                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
208                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
209                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
210                 name = FirstAddressAutofillDetails.name,
211                 streetAddress = FirstAddressAutofillDetails.streetAddress,
212                 city = FirstAddressAutofillDetails.city,
213                 state = FirstAddressAutofillDetails.state,
214                 zipCode = FirstAddressAutofillDetails.zipCode,
215                 country = FirstAddressAutofillDetails.country,
216                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
217                 emailAddress = FirstAddressAutofillDetails.emailAddress,
218             )
219         }
221         exitMenu()
223         navigationToolbar {
224         }.enterURLAndEnterToBrowser(addressFormPage.url) {
225             clickPageObject(itemWithResId("streetAddress"))
226             clickSelectAddressButton()
227         }.clickManageAddressButton {
228             verifyAutofillToolbarTitle()
229         }.goBackToBrowser {
230             verifySaveLoginPromptIsNotDisplayed()
231         }
232     }
234     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836849
235     @Test
236     fun verifyMultipleAddressesSelectionTest() {
237         val addressFormPage =
238             TestAssetHelper.getAddressFormAsset(mockWebServer)
240         autofillScreen {
241             fillAndSaveAddress(
242                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
243                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
244                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
245                 name = FirstAddressAutofillDetails.name,
246                 streetAddress = FirstAddressAutofillDetails.streetAddress,
247                 city = FirstAddressAutofillDetails.city,
248                 state = FirstAddressAutofillDetails.state,
249                 zipCode = FirstAddressAutofillDetails.zipCode,
250                 country = FirstAddressAutofillDetails.country,
251                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
252                 emailAddress = FirstAddressAutofillDetails.emailAddress,
253             )
254             clickManageAddressesButton()
255             clickAddAddressButton()
256             fillAndSaveAddress(
257                 navigateToAutofillSettings = SecondAddressAutofillDetails.navigateToAutofillSettings,
258                 name = SecondAddressAutofillDetails.name,
259                 streetAddress = SecondAddressAutofillDetails.streetAddress,
260                 city = SecondAddressAutofillDetails.city,
261                 state = SecondAddressAutofillDetails.state,
262                 zipCode = SecondAddressAutofillDetails.zipCode,
263                 country = SecondAddressAutofillDetails.country,
264                 phoneNumber = SecondAddressAutofillDetails.phoneNumber,
265                 emailAddress = SecondAddressAutofillDetails.emailAddress,
266             )
267             verifyManageAddressesToolbarTitle()
268         }
270         exitMenu()
272         navigationToolbar {
273         }.enterURLAndEnterToBrowser(addressFormPage.url) {
274             clickPageObject(itemWithResId("streetAddress"))
275             clickSelectAddressButton()
276             clickPageObject(
277                 itemWithResIdContainingText(
278                     "$packageName:id/address_name",
279                     "Harrison Street",
280                 ),
281             )
282             verifyAutofilledAddress("Harrison Street")
283             clearAddressForm()
284             clickPageObject(itemWithResId("streetAddress"))
285             clickSelectAddressButton()
286             clickPageObject(
287                 itemWithResIdContainingText(
288                     "$packageName:id/address_name",
289                     "Fort Street",
290                 ),
291             )
292             verifyAutofilledAddress("Fort Street")
293         }
294     }
296     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836850
297     @Test
298     fun verifySavedAddressCanBeEditedTest() {
299         autofillScreen {
300             fillAndSaveAddress(
301                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
302                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
303                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
304                 name = FirstAddressAutofillDetails.name,
305                 streetAddress = FirstAddressAutofillDetails.streetAddress,
306                 city = FirstAddressAutofillDetails.city,
307                 state = FirstAddressAutofillDetails.state,
308                 zipCode = FirstAddressAutofillDetails.zipCode,
309                 country = FirstAddressAutofillDetails.country,
310                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
311                 emailAddress = FirstAddressAutofillDetails.emailAddress,
312             )
313             clickManageAddressesButton()
314             clickSavedAddress("Mozilla")
315             fillAndSaveAddress(
316                 navigateToAutofillSettings = SecondAddressAutofillDetails.navigateToAutofillSettings,
317                 name = SecondAddressAutofillDetails.name,
318                 streetAddress = SecondAddressAutofillDetails.streetAddress,
319                 city = SecondAddressAutofillDetails.city,
320                 state = SecondAddressAutofillDetails.state,
321                 zipCode = SecondAddressAutofillDetails.zipCode,
322                 country = SecondAddressAutofillDetails.country,
323                 phoneNumber = SecondAddressAutofillDetails.phoneNumber,
324                 emailAddress = SecondAddressAutofillDetails.emailAddress,
325             )
326             verifyManageAddressesToolbarTitle()
327         }
328     }
330     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836848
331     @Test
332     fun verifyStateFieldUpdatesInAccordanceWithCountryFieldTest() {
333         homeScreen {
334         }.openThreeDotMenu {
335         }.openSettings {
336         }.openAutofillSubMenu {
337             verifyAddressAutofillSection(true, false)
338             clickAddAddressButton()
339             verifyCountryOption("United States")
340             verifyStateOption("Alabama")
341             verifyCountryOptions("Canada", "United States")
342             clickCountryOption("Canada")
343             verifyStateOption("Alberta")
344         }
345     }
347     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836858
348     @Test
349     fun verifyFormFieldCanBeFilledManuallyTest() {
350         val addressFormPage =
351             TestAssetHelper.getAddressFormAsset(mockWebServer)
353         autofillScreen {
354             fillAndSaveAddress(
355                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
356                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
357                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
358                 name = FirstAddressAutofillDetails.name,
359                 streetAddress = FirstAddressAutofillDetails.streetAddress,
360                 city = FirstAddressAutofillDetails.city,
361                 state = FirstAddressAutofillDetails.state,
362                 zipCode = FirstAddressAutofillDetails.zipCode,
363                 country = FirstAddressAutofillDetails.country,
364                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
365                 emailAddress = FirstAddressAutofillDetails.emailAddress,
366             )
367         }
369         exitMenu()
371         navigationToolbar {
372         }.enterURLAndEnterToBrowser(addressFormPage.url) {
373             clickPageObject(itemWithResId("streetAddress"))
374             clickSelectAddressButton()
375             clickPageObject(
376                 itemWithResIdContainingText(
377                     "$packageName:id/address_name",
378                     "Harrison Street",
379                 ),
380             )
381             verifyAutofilledAddress("Harrison Street")
382             setTextForApartmentTextBox("Ap. 07")
383             verifyManuallyFilledAddress("Ap. 07")
384         }
385     }
387     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836838
388     @Test
389     fun verifyAutofillAddressSectionTest() {
390         autofillScreen {
391             fillAndSaveAddress(
392                 navigateToAutofillSettings = FirstAddressAutofillDetails.navigateToAutofillSettings,
393                 isAddressAutofillEnabled = FirstAddressAutofillDetails.isAddressAutofillEnabled,
394                 userHasSavedAddress = FirstAddressAutofillDetails.userHasSavedAddress,
395                 name = FirstAddressAutofillDetails.name,
396                 streetAddress = FirstAddressAutofillDetails.streetAddress,
397                 city = FirstAddressAutofillDetails.city,
398                 state = FirstAddressAutofillDetails.state,
399                 zipCode = FirstAddressAutofillDetails.zipCode,
400                 country = FirstAddressAutofillDetails.country,
401                 phoneNumber = FirstAddressAutofillDetails.phoneNumber,
402                 emailAddress = FirstAddressAutofillDetails.emailAddress,
403             )
404             verifyAddressAutofillSection(true, true)
405             clickManageAddressesButton()
406             verifyManageAddressesSection(
407                 "Mozilla",
408                 "Fenix",
409                 "Firefox",
410                 "Harrison Street",
411                 "San Francisco",
412                 "Alaska",
413                 "94105",
414                 "US",
415                 "555-5555",
416                 "foo@bar.com",
417             )
418         }
419     }