Bug 1829359 - Refactor clickPageObject methods in UI tests and other repetitive methods
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / CreditCardAutofillTest.kt
bloba9d209b39b3c405af1c3a91995146ac8d5579db9
1 package org.mozilla.fenix.ui
3 import okhttp3.mockwebserver.MockWebServer
4 import org.junit.After
5 import org.junit.Before
6 import org.junit.Rule
7 import org.junit.Test
8 import org.mozilla.fenix.customannotations.SmokeTest
9 import org.mozilla.fenix.helpers.AndroidAssetDispatcher
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.bringAppToForeground
15 import org.mozilla.fenix.helpers.TestHelper.exitMenu
16 import org.mozilla.fenix.helpers.TestHelper.packageName
17 import org.mozilla.fenix.helpers.TestHelper.putAppToBackground
18 import org.mozilla.fenix.ui.robots.clickPageObject
19 import org.mozilla.fenix.ui.robots.homeScreen
20 import org.mozilla.fenix.ui.robots.navigationToolbar
21 import java.time.LocalDate
23 class CreditCardAutofillTest {
24     private lateinit var mockWebServer: MockWebServer
26     object MockCreditCard1 {
27         const val MOCK_CREDIT_CARD_NUMBER = "5555555555554444"
28         const val MOCK_LAST_CARD_DIGITS = "4444"
29         const val MOCK_NAME_ON_CARD = "Mastercard"
30         const val MOCK_EXPIRATION_MONTH = "February"
31         val MOCK_EXPIRATION_YEAR = (LocalDate.now().year + 1).toString()
32         val MOCK_EXPIRATION_MONTH_AND_YEAR = "02/${(LocalDate.now().year + 1)}"
33     }
35     object MockCreditCard2 {
36         const val MOCK_CREDIT_CARD_NUMBER = "2720994326581252"
37         const val MOCK_LAST_CARD_DIGITS = "1252"
38         const val MOCK_NAME_ON_CARD = "Mastercard"
39         const val MOCK_EXPIRATION_MONTH = "March"
40         val MOCK_EXPIRATION_YEAR = (LocalDate.now().year + 2).toString()
41         val MOCK_EXPIRATION_MONTH_AND_YEAR = "03/${(LocalDate.now().year + 2)}"
42     }
44     @get:Rule
45     val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
47     @Before
48     fun setUp() {
49         mockWebServer = MockWebServer().apply {
50             dispatcher = AndroidAssetDispatcher()
51             start()
52         }
53     }
55     @After
56     fun tearDown() {
57         mockWebServer.shutdown()
58     }
60     @SmokeTest
61     @Test
62     fun verifyCreditCardAutofillTest() {
63         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
65         homeScreen {
66         }.openThreeDotMenu {
67         }.openSettings {
68         }.openAutofillSubMenu {
69             clickAddCreditCardButton()
70             fillAndSaveCreditCard(
71                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
72                 MockCreditCard1.MOCK_NAME_ON_CARD,
73                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
74                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
75             )
76             // Opening Manage saved cards to dismiss here the Secure your credit prompt
77             clickManageSavedCreditCardsButton()
78             clickSecuredCreditCardsLaterButton()
79         }.goBackToAutofillSettings {
80         }.goBack {
81         }.goBack {
82         }
83         navigationToolbar {
84         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
85             clickPageObject(itemWithResId("cardNumber"))
86             clickPageObject(itemWithResId("$packageName:id/select_credit_card_header"))
87             clickPageObject(
88                 itemWithResIdContainingText(
89                     "$packageName:id/credit_card_number",
90                     MockCreditCard1.MOCK_LAST_CARD_DIGITS,
91                 ),
92             )
93             verifyAutofilledCreditCard(MockCreditCard1.MOCK_CREDIT_CARD_NUMBER)
94         }
95     }
97     @SmokeTest
98     @Test
99     fun deleteSavedCreditCardUsingToolbarButtonTest() {
100         homeScreen {
101         }.openThreeDotMenu {
102         }.openSettings {
103         }.openAutofillSubMenu {
104             clickAddCreditCardButton()
105             fillAndSaveCreditCard(
106                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
107                 MockCreditCard1.MOCK_NAME_ON_CARD,
108                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
109                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
110             )
111             clickManageSavedCreditCardsButton()
112             clickSecuredCreditCardsLaterButton()
113             clickSavedCreditCard()
114             clickDeleteCreditCardToolbarButton()
115             clickConfirmDeleteCreditCardButton()
116             verifyAddCreditCardsButton()
117         }
118     }
120     @SmokeTest
121     @Test
122     fun cancelDeleteSavedCreditCardUsingToolbarButtonTest() {
123         homeScreen {
124         }.openThreeDotMenu {
125         }.openSettings {
126         }.openAutofillSubMenu {
127             clickAddCreditCardButton()
128             fillAndSaveCreditCard(
129                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
130                 MockCreditCard1.MOCK_NAME_ON_CARD,
131                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
132                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
133             )
134             clickManageSavedCreditCardsButton()
135             clickSecuredCreditCardsLaterButton()
136             clickSavedCreditCard()
137             clickDeleteCreditCardToolbarButton()
138             clickCancelDeleteCreditCardButton()
139             verifyEditCreditCardToolbarTitle()
140         }
141     }
143     @SmokeTest
144     @Test
145     fun deleteSavedCreditCardUsingMenuButtonTest() {
146         homeScreen {
147         }.openThreeDotMenu {
148         }.openSettings {
149         }.openAutofillSubMenu {
150             clickAddCreditCardButton()
151             fillAndSaveCreditCard(
152                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
153                 MockCreditCard1.MOCK_NAME_ON_CARD,
154                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
155                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
156             )
157             clickManageSavedCreditCardsButton()
158             clickSecuredCreditCardsLaterButton()
159             clickSavedCreditCard()
160             clickDeleteCreditCardMenuButton()
161             clickConfirmDeleteCreditCardButton()
162             verifyAddCreditCardsButton()
163         }
164     }
166     @SmokeTest
167     @Test
168     fun cancelDeleteSavedCreditCardUsingMenuButtonTest() {
169         homeScreen {
170         }.openThreeDotMenu {
171         }.openSettings {
172         }.openAutofillSubMenu {
173             clickAddCreditCardButton()
174             fillAndSaveCreditCard(
175                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
176                 MockCreditCard1.MOCK_NAME_ON_CARD,
177                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
178                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
179             )
180             clickManageSavedCreditCardsButton()
181             clickSecuredCreditCardsLaterButton()
182             clickSavedCreditCard()
183             clickDeleteCreditCardMenuButton()
184             clickCancelDeleteCreditCardButton()
185             verifyEditCreditCardToolbarTitle()
186         }
187     }
189     @Test
190     fun verifyCreditCardsSectionTest() {
191         homeScreen {
192         }.openThreeDotMenu {
193         }.openSettings {
194         }.openAutofillSubMenu {
195             verifyCreditCardsAutofillSection(true, false)
196             clickAddCreditCardButton()
197             fillAndSaveCreditCard(
198                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
199                 MockCreditCard1.MOCK_NAME_ON_CARD,
200                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
201                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
202             )
203             clickManageSavedCreditCardsButton()
204             clickSecuredCreditCardsLaterButton()
205             verifySavedCreditCardsSection(
206                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
207                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
208             )
209         }
210     }
212     @Test
213     fun verifyManageCreditCardsPromptOptionTest() {
214         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
216         homeScreen {
217         }.openThreeDotMenu {
218         }.openSettings {
219         }.openAutofillSubMenu {
220             clickAddCreditCardButton()
221             fillAndSaveCreditCard(
222                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
223                 MockCreditCard1.MOCK_NAME_ON_CARD,
224                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
225                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
226             )
227         }
229         exitMenu()
231         navigationToolbar {
232         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
233             clickPageObject(itemWithResId("cardNumber"))
234             clickPageObject(itemWithResId("$packageName:id/select_credit_card_header"))
235         }.clickManageCreditCardsButton {
236         }.goBackToBrowser {
237             verifySelectCreditCardPromptExists(false)
238         }
239     }
241     @Test
242     fun verifyCreditCardsAutofillToggleTest() {
243         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
245         homeScreen {
246         }.openThreeDotMenu {
247         }.openSettings {
248         }.openAutofillSubMenu {
249             verifyCreditCardsAutofillSection(true, false)
250             clickAddCreditCardButton()
251             fillAndSaveCreditCard(
252                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
253                 MockCreditCard1.MOCK_NAME_ON_CARD,
254                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
255                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
256             )
257         }
259         exitMenu()
261         navigationToolbar {
262         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
263             clickPageObject(itemWithResId("cardNumber"))
264             verifySelectCreditCardPromptExists(true)
265         }.openThreeDotMenu {
266         }.openSettings {
267         }.openAutofillSubMenu {
268             clickSaveAndAutofillCreditCardsOption()
269             verifyCreditCardsAutofillSection(false, true)
270         }
272         exitMenu()
274         navigationToolbar {
275         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
276             clickPageObject(itemWithResId("cardNumber"))
277             verifySelectCreditCardPromptExists(false)
278         }
279     }
281     @Test
282     fun verifyEditCardsViewTest() {
283         homeScreen {
284         }.openThreeDotMenu {
285         }.openSettings {
286         }.openAutofillSubMenu {
287             verifyCreditCardsAutofillSection(true, false)
288             clickAddCreditCardButton()
289             fillAndSaveCreditCard(
290                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
291                 MockCreditCard1.MOCK_NAME_ON_CARD,
292                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
293                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
294             )
295             clickManageSavedCreditCardsButton()
296             clickSecuredCreditCardsLaterButton()
297             verifySavedCreditCardsSection(
298                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
299                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
300             )
301             clickSavedCreditCard()
302             verifyEditCreditCardView(
303                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
304                 MockCreditCard1.MOCK_NAME_ON_CARD,
305                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
306                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
307             )
308         }.goBackToSavedCreditCards {
309             verifySavedCreditCardsSection(
310                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
311                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
312             )
313         }
314     }
316     @Test
317     fun verifyEditedCardIsSavedTest() {
318         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
320         homeScreen {
321         }.openThreeDotMenu {
322         }.openSettings {
323         }.openAutofillSubMenu {
324             verifyCreditCardsAutofillSection(true, false)
325             clickAddCreditCardButton()
326             fillAndSaveCreditCard(
327                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
328                 MockCreditCard1.MOCK_NAME_ON_CARD,
329                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
330                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
331             )
332             clickManageSavedCreditCardsButton()
333             clickSecuredCreditCardsLaterButton()
334             verifySavedCreditCardsSection(
335                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
336                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
337             )
338             clickSavedCreditCard()
339             fillAndSaveCreditCard(
340                 MockCreditCard2.MOCK_CREDIT_CARD_NUMBER,
341                 MockCreditCard2.MOCK_NAME_ON_CARD,
342                 MockCreditCard2.MOCK_EXPIRATION_MONTH,
343                 MockCreditCard2.MOCK_EXPIRATION_YEAR,
344             )
345         }
347         exitMenu()
349         navigationToolbar {
350         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
351             clickPageObject(itemWithResId("cardNumber"))
352             clickPageObject(itemWithResId("$packageName:id/select_credit_card_header"))
353             clickPageObject(
354                 itemWithResIdContainingText(
355                     "$packageName:id/credit_card_number",
356                     MockCreditCard2.MOCK_LAST_CARD_DIGITS,
357                 ),
358             )
359             verifyAutofilledCreditCard(MockCreditCard2.MOCK_CREDIT_CARD_NUMBER)
360         }
361     }
363     @Test
364     fun verifyCreditCardCannotBeSavedWithoutCardNumberTest() {
365         homeScreen {
366         }.openThreeDotMenu {
367         }.openSettings {
368         }.openAutofillSubMenu {
369             verifyCreditCardsAutofillSection(true, false)
370             clickAddCreditCardButton()
371             fillAndSaveCreditCard(
372                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
373                 MockCreditCard1.MOCK_NAME_ON_CARD,
374                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
375                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
376             )
377             clickManageSavedCreditCardsButton()
378             clickSecuredCreditCardsLaterButton()
379             verifySavedCreditCardsSection(
380                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
381                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
382             )
383             clickSavedCreditCard()
384             clearCreditCardNumber()
385             clickSaveCreditCardToolbarButton()
386             verifyEditCreditCardToolbarTitle()
387             verifyCreditCardNumberErrorMessage()
388         }
389     }
391     @Test
392     fun verifyCreditCardCannotBeSavedWithoutNameOnCardTest() {
393         homeScreen {
394         }.openThreeDotMenu {
395         }.openSettings {
396         }.openAutofillSubMenu {
397             verifyCreditCardsAutofillSection(true, false)
398             clickAddCreditCardButton()
399             fillAndSaveCreditCard(
400                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
401                 MockCreditCard1.MOCK_NAME_ON_CARD,
402                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
403                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
404             )
405             clickManageSavedCreditCardsButton()
406             clickSecuredCreditCardsLaterButton()
407             verifySavedCreditCardsSection(
408                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
409                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
410             )
411             clickSavedCreditCard()
412             clearNameOnCreditCard()
413             clickSaveCreditCardToolbarButton()
414             verifyEditCreditCardToolbarTitle()
415             verifyNameOnCreditCardErrorMessage()
416         }
417     }
419     @Test
420     fun verifyMultipleCreditCardsCanBeSavedTest() {
421         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
423         homeScreen {
424         }.openThreeDotMenu {
425         }.openSettings {
426         }.openAutofillSubMenu {
427             verifyCreditCardsAutofillSection(true, false)
428             clickAddCreditCardButton()
429             fillAndSaveCreditCard(
430                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
431                 MockCreditCard1.MOCK_NAME_ON_CARD,
432                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
433                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
434             )
435             clickManageSavedCreditCardsButton()
436             clickSecuredCreditCardsLaterButton()
437             clickAddCreditCardButton()
438             fillAndSaveCreditCard(
439                 MockCreditCard2.MOCK_CREDIT_CARD_NUMBER,
440                 MockCreditCard2.MOCK_NAME_ON_CARD,
441                 MockCreditCard2.MOCK_EXPIRATION_MONTH,
442                 MockCreditCard2.MOCK_EXPIRATION_YEAR,
443             )
444             verifySavedCreditCardsSection(
445                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
446                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
447             )
448             verifySavedCreditCardsSection(
449                 MockCreditCard2.MOCK_LAST_CARD_DIGITS,
450                 MockCreditCard2.MOCK_EXPIRATION_MONTH_AND_YEAR,
451             )
452         }
454         exitMenu()
456         navigationToolbar {
457         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
458             clickPageObject(itemWithResId("cardNumber"))
459             clickPageObject(itemWithResId("$packageName:id/select_credit_card_header"))
460             verifyCreditCardSuggestion(
461                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
462                 MockCreditCard2.MOCK_LAST_CARD_DIGITS,
463             )
464             clickPageObject(
465                 itemWithResIdContainingText(
466                     "$packageName:id/credit_card_number",
467                     MockCreditCard2.MOCK_LAST_CARD_DIGITS,
468                 ),
469             )
470             verifyAutofilledCreditCard(MockCreditCard2.MOCK_CREDIT_CARD_NUMBER)
471         }
472     }
474     @Test
475     fun verifyDoNotSaveCreditCardFromFormTest() {
476         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
478         navigationToolbar {
479         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
480             fillAndSaveCreditCard(
481                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
482                 MockCreditCard1.MOCK_NAME_ON_CARD,
483                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
484             )
485             clickPageObject(itemWithResId("$packageName:id/save_cancel"))
486             verifyUpdateOrSaveCreditCardPromptExists(exists = false)
487         }.openThreeDotMenu {
488         }.openSettings {
489         }.openAutofillSubMenu {
490             verifyCreditCardsAutofillSection(true, false)
491         }
492     }
494     @Test
495     fun verifySaveCreditCardFromFormTest() {
496         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
498         navigationToolbar {
499         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
500             fillAndSaveCreditCard(
501                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
502                 MockCreditCard1.MOCK_NAME_ON_CARD,
503                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
504             )
505             clickPageObject(itemWithResId("$packageName:id/save_confirm"))
506             verifyUpdateOrSaveCreditCardPromptExists(exists = false)
507         }.openThreeDotMenu {
508         }.openSettings {
509         }.openAutofillSubMenu {
510             verifyCreditCardsAutofillSection(true, true)
511             clickManageSavedCreditCardsButton()
512             clickSecuredCreditCardsLaterButton()
513             verifySavedCreditCardsSection(
514                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
515                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
516             )
517         }
518     }
520     @Test
521     fun verifyCancelCreditCardUpdatePromptTest() {
522         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
524         homeScreen {
525         }.openThreeDotMenu {
526         }.openSettings {
527         }.openAutofillSubMenu {
528             verifyCreditCardsAutofillSection(true, false)
529             clickAddCreditCardButton()
530             fillAndSaveCreditCard(
531                 MockCreditCard2.MOCK_CREDIT_CARD_NUMBER,
532                 MockCreditCard2.MOCK_NAME_ON_CARD,
533                 MockCreditCard2.MOCK_EXPIRATION_MONTH,
534                 MockCreditCard2.MOCK_EXPIRATION_YEAR,
535             )
536             // Opening Manage saved cards to dismiss here the Secure your credit prompt
537             clickManageSavedCreditCardsButton()
538             clickSecuredCreditCardsLaterButton()
539         }
541         exitMenu()
543         navigationToolbar {
544         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
545             clickPageObject(itemWithResId("cardNumber"))
546             clickPageObject(itemWithResId("$packageName:id/select_credit_card_header"))
547             clickPageObject(
548                 itemWithResIdContainingText(
549                     "$packageName:id/credit_card_number",
550                     MockCreditCard2.MOCK_LAST_CARD_DIGITS,
551                 ),
552             )
553             verifyAutofilledCreditCard(MockCreditCard2.MOCK_CREDIT_CARD_NUMBER)
554             changeCreditCardExpiryDate(MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR)
555             clickCreditCardFormSubmitButton()
556             clickPageObject(itemWithResId("$packageName:id/save_cancel"))
557             verifyUpdateOrSaveCreditCardPromptExists(false)
558         }.openThreeDotMenu {
559         }.openSettings {
560         }.openAutofillSubMenu {
561             verifyCreditCardsAutofillSection(true, true)
562             clickManageSavedCreditCardsButton()
563             verifySavedCreditCardsSection(
564                 MockCreditCard2.MOCK_LAST_CARD_DIGITS,
565                 MockCreditCard2.MOCK_EXPIRATION_MONTH_AND_YEAR,
566             )
567         }
568     }
570     @Test
571     fun verifyConfirmCreditCardUpdatePromptTest() {
572         val creditCardFormPage = TestAssetHelper.getCreditCardFormAsset(mockWebServer)
574         homeScreen {
575         }.openThreeDotMenu {
576         }.openSettings {
577         }.openAutofillSubMenu {
578             verifyCreditCardsAutofillSection(true, false)
579             clickAddCreditCardButton()
580             fillAndSaveCreditCard(
581                 MockCreditCard2.MOCK_CREDIT_CARD_NUMBER,
582                 MockCreditCard2.MOCK_NAME_ON_CARD,
583                 MockCreditCard2.MOCK_EXPIRATION_MONTH,
584                 MockCreditCard2.MOCK_EXPIRATION_YEAR,
585             )
586             // Opening Manage saved cards to dismiss here the Secure your credit prompt
587             clickManageSavedCreditCardsButton()
588             clickSecuredCreditCardsLaterButton()
589         }
591         exitMenu()
593         navigationToolbar {
594         }.enterURLAndEnterToBrowser(creditCardFormPage.url) {
595             clickPageObject(itemWithResId("cardNumber"))
596             clickPageObject(itemWithResId("$packageName:id/select_credit_card_header"))
597             clickPageObject(
598                 itemWithResIdContainingText(
599                     "$packageName:id/credit_card_number",
600                     MockCreditCard2.MOCK_LAST_CARD_DIGITS,
601                 ),
602             )
603             verifyAutofilledCreditCard(MockCreditCard2.MOCK_CREDIT_CARD_NUMBER)
604             changeCreditCardExpiryDate(MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR)
605             clickCreditCardFormSubmitButton()
606             clickPageObject(itemWithResId("$packageName:id/save_confirm"))
607             verifyUpdateOrSaveCreditCardPromptExists(false)
608         }.openThreeDotMenu {
609         }.openSettings {
610         }.openAutofillSubMenu {
611             verifyCreditCardsAutofillSection(true, true)
612             clickManageSavedCreditCardsButton()
613             verifySavedCreditCardsSection(
614                 MockCreditCard2.MOCK_LAST_CARD_DIGITS,
615                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
616             )
617         }
618     }
620     @Test
621     fun verifySavedCreditCardsRedirectionToAutofillAfterInterruptionTest() {
622         homeScreen {
623         }.openThreeDotMenu {
624         }.openSettings {
625         }.openAutofillSubMenu {
626             verifyCreditCardsAutofillSection(true, false)
627             clickAddCreditCardButton()
628             fillAndSaveCreditCard(
629                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
630                 MockCreditCard1.MOCK_NAME_ON_CARD,
631                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
632                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
633             )
634             clickManageSavedCreditCardsButton()
635             clickSecuredCreditCardsLaterButton()
636             verifySavedCreditCardsSection(
637                 MockCreditCard1.MOCK_LAST_CARD_DIGITS,
638                 MockCreditCard1.MOCK_EXPIRATION_MONTH_AND_YEAR,
639             )
640             putAppToBackground()
641             bringAppToForeground()
642             verifyAutofillToolbarTitle()
643         }
644     }
646     @Test
647     fun verifyEditCreditCardRedirectionToAutofillAfterInterruptionTest() {
648         homeScreen {
649         }.openThreeDotMenu {
650         }.openSettings {
651         }.openAutofillSubMenu {
652             verifyCreditCardsAutofillSection(true, false)
653             clickAddCreditCardButton()
654             fillAndSaveCreditCard(
655                 MockCreditCard1.MOCK_CREDIT_CARD_NUMBER,
656                 MockCreditCard1.MOCK_NAME_ON_CARD,
657                 MockCreditCard1.MOCK_EXPIRATION_MONTH,
658                 MockCreditCard1.MOCK_EXPIRATION_YEAR,
659             )
660             clickManageSavedCreditCardsButton()
661             clickSecuredCreditCardsLaterButton()
662             clickSavedCreditCard()
663             putAppToBackground()
664             bringAppToForeground()
665             verifyAutofillToolbarTitle()
666         }
667     }