Merge branch 'test/login-helper' into 'master'

Updated tests to use Login helper

See merge request proton/mobile/android/proton-libs!485
This commit is contained in:
Artiom Košelev 2021-11-22 19:53:33 +00:00
commit 8105336ee6
10 changed files with 80 additions and 82 deletions

View File

@ -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<CoreexampleRobot>()
}
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<Application>())
val appDatabase = AppDatabaseModule.provideAppDatabase(getTargetContext())
@JvmStatic

View File

@ -31,9 +31,10 @@ class PasswordManagementTest : BaseTest() {
@Test
fun changePasswordAndLogin() {
val newPassword = "newPassword"
AddAccountRobot()
.signIn()
.loginUser<CoreexampleRobot>(user)
login(user)
CoreexampleRobot()
.settingsPasswordManagement()
.changePassword<CoreexampleRobot>(user.password, newPassword)
.accountSwitcher()

View File

@ -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<CoreexampleRobot>(firstUser)
.verify { accountSwitcherDisplayed() }
login(firstUser)
CoreexampleRobot()
.accountSwitcher()

View File

@ -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<CoreexampleRobot>(user)
login(user)
CoreexampleRobot()
.humanVerification()
.verify { hvElementsDisplayed() }
}

View File

@ -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<CoreexampleRobot>(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<ExistingPaymentMethodsRobot>(Plan.Dev)
.verify { paymentMethodDisplayed("PayPal", userWithPaypal.paypal) }
}
@Test
@SmokeTest
fun existingCreditCardMethodDisplayed() {
upgradeUserToPlan(userWithCard)
login(userWithCard)
CoreexampleRobot()
.plansUpgrade()
.upgradeToPlan<ExistingPaymentMethodsRobot>(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<ExistingPaymentMethodsRobot>(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<ExistingPaymentMethodsRobot>(Plan.Dev)
.verify {
paymentMethod(user.paypal).checkIsNotChecked()
paymentMethod(user.cards[0].details).checkIsChecked()

View File

@ -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<CoreexampleRobot>(userWithoutCard)
fun goToPlanUpgrade() {
login(userWithoutCard)
CoreexampleRobot()
.plansUpgrade()
.changeCurrency(Currency.CHF)
.upgradeToPlan<AddCreditCardRobot>(Plan.Dev)

View File

@ -37,9 +37,8 @@ class CurrentPlanTests : BaseTest() {
}
private fun navigateUserToCurrentPlans(user: User): SelectPlanRobot {
LoginRobot()
.loginUser<CoreexampleRobot>(user)
.verify { primaryUserIs(user) }
login(user)
return CoreexampleRobot()
.plansCurrent()

View File

@ -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<CoreexampleRobot>(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)

View File

@ -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<CoreexampleRobot>(user)
login(user)
CoreexampleRobot()
.settingsPasswordManagement()
.verify { passwordManagementElementsDisplayed() }
}

View File

@ -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<CoreexampleRobot>(user)
login(user)
CoreexampleRobot()
.settingsRecoveryEmail()
.verify {
recoveryEmailElementsDisplayed()