diff options
| author | saber safavi <saber.safavi@codic.se> | 2023-12-28 14:26:36 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2024-01-05 10:43:47 +0100 |
| commit | b4e789c36efba733b2f267ffd34d7f6875623f76 (patch) | |
| tree | 1adcd9a45df25c595f1c026f61e4f227b19d089a | |
| parent | 2d0bad03c6e6ddf193e73fe7e17f582706b1d69d (diff) | |
| download | mullvadvpn-b4e789c36efba733b2f267ffd34d7f6875623f76.tar.xz mullvadvpn-b4e789c36efba733b2f267ffd34d7f6875623f76.zip | |
Add automate logout ui tests
4 files changed, 63 insertions, 20 deletions
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt index 2909b4edd0..74bc7703d5 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt @@ -49,6 +49,14 @@ class AppInteractor(private val device: UiDevice, private val targetContext: Con ensureLoggedIn() } + fun launchAndCreateAccount() { + launch() + device.clickAgreeOnPrivacyDisclaimer() + device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove() + attemptCreateAccount() + ensureAccountCreated() + } + fun attemptLogin(accountToken: String) { val loginObject = device.findObjectWithTimeout(By.clazz("android.widget.EditText")).apply { @@ -57,6 +65,14 @@ class AppInteractor(private val device: UiDevice, private val targetContext: Con loginObject.parent.findObject(By.clazz(Button::class.java)).click() } + private fun attemptCreateAccount() { + device.findObjectWithTimeout(By.text("Create account")).click() + } + + private fun ensureAccountCreated() { + device.findObjectWithTimeout(By.text("Congrats!"), LOGIN_TIMEOUT) + } + fun ensureLoggedIn() { device.findObjectWithTimeout(By.text("UNSECURED CONNECTION"), LOGIN_TIMEOUT) } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt index e18690a385..c9226993b8 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt @@ -24,14 +24,14 @@ abstract class EndToEndTest { @Rule @JvmField - val permissionRule: GrantPermissionRule = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - GrantPermissionRule.grant(Manifest.permission.READ_MEDIA_IMAGES) - } else { + val permissionRule: GrantPermissionRule? = + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { GrantPermissionRule.grant( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ) + } else { + null } lateinit var device: UiDevice diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt index 685cff8b53..ab3ef54fb1 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt @@ -2,7 +2,6 @@ package net.mullvad.mullvadvpn.test.e2e import androidx.test.runner.AndroidJUnit4 import androidx.test.uiautomator.By -import junit.framework.Assert.assertNotNull import net.mullvad.mullvadvpn.test.common.constant.LOGIN_FAILURE_TIMEOUT import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove @@ -30,7 +29,7 @@ class LoginTest : EndToEndTest() { app.attemptLogin(invalidDummyAccountToken) // Then - device.findObjectWithTimeout(By.text("Login failed"), LOGIN_FAILURE_TIMEOUT) + device.findObjectWithTimeout(By.text("Invalid account number"), LOGIN_FAILURE_TIMEOUT) } @Test @@ -44,18 +43,4 @@ class LoginTest : EndToEndTest() { // Then app.ensureLoggedIn() } - - @Test - fun testLogout() { - // Given - app.launchAndEnsureLoggedIn(validTestAccountToken) - - // When - app.clickSettingsCog() - app.clickListItemByText("Account") - app.clickActionButtonByText("Log out") - - // Then - assertNotNull(device.findObjectWithTimeout(By.text("Login"))) - } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt new file mode 100644 index 0000000000..8552b8a238 --- /dev/null +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt @@ -0,0 +1,42 @@ +package net.mullvad.mullvadvpn.test.e2e + +import androidx.test.runner.AndroidJUnit4 +import androidx.test.uiautomator.By +import junit.framework.Assert.assertNotNull +import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout +import net.mullvad.mullvadvpn.test.e2e.misc.CleanupAccountTestRule +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class LogoutTest : EndToEndTest() { + + @Rule @JvmField val cleanupAccountTestRule = CleanupAccountTestRule() + + @Test + fun testLogout() { + // Given + app.launchAndEnsureLoggedIn(validTestAccountToken) + + // When + app.clickAccountCog() + app.clickActionButtonByText("Log out") + + // Then + assertNotNull(device.findObjectWithTimeout(By.text("Login"))) + } + + @Test + fun testCreateAccountAndLogout() { + // Given + app.launchAndCreateAccount() + + // When + app.clickAccountCog() + app.clickActionButtonByText("Log out") + + // Then + assertNotNull(device.findObjectWithTimeout(By.text("Login"))) + } +} |
