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
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"
32 var country = "United States"
33 var phoneNumber = "555-5555"
34 var emailAddress = "foo@bar.com"
37 object SecondAddressAutofillDetails {
38 var navigateToAutofillSettings = false
39 var name = "Android Test Name"
40 var streetAddress = "Fort Street"
44 var country = "United States"
45 var phoneNumber = "777-7777"
46 var emailAddress = "fuu@bar.org"
50 val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
52 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836845
55 fun verifyAddressAutofillTest() {
57 TestAssetHelper.getAddressFormAsset(mockWebServer)
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,
77 }.enterURLAndEnterToBrowser(addressFormPage.url) {
78 clickPageObject(itemWithResId("streetAddress"))
79 clickSelectAddressButton()
81 itemWithResIdContainingText(
82 "$packageName:id/address_name",
86 verifyAutofilledAddress("Harrison Street")
90 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836856
93 fun deleteSavedAddressTest() {
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,
108 clickManageAddressesButton()
109 clickSavedAddress("Mozilla")
110 clickDeleteAddressButton()
111 clickCancelDeleteAddressButton()
112 clickDeleteAddressButton()
113 clickConfirmDeleteAddressButton()
114 verifyAddAddressButton()
118 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836840
120 fun verifyAddAddressViewTest() {
124 }.openAutofillSubMenu {
125 clickAddAddressButton()
126 verifyAddAddressView()
127 }.goBackToAutofillSettings {
128 verifyAutofillToolbarTitle()
132 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836841
134 fun verifyEditAddressViewTest() {
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,
149 clickManageAddressesButton()
150 clickSavedAddress("Mozilla")
151 verifyEditAddressView()
155 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836839
157 fun verifyAddressAutofillToggleTest() {
158 val addressFormPage =
159 TestAssetHelper.getAddressFormAsset(mockWebServer)
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,
180 }.enterURLAndEnterToBrowser(addressFormPage.url) {
181 clickPageObject(itemWithResId("streetAddress"))
182 verifySelectAddressButtonExists(true)
185 }.openAutofillSubMenu {
186 clickSaveAndAutofillAddressesOption()
187 verifyAddressAutofillSection(false, true)
193 }.enterURLAndEnterToBrowser(addressFormPage.url) {
194 clickPageObject(itemWithResId("streetAddress"))
195 verifySelectAddressButtonExists(false)
199 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836847
201 fun verifyManageAddressesPromptOptionTest() {
202 val addressFormPage =
203 TestAssetHelper.getAddressFormAsset(mockWebServer)
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,
224 }.enterURLAndEnterToBrowser(addressFormPage.url) {
225 clickPageObject(itemWithResId("streetAddress"))
226 clickSelectAddressButton()
227 }.clickManageAddressButton {
228 verifyAutofillToolbarTitle()
230 verifySaveLoginPromptIsNotDisplayed()
234 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836849
236 fun verifyMultipleAddressesSelectionTest() {
237 val addressFormPage =
238 TestAssetHelper.getAddressFormAsset(mockWebServer)
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,
254 clickManageAddressesButton()
255 clickAddAddressButton()
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,
267 verifyManageAddressesToolbarTitle()
273 }.enterURLAndEnterToBrowser(addressFormPage.url) {
274 clickPageObject(itemWithResId("streetAddress"))
275 clickSelectAddressButton()
277 itemWithResIdContainingText(
278 "$packageName:id/address_name",
282 verifyAutofilledAddress("Harrison Street")
284 clickPageObject(itemWithResId("streetAddress"))
285 clickSelectAddressButton()
287 itemWithResIdContainingText(
288 "$packageName:id/address_name",
292 verifyAutofilledAddress("Fort Street")
296 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836850
298 fun verifySavedAddressCanBeEditedTest() {
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,
313 clickManageAddressesButton()
314 clickSavedAddress("Mozilla")
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,
326 verifyManageAddressesToolbarTitle()
330 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836848
332 fun verifyStateFieldUpdatesInAccordanceWithCountryFieldTest() {
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")
347 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836858
349 fun verifyFormFieldCanBeFilledManuallyTest() {
350 val addressFormPage =
351 TestAssetHelper.getAddressFormAsset(mockWebServer)
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,
372 }.enterURLAndEnterToBrowser(addressFormPage.url) {
373 clickPageObject(itemWithResId("streetAddress"))
374 clickSelectAddressButton()
376 itemWithResIdContainingText(
377 "$packageName:id/address_name",
381 verifyAutofilledAddress("Harrison Street")
382 setTextForApartmentTextBox("Ap. 07")
383 verifyManuallyFilledAddress("Ap. 07")
387 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1836838
389 fun verifyAutofillAddressSectionTest() {
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,
404 verifyAddressAutofillSection(true, true)
405 clickManageAddressesButton()
406 verifyManageAddressesSection(