From b467819ab3f9e95f50b34bda30ec19e021525c97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Artiom=20Ko=C5=A1elev?= Date: Mon, 22 Nov 2021 18:33:46 +0200 Subject: [PATCH] Updated tests to use login helper --- .../test/android/uitests/tests/BaseTest.kt | 12 +++++ .../usersettings/PasswordManagementTest.kt | 7 +-- .../medium/auth/login/AccountSwitcherTests.kt | 8 +-- .../HumanVerificationTests.kt | 10 ++-- .../payments/ExistingPaymentMethodTests.kt | 49 +++++++++---------- .../medium/payments/NewCreditCardTests.kt | 10 ++-- .../tests/medium/plans/CurrentPlanTests.kt | 5 +- .../tests/medium/plans/UpgradePlanTests.kt | 42 +++++++--------- .../usersettings/PasswordManagementTests.kt | 9 ++-- .../medium/usersettings/RecoveryEmailTests.kt | 10 ++-- 10 files changed, 80 insertions(+), 82 deletions(-) diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/BaseTest.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/BaseTest.kt index 31de5ba68..5696365f7 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/BaseTest.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/BaseTest.kt @@ -18,16 +18,22 @@ package me.proton.core.test.android.uitests.tests +import android.app.Application import android.util.Log +import androidx.test.core.app.ApplicationProvider import kotlinx.coroutines.runBlocking import me.proton.android.core.coreexample.BuildConfig import me.proton.android.core.coreexample.MainActivity import me.proton.android.core.coreexample.di.AppDatabaseModule +import me.proton.core.auth.presentation.testing.ProtonTestEntryPoint import me.proton.core.test.android.instrumented.ProtonTest import me.proton.core.test.android.instrumented.utils.Shell.setupDevice import me.proton.core.test.android.plugins.Quark import me.proton.core.test.android.plugins.data.Plan +import me.proton.core.test.android.plugins.data.User import me.proton.core.test.android.plugins.data.User.Users +import me.proton.core.test.android.robots.auth.AddAccountRobot +import me.proton.core.test.android.uitests.CoreexampleRobot import org.junit.After import org.junit.BeforeClass @@ -47,9 +53,15 @@ open class BaseTest( Log.d(testTag, "Clearing AccountManager database tables") } + fun login(user: User) { + authHelper.login(user.name, user.password) + AddAccountRobot().back() + } + companion object { val users = Users("sensitive/users.json") val quark = Quark(BuildConfig.HOST, BuildConfig.PROXY_TOKEN, "sensitive/internal_apis.json") + val authHelper = ProtonTestEntryPoint.provide(ApplicationProvider.getApplicationContext()) val appDatabase = AppDatabaseModule.provideAppDatabase(getTargetContext()) @JvmStatic diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/large/usersettings/PasswordManagementTest.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/large/usersettings/PasswordManagementTest.kt index 1ebf3fdd0..e87eae803 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/large/usersettings/PasswordManagementTest.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/large/usersettings/PasswordManagementTest.kt @@ -31,9 +31,10 @@ class PasswordManagementTest : BaseTest() { @Test fun changePasswordAndLogin() { val newPassword = "newPassword" - AddAccountRobot() - .signIn() - .loginUser(user) + + login(user) + + CoreexampleRobot() .settingsPasswordManagement() .changePassword(user.password, newPassword) .accountSwitcher() diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/auth/login/AccountSwitcherTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/auth/login/AccountSwitcherTests.kt index efef3e67f..d924ef7e6 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/auth/login/AccountSwitcherTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/auth/login/AccountSwitcherTests.kt @@ -18,14 +18,13 @@ package me.proton.core.test.android.uitests.tests.medium.auth.login -import me.proton.core.test.android.uitests.tests.SmokeTest import me.proton.core.test.android.robots.auth.AccountSwitcherRobot import me.proton.core.test.android.robots.auth.AccountSwitcherRobot.UserAction import me.proton.core.test.android.robots.auth.AddAccountRobot import me.proton.core.test.android.robots.auth.login.LoginRobot -import me.proton.core.test.android.robots.auth.login.MailboxPasswordRobot import me.proton.core.test.android.uitests.CoreexampleRobot import me.proton.core.test.android.uitests.tests.BaseTest +import me.proton.core.test.android.uitests.tests.SmokeTest import org.junit.Before import org.junit.Test @@ -39,10 +38,7 @@ class AccountSwitcherTests : BaseTest() { @Before fun loginOnePass() { quark.jailUnban() - AddAccountRobot() - .signIn() - .loginUser(firstUser) - .verify { accountSwitcherDisplayed() } + login(firstUser) CoreexampleRobot() .accountSwitcher() diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/humanverification/HumanVerificationTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/humanverification/HumanVerificationTests.kt index 5ed5bc09c..58e1e02b2 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/humanverification/HumanVerificationTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/humanverification/HumanVerificationTests.kt @@ -20,11 +20,10 @@ package me.proton.core.test.android.uitests.tests.medium.humanverification import me.proton.core.account.domain.entity.AccountState.Ready import me.proton.core.account.domain.entity.SessionState.Authenticated -import me.proton.core.test.android.uitests.tests.SmokeTest -import me.proton.core.test.android.robots.auth.AddAccountRobot import me.proton.core.test.android.robots.humanverification.HumanVerificationRobot import me.proton.core.test.android.uitests.CoreexampleRobot import me.proton.core.test.android.uitests.tests.BaseTest +import me.proton.core.test.android.uitests.tests.SmokeTest import org.junit.Before import org.junit.Ignore import org.junit.Test @@ -38,9 +37,10 @@ class HumanVerificationTests : BaseTest() { @Before fun triggerHumanVerification() { quark.jailUnban() - AddAccountRobot() - .signIn() - .loginUser(user) + + login(user) + + CoreexampleRobot() .humanVerification() .verify { hvElementsDisplayed() } } diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/ExistingPaymentMethodTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/ExistingPaymentMethodTests.kt index dc2332386..9375cf8d2 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/ExistingPaymentMethodTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/ExistingPaymentMethodTests.kt @@ -18,53 +18,45 @@ package me.proton.core.test.android.uitests.tests.medium.payments -import me.proton.core.test.android.uitests.tests.SmokeTest import me.proton.core.test.android.plugins.data.Card -import me.proton.core.test.android.plugins.data.User import me.proton.core.test.android.plugins.data.Plan -import me.proton.core.test.android.robots.auth.AddAccountRobot -import me.proton.core.test.android.robots.auth.login.LoginRobot +import me.proton.core.test.android.plugins.data.User import me.proton.core.test.android.robots.payments.ExistingPaymentMethodsRobot import me.proton.core.test.android.robots.payments.ExistingPaymentMethodsRobot.PaymentMethodElement.paymentMethod import me.proton.core.test.android.uitests.CoreexampleRobot import me.proton.core.test.android.uitests.tests.BaseTest -import org.junit.Before +import me.proton.core.test.android.uitests.tests.SmokeTest import org.junit.Ignore import org.junit.Test class ExistingPaymentMethodTests : BaseTest() { - private val loginRobot = LoginRobot() - companion object { val userWithCard: User = quark.seedUserWithCreditCard() } - @Before - fun goToLogin() { - quark.jailUnban() - AddAccountRobot().signIn() - } - - private fun upgradeUserToPlan(user: User, plan: Plan = Plan.Dev): ExistingPaymentMethodsRobot = - loginRobot - .loginUser(user) - .plansUpgrade() - .upgradeToPlan(plan) - @Test @Ignore("Requires user with paypal account linked") fun existingPaypalMethodDisplayed() { - val user = users.getUser { it.paypal.isNotEmpty() } + val userWithPaypal = users.getUser { it.paypal.isNotEmpty() } - upgradeUserToPlan(user) - .verify { paymentMethodDisplayed("PayPal", user.paypal) } + login(userWithPaypal) + + CoreexampleRobot() + .plansUpgrade() + .upgradeToPlan(Plan.Dev) + .verify { paymentMethodDisplayed("PayPal", userWithPaypal.paypal) } } @Test @SmokeTest fun existingCreditCardMethodDisplayed() { - upgradeUserToPlan(userWithCard) + + login(userWithCard) + + CoreexampleRobot() + .plansUpgrade() + .upgradeToPlan(Plan.Dev) .verify { paymentMethodDisplayed(Card.default.details, Card.default.name) } } @@ -74,7 +66,11 @@ class ExistingPaymentMethodTests : BaseTest() { val user = users.getUser { it.paypal.isNotEmpty() && it.cards.isNotEmpty() && !it.isPaid } val card = user.cards[0] - upgradeUserToPlan(user) + login(user) + + CoreexampleRobot() + .plansUpgrade() + .upgradeToPlan(Plan.Dev) .verify { paymentMethodDisplayed(card.details, card.name) paymentMethodDisplayed("PayPal", user.paypal) @@ -86,8 +82,9 @@ class ExistingPaymentMethodTests : BaseTest() { fun switchPaymentMethod() { val user = users.getUser { it.paypal.isNotEmpty() && it.cards.isNotEmpty() && !it.isPaid } - upgradeUserToPlan(user) - .selectPaymentMethod(user.cards[0].details) + CoreexampleRobot() + .plansUpgrade() + .upgradeToPlan(Plan.Dev) .verify { paymentMethod(user.paypal).checkIsNotChecked() paymentMethod(user.cards[0].details).checkIsChecked() diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/NewCreditCardTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/NewCreditCardTests.kt index 83aca30f2..70154ff7d 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/NewCreditCardTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/payments/NewCreditCardTests.kt @@ -23,7 +23,6 @@ import me.proton.core.test.android.plugins.data.BillingCycle import me.proton.core.test.android.plugins.data.Currency import me.proton.core.test.android.plugins.data.Plan import me.proton.core.test.android.plugins.data.User -import me.proton.core.test.android.robots.auth.AddAccountRobot import me.proton.core.test.android.robots.payments.AddCreditCardRobot import me.proton.core.test.android.robots.plans.SelectPlanRobot import me.proton.core.test.android.uitests.CoreexampleRobot @@ -39,10 +38,11 @@ class NewCreditCardTests : BaseTest() { } @Before - fun login() { - AddAccountRobot() - .signIn() - .loginUser(userWithoutCard) + fun goToPlanUpgrade() { + + login(userWithoutCard) + + CoreexampleRobot() .plansUpgrade() .changeCurrency(Currency.CHF) .upgradeToPlan(Plan.Dev) diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/CurrentPlanTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/CurrentPlanTests.kt index 661ef79c9..faf2719c7 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/CurrentPlanTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/CurrentPlanTests.kt @@ -37,9 +37,8 @@ class CurrentPlanTests : BaseTest() { } private fun navigateUserToCurrentPlans(user: User): SelectPlanRobot { - LoginRobot() - .loginUser(user) - .verify { primaryUserIs(user) } + + login(user) return CoreexampleRobot() .plansCurrent() diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/UpgradePlanTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/UpgradePlanTests.kt index 7a0f191fd..56c42782f 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/UpgradePlanTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/plans/UpgradePlanTests.kt @@ -18,45 +18,30 @@ package me.proton.core.test.android.uitests.tests.medium.plans -import me.proton.core.test.android.uitests.tests.SmokeTest import me.proton.core.test.android.plugins.data.BillingCycle import me.proton.core.test.android.plugins.data.Currency import me.proton.core.test.android.plugins.data.Plan -import me.proton.core.test.android.plugins.data.User -import me.proton.core.test.android.robots.auth.AddAccountRobot -import me.proton.core.test.android.robots.auth.login.LoginRobot import me.proton.core.test.android.robots.plans.SelectPlanRobot import me.proton.core.test.android.uitests.CoreexampleRobot import me.proton.core.test.android.uitests.tests.BaseTest -import org.junit.Before +import me.proton.core.test.android.uitests.tests.SmokeTest import org.junit.Test class UpgradePlanTests : BaseTest() { private val selectPlanRobot = SelectPlanRobot() + private val coreExampleRobot = CoreexampleRobot() private val freeUser = users.getUser { !it.isPaid } private val paidUser = users.getUser { it.isPaid } - @Before - fun login() { - AddAccountRobot() - .signIn() - } - - private fun navigateUserToCurrentPlans(user: User): SelectPlanRobot { - LoginRobot() - .loginUser(user) - .verify { primaryUserIs(user) } - - CoreexampleRobot() - .plansUpgrade() - return SelectPlanRobot() - } - @Test @SmokeTest fun userWithFreePlan() { - navigateUserToCurrentPlans(freeUser) + + login(freeUser) + + coreExampleRobot + .plansUpgrade() .scrollToPlan(Plan.Dev) .verify { canUpgradeToPlan(Plan.Dev) @@ -70,13 +55,22 @@ class UpgradePlanTests : BaseTest() { @Test fun userWithPaidPlan() { - navigateUserToCurrentPlans(paidUser) + + login(paidUser) + + coreExampleRobot + .plansUpgrade() .verify { planDetailsDisplayed(paidUser.plan) } } @Test fun changeBillingCycleAndCurrency() { - navigateUserToCurrentPlans(freeUser) + + login(freeUser) + + coreExampleRobot + .plansUpgrade() + .scrollToPlan(Plan.Dev) BillingCycle.values().forEach { cycle -> selectPlanRobot.changeBillingCycle(cycle) diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/PasswordManagementTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/PasswordManagementTests.kt index 33abdcd64..1621e7288 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/PasswordManagementTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/PasswordManagementTests.kt @@ -21,13 +21,12 @@ package me.proton.core.test.android.uitests.tests.medium.usersettings import me.proton.core.account.domain.entity.AccountState import me.proton.core.account.domain.entity.SessionState import me.proton.core.auth.R -import me.proton.core.test.android.uitests.tests.SmokeTest import me.proton.core.test.android.instrumented.utils.StringUtils.randomString import me.proton.core.test.android.plugins.data.User -import me.proton.core.test.android.robots.auth.AddAccountRobot import me.proton.core.test.android.robots.settings.PasswordManagementRobot import me.proton.core.test.android.uitests.CoreexampleRobot import me.proton.core.test.android.uitests.tests.BaseTest +import me.proton.core.test.android.uitests.tests.SmokeTest import org.junit.Test class PasswordManagementTests : BaseTest() { @@ -41,9 +40,9 @@ class PasswordManagementTests : BaseTest() { private fun navigateToPasswordManagement(user: User) { quark.jailUnban() - AddAccountRobot() - .signIn() - .loginUser(user) + login(user) + + CoreexampleRobot() .settingsPasswordManagement() .verify { passwordManagementElementsDisplayed() } } diff --git a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/RecoveryEmailTests.kt b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/RecoveryEmailTests.kt index cf640e4ed..705ed8ae0 100644 --- a/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/RecoveryEmailTests.kt +++ b/coreexample/src/androidTest/kotlin/me/proton/core/test/android/uitests/tests/medium/usersettings/RecoveryEmailTests.kt @@ -20,13 +20,12 @@ package me.proton.core.test.android.uitests.tests.medium.usersettings import me.proton.core.account.domain.entity.AccountState import me.proton.core.account.domain.entity.SessionState -import me.proton.core.test.android.uitests.tests.SmokeTest import me.proton.core.test.android.plugins.data.User -import me.proton.core.test.android.robots.auth.AddAccountRobot import me.proton.core.test.android.robots.settings.RecoveryEmailRobot import me.proton.core.test.android.robots.settings.RecoveryEmailRobot.AuthenticationRobot import me.proton.core.test.android.uitests.CoreexampleRobot import me.proton.core.test.android.uitests.tests.BaseTest +import me.proton.core.test.android.uitests.tests.SmokeTest import me.proton.core.usersettings.R import org.junit.Before import org.junit.Test @@ -41,9 +40,10 @@ class RecoveryEmailTests : BaseTest() { @Before fun navigateToPasswordManagement() { - AddAccountRobot() - .signIn() - .loginUser(user) + + login(user) + + CoreexampleRobot() .settingsRecoveryEmail() .verify { recoveryEmailElementsDisplayed()