diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsPrivacyTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsPrivacyTest.kt index 276ac03b1e..f9b8aabb6d 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsPrivacyTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsPrivacyTest.kt @@ -217,7 +217,7 @@ class SettingsPrivacyTest { verifySecurityPromptForLogins() tapSetupLater() // Verify that the login appears correctly - verifySavedLoginFromPrompt() + verifySavedLoginFromPrompt("test@example.com") } } @@ -542,6 +542,42 @@ class SettingsPrivacyTest { verifyEmptyHistoryView() } } + + @SmokeTest + @Test + fun saveLoginsInPWATest() { + val pwaPage = "https://mozilla-mobile.github.io/testapp/loginForm" + val shortcutTitle = "TEST_APP" + + navigationToolbar { + }.enterURLAndEnterToBrowser(pwaPage.toUri()) { + verifyNotificationDotOnMainMenu() + }.openThreeDotMenu { + }.clickInstall { + clickAddAutomaticallyButton() + }.openHomeScreenShortcut(shortcutTitle) { + mDevice.waitForIdle() + fillAndSubmitLoginCredentials("mozilla", "firefox") + verifySaveLoginPromptIsDisplayed() + saveLoginFromPrompt("Save") + openAppFromExternalLink(pwaPage) + + browserScreen { + }.openThreeDotMenu { + }.openSettings { + }.openLoginsAndPasswordSubMenu { + }.openSavedLogins { + verifySecurityPromptForLogins() + tapSetupLater() + verifySavedLoginFromPrompt("mozilla") + } + + addToHomeScreen { + }.searchAndOpenHomeScreenShortcut(shortcutTitle) { + verifyPrefilledLoginCredentials("mozilla", shortcutTitle) + } + } + } } private fun setOpenLinksInPrivateOn() { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt index bf1b0da6b9..11f8632483 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt @@ -606,7 +606,7 @@ class SmokeTest { verifySecurityPromptForLogins() tapSetupLater() // Verify that the login appears correctly - verifySavedLoginFromPrompt() + verifySavedLoginFromPrompt("test@example.com") viewSavedLoginDetails("test@example.com") revealPassword() verifyPasswordSaved("test") // failing here locally diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt index a439596d42..8fab6c5270 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt @@ -573,6 +573,32 @@ class BrowserRobot { mDevice.waitForIdle() } + fun verifyPrefilledLoginCredentials(userName: String, shortcutTitle: String) { + mDevice.waitForIdle(waitingTime) + + var currentTries = 0 + while (currentTries++ < 3) { + try { + assertTrue(submitLoginButton.waitForExists(waitingTime)) + submitLoginButton.click() + assertTrue(userNameTextBox.text.equals(userName)) + break + } catch (e: AssertionError) { + addToHomeScreen { + }.searchAndOpenHomeScreenShortcut(shortcutTitle) {} + } + } + } + + fun verifySaveLoginPromptIsDisplayed() { + assertTrue( + mDevice.findObject( + UiSelector() + .resourceId("$packageName:id/feature_prompt_login_fragment") + ).waitForExists(waitingTime) + ) + } + class Transition { private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) private fun threeDotButton() = onView( diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.kt index c8b8da7427..1353d147b2 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot.kt @@ -39,8 +39,8 @@ class SettingsSubMenuLoginsAndPasswordsSavedLoginsRobot { fun tapSetupLater() = onView(withText("Later")).perform(ViewActions.click()) - fun verifySavedLoginFromPrompt() = - mDevice.waitNotNull(Until.findObjects(By.text("test@example.com"))) + fun verifySavedLoginFromPrompt(userName: String) = + mDevice.waitNotNull(Until.findObjects(By.text(userName))) fun verifyNotSavedLoginFromPrompt() = onView(withText("test@example.com")) .check(ViewAssertions.doesNotExist())