You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/androidTest/java/org/mozilla/fenix/ui/LoginsTest.kt

821 lines
30 KiB
Kotlin

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.ui
import android.os.Build
import android.view.autofill.AutofillManager
import androidx.core.net.toUri
import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdAndText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestHelper
import org.mozilla.fenix.helpers.TestHelper.exitMenu
import org.mozilla.fenix.helpers.TestHelper.mDevice
import org.mozilla.fenix.helpers.TestHelper.packageName
import org.mozilla.fenix.helpers.TestHelper.restartApp
import org.mozilla.fenix.helpers.TestHelper.scrollToElementByText
import org.mozilla.fenix.helpers.TestHelper.verifySnackBarText
import org.mozilla.fenix.helpers.TestHelper.waitForAppWindowToBeUpdated
import org.mozilla.fenix.helpers.TestSetup
import org.mozilla.fenix.ui.robots.browserScreen
import org.mozilla.fenix.ui.robots.clearTextFieldItem
import org.mozilla.fenix.ui.robots.clickPageObject
import org.mozilla.fenix.ui.robots.homeScreen
import org.mozilla.fenix.ui.robots.navigationToolbar
import org.mozilla.fenix.ui.robots.setPageObjectText
/**
* Tests for verifying:
* - the Logins and Passwords menu and sub-menus.
* - save login prompts.
* - saving logins based on the user's preferences.
*/
class LoginsTest : TestSetup() {
@get:Rule
val activityTestRule =
HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true)
@Before
override fun setUp() {
super.setUp()
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.R) {
val autofillManager: AutofillManager =
TestHelper.appContext.getSystemService(AutofillManager::class.java)
autofillManager.disableAutofillServices()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2092713
// Tests the Passwords menu items and default values
@Test
fun loginsAndPasswordsSettingsItemsTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
// Necessary to scroll a little bit for all screen sizes
scrollToElementByText("Passwords")
}.openLoginsAndPasswordSubMenu {
verifyDefaultView()
verifyAutofillInFirefoxToggle(true)
verifyAutofillLoginsInOtherAppsToggle(false)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/517816
// Tests only for initial state without signing in.
// For tests after signing in, see SyncIntegration test suite
@Test
fun verifySavedLoginsListTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
// Necessary to scroll a little bit for all screen sizes
scrollToElementByText("Passwords")
}.openLoginsAndPasswordSubMenu {
verifyDefaultView()
}.openSavedLogins {
verifySecurityPromptForLogins()
tapSetupLater()
// Verify that logins list is empty
verifyEmptySavedLoginsListView()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2092925
@Test
fun verifySyncLoginsOptionsTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
// Necessary to scroll a little bit for all screen sizes
scrollToElementByText("Passwords")
}.openLoginsAndPasswordSubMenu {
}.openSyncLogins {
verifyReadyToScanOption()
verifyUseEmailOption()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/523839
@Test
fun saveLoginFromPromptTest() {
val saveLoginTest =
TestAssetHelper.getSaveLoginAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSaveLoginsAndPasswordsOptions {
verifySaveLoginsOptionsView()
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(saveLoginTest.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
// Click save to save the login
clickPageObject(itemWithText("Save"))
}
browserScreen {
}.openThreeDotMenu {
}.openSettings {
scrollToElementByText("Passwords")
}.openLoginsAndPasswordSubMenu {
verifyDefaultView()
}.openSavedLogins {
verifySecurityPromptForLogins()
tapSetupLater()
// Verify that the login appears correctly
verifySavedLoginsSectionUsername("test@example.com")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/960412
@Test
fun openLoginWebsiteInBrowserTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/loginForm"
val originWebsite = "mozilla-mobile.github.io"
val userName = "test"
val password = "pass"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), userName)
setPageObjectText(itemWithResId("password"), password)
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
verifySecurityPromptForLogins()
tapSetupLater()
viewSavedLoginDetails(userName)
}.goToSavedWebsite {
verifyUrl(originWebsite)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/517817
@Test
fun neverSaveLoginFromPromptTest() {
val saveLoginTest = TestAssetHelper.getSaveLoginAsset(mockWebServer)
navigationToolbar {
}.enterURLAndEnterToBrowser(saveLoginTest.url) {
clickSubmitLoginButton()
// Don't save the login, add to exceptions
clickPageObject(itemWithText("Never save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
verifyDefaultView()
}.openSavedLogins {
verifySecurityPromptForLogins()
tapSetupLater()
// Verify that the login list is empty
verifyEmptySavedLoginsListView()
verifyNotSavedLoginFromPrompt()
}.goBack {
}.openLoginExceptions {
// Verify localhost was added to exceptions list
verifyLocalhostExceptionAdded()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1508171
@SmokeTest
@Test
fun verifyUpdatedLoginIsSavedTest() {
val saveLoginTest =
TestAssetHelper.getSaveLoginAsset(mockWebServer)
navigationToolbar {
}.enterURLAndEnterToBrowser(saveLoginTest.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
// Click Save to save the login
clickPageObject(itemWithText("Save"))
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(saveLoginTest.url) {
enterPassword("test")
mDevice.waitForIdle()
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
// Click Update to change the saved password
clickPageObject(itemWithText("Update"))
}.openThreeDotMenu {
}.openSettings {
scrollToElementByText("Passwords")
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
verifySecurityPromptForLogins()
tapSetupLater()
// Verify that the login appears correctly
verifySavedLoginsSectionUsername("test@example.com")
viewSavedLoginDetails("test@example.com")
revealPassword()
verifyPasswordSaved("test") // failing here locally
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1049971
@SmokeTest
@Test
fun verifyMultipleLoginsSelectionsTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val firstUser = "mozilla"
val firstPass = "firefox"
val secondUser = "fenix"
val secondPass = "pass"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), firstUser)
waitForAppWindowToBeUpdated()
setPageObjectText(itemWithResId("password"), firstPass)
waitForAppWindowToBeUpdated()
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
setPageObjectText(itemWithResId("username"), secondUser)
waitForAppWindowToBeUpdated()
setPageObjectText(itemWithResId("password"), secondPass)
waitForAppWindowToBeUpdated()
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
clearTextFieldItem(itemWithResId("username"))
clickSuggestedLoginsButton()
verifySuggestedUserName(firstUser)
verifySuggestedUserName(secondUser)
clickPageObject(
itemWithResIdAndText(
"$packageName:id/username",
firstUser,
),
)
clickPageObject(itemWithResId("togglePassword"))
verifyPrefilledLoginCredentials(firstUser, firstPass, true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/875849
@Test
fun verifyEditLoginsViewTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/loginForm"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails(originWebsite)
clickThreeDotButton(activityTestRule)
clickEditLoginButton()
setNewPassword("fenix")
saveEditedLogin()
revealPassword()
verifyPasswordSaved("fenix")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/875851
@Test
fun verifyEditedLoginsAreSavedTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails(originWebsite)
clickThreeDotButton(activityTestRule)
clickEditLoginButton()
setNewUserName("android")
setNewPassword("fenix")
saveEditedLogin()
}
exitMenu()
browserScreen {
}.openThreeDotMenu {
}.refreshPage {
waitForPageToLoad()
clickPageObject(itemWithResId("togglePassword"))
verifyPrefilledLoginCredentials("android", "fenix", true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2266452
@Test
fun verifyLoginWithNoUserNameCanNotBeSavedTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/loginForm"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails(originWebsite)
clickThreeDotButton(activityTestRule)
clickEditLoginButton()
clickClearUserNameButton()
verifyUserNameRequiredErrorMessage()
verifySaveLoginButtonIsEnabled(false)
clickGoBackButton()
verifyLoginItemUsername("mozilla")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2266453
@Test
fun verifyLoginWithoutPasswordCanNotBeSavedTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/loginForm"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails(originWebsite)
clickThreeDotButton(activityTestRule)
clickEditLoginButton()
clickClearPasswordButton()
verifyPasswordRequiredErrorMessage()
verifySaveLoginButtonIsEnabled(false)
clickGoBackButton()
revealPassword()
verifyPasswordSaved("firefox")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/876531
@Test
fun verifyEditModeDismissalDoesNotSaveLoginCredentialsTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/loginForm"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails(originWebsite)
clickThreeDotButton(activityTestRule)
clickEditLoginButton()
setNewUserName("android")
setNewPassword("fenix")
clickGoBackButton()
verifyLoginItemUsername("mozilla")
revealPassword()
verifyPasswordSaved("firefox")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/876532
@Test
fun verifyDeleteLoginButtonTest() {
val loginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.url) {
clickSubmitLoginButton()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails("test@example.com")
clickThreeDotButton(activityTestRule)
clickDeleteLoginButton()
verifyLoginDeletionPrompt()
clickCancelDeleteLogin()
verifyLoginItemUsername("test@example.com")
viewSavedLoginDetails("test@example.com")
clickThreeDotButton(activityTestRule)
clickDeleteLoginButton()
verifyLoginDeletionPrompt()
clickConfirmDeleteLogin()
// The account remains displayed, see: https://bugzilla.mozilla.org/show_bug.cgi?id=1812431
// verifyNotSavedLoginFromPrompt()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/517818
@SmokeTest
@Test
fun verifyNeverSaveLoginOptionTest() {
val loginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSaveLoginsAndPasswordsOptions {
clickNeverSaveOption()
}.goBack {
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsNotDisplayed()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/517819
@Test
fun verifyAutofillToggleTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
waitForPageToLoad()
setPageObjectText(itemWithResId("username"), "mozilla")
waitForAppWindowToBeUpdated()
setPageObjectText(itemWithResId("password"), "firefox")
waitForAppWindowToBeUpdated()
clickPageObject(itemWithResId("submit"))
waitForPageToLoad()
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openTabDrawer {
closeTab()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
waitForPageToLoad()
clickPageObject(itemWithResId("togglePassword"))
verifyPrefilledLoginCredentials("mozilla", "firefox", true)
}.openTabDrawer {
closeTab()
}
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
verifyAutofillInFirefoxToggle(true)
clickAutofillInFirefoxOption()
verifyAutofillInFirefoxToggle(false)
}.goBack {
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
verifyPrefilledLoginCredentials("mozilla", "firefox", false)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/593768
@Ignore("Failing, see: https://bugzilla.mozilla.org/show_bug.cgi?id=1812995")
@Test
fun doNotSaveOptionWillNotUpdateALoginTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openTabDrawer {
closeTab()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
clickPageObject(itemWithResId("togglePassword"))
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "fenix")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Dont update"))
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails(originWebsite)
revealPassword()
verifyPasswordSaved("firefox")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2090455
@Test
fun searchLoginsByUsernameTest() {
val firstLoginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
val secondLoginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(firstLoginPage.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondLoginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "android")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
clickSearchLoginButton()
searchLogin("ANDROID")
viewSavedLoginDetails(originWebsite)
verifyLoginItemUsername("android")
revealPassword()
verifyPasswordSaved("firefox")
}.goBackToSavedLogins {
searchLogin("android")
viewSavedLoginDetails(originWebsite)
verifyLoginItemUsername("android")
revealPassword()
verifyPasswordSaved("firefox")
}.goBackToSavedLogins {
searchLogin("AnDrOiD")
viewSavedLoginDetails(originWebsite)
verifyLoginItemUsername("android")
revealPassword()
verifyPasswordSaved("firefox")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/608834
@Test
fun searchLoginsByUrlTest() {
val firstLoginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
val secondLoginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(firstLoginPage.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondLoginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "android")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
clickSearchLoginButton()
searchLogin("MOZILLA")
viewSavedLoginDetails(originWebsite)
verifyLoginItemUsername("android")
revealPassword()
verifyPasswordSaved("firefox")
}.goBackToSavedLogins {
searchLogin("mozilla")
viewSavedLoginDetails(originWebsite)
verifyLoginItemUsername("android")
revealPassword()
verifyPasswordSaved("firefox")
}.goBackToSavedLogins {
searchLogin("MoZiLlA")
viewSavedLoginDetails(originWebsite)
verifyLoginItemUsername("android")
revealPassword()
verifyPasswordSaved("firefox")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2266441
@Test
fun verifyLastUsedLoginSortingOptionTest() {
val firstLoginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
val secondLoginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(firstLoginPage.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondLoginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
clickSavedLoginsChevronIcon()
verifyLoginsSortingOptions()
clickLastUsedSortingOption()
verifySortedLogin(0, originWebsite)
verifySortedLogin(1, firstLoginPage.url.authority.toString())
}.goBack {
}.openSavedLogins {
verifySortedLogin(0, originWebsite)
verifySortedLogin(1, firstLoginPage.url.authority.toString())
}
restartApp(activityTestRule)
browserScreen {
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
verifySortedLogin(0, originWebsite)
verifySortedLogin(1, firstLoginPage.url.authority.toString())
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2266442
@Test
fun verifyAlphabeticalLoginSortingOptionTest() {
val firstLoginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
val secondLoginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
val originWebsite = "mozilla-mobile.github.io"
navigationToolbar {
}.enterURLAndEnterToBrowser(firstLoginPage.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondLoginPage.toUri()) {
setPageObjectText(itemWithResId("username"), "mozilla")
setPageObjectText(itemWithResId("password"), "firefox")
clickPageObject(itemWithResId("submit"))
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
mDevice.waitForIdle()
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
verifySortedLogin(0, firstLoginPage.url.authority.toString())
verifySortedLogin(1, originWebsite)
}.goBack {
}.openSavedLogins {
verifySortedLogin(0, firstLoginPage.url.authority.toString())
verifySortedLogin(1, originWebsite)
}
restartApp(activityTestRule)
browserScreen {
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
verifySortedLogin(0, firstLoginPage.url.authority.toString())
verifySortedLogin(1, originWebsite)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1518435
@Test
fun verifyAddLoginManuallyTest() {
val loginPage = "https://mozilla-mobile.github.io/testapp/v2.0/loginForm.html"
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
clickAddLoginButton()
verifyAddNewLoginView()
enterSiteCredential("mozilla")
verifyHostnameErrorMessage()
enterSiteCredential(loginPage)
verifyHostnameClearButtonEnabled()
setNewUserName("mozilla")
setNewPassword("firefox")
clickClearPasswordButton()
verifyPasswordErrorMessage()
setNewPassword("firefox")
verifyPasswordClearButtonEnabled()
saveEditedLogin()
}
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(loginPage.toUri()) {
clickPageObject(MatcherHelper.itemWithResId("username"))
clickSuggestedLoginsButton()
verifySuggestedUserName("mozilla")
clickPageObject(itemWithResIdAndText("$packageName:id/username", "mozilla"))
clickPageObject(itemWithResId("togglePassword"))
verifyPrefilledLoginCredentials("mozilla", "firefox", true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2068215
@Test
fun verifyCopyLoginCredentialsToClipboardTest() {
val firstLoginPage = TestAssetHelper.getSaveLoginAsset(mockWebServer)
navigationToolbar {
}.enterURLAndEnterToBrowser(firstLoginPage.url) {
clickSubmitLoginButton()
verifySaveLoginPromptIsDisplayed()
clickPageObject(itemWithText("Save"))
}.openThreeDotMenu {
}.openSettings {
}.openLoginsAndPasswordSubMenu {
}.openSavedLogins {
tapSetupLater()
viewSavedLoginDetails("test@example.com")
clickCopyUserNameButton()
verifySnackBarText("Username copied to clipboard")
clickCopyPasswordButton()
verifySnackBarText("Password copied to clipboard")
}
}
}