summaryrefslogtreecommitdiffhomepage
path: root/android/test/e2e/src
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2025-05-09 15:57:25 +0200
committerDavid Göransson <david.goransson@mullvad.net>2025-05-12 14:09:31 +0200
commit069e7a52de87e665f7fdae8a664182f23150da55 (patch)
tree8195719809c07921056735b991c6fb797ce8adf9 /android/test/e2e/src
parent405b0be1f551906890be84f5e8aca3539b6bcfbf (diff)
downloadmullvadvpn-069e7a52de87e665f7fdae8a664182f23150da55.tar.xz
mullvadvpn-069e7a52de87e665f7fdae8a664182f23150da55.zip
Convert all test to use Page pattern
Converts all our last test to use the Page object pattern and clean up a bunch of old MockApi and E2E test logic.
Diffstat (limited to 'android/test/e2e/src')
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt15
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt11
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt2
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt4
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt6
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt4
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt2
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/TextConstants.kt4
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt33
9 files changed, 18 insertions, 63 deletions
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt
index e7761b163f..0908d8f4ed 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt
@@ -3,7 +3,6 @@ package net.mullvad.mullvadvpn.test.e2e
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.delay
import kotlinx.coroutines.test.runTest
-import net.mullvad.mullvadvpn.BuildConfig
import net.mullvad.mullvadvpn.test.common.constant.EXTREMELY_LONG_TIMEOUT
import net.mullvad.mullvadvpn.test.common.page.ConnectPage
import net.mullvad.mullvadvpn.test.common.page.SelectLocationPage
@@ -25,7 +24,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.RegisterExtension
-class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
+class ConnectionTest : EndToEndTest() {
@RegisterExtension @JvmField val accountTestRule = AccountTestRule()
@@ -39,7 +38,7 @@ class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@Test
fun testConnect() {
// Given
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { clickConnect() }
@@ -51,7 +50,7 @@ class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@Test
fun testConnectAndVerifyWithConnectionCheck() = runTest {
// Given
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { clickConnect() }
@@ -74,7 +73,7 @@ class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@HasDependencyOnLocalAPI
@ClearFirewallRules
fun testWireGuardObfuscationAutomatic() = runTest {
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { enableLocalNetworkSharingStory() }
on<ConnectPage> { clickSelectLocation() }
@@ -111,7 +110,7 @@ class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@HasDependencyOnLocalAPI
@ClearFirewallRules
fun testWireGuardObfuscationOff() = runTest {
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { enableLocalNetworkSharingStory() }
on<ConnectPage> { clickSelectLocation() }
@@ -163,7 +162,7 @@ class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@HasDependencyOnLocalAPI
@ClearFirewallRules
fun testUDPOverTCP() = runTest {
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { enableLocalNetworkSharingStory() }
on<ConnectPage> { clickSelectLocation() }
@@ -212,7 +211,7 @@ class ConnectionTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@HasDependencyOnLocalAPI
@ClearFirewallRules
fun testShadowsocks() = runTest {
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { enableLocalNetworkSharingStory() }
on<ConnectPage> { disableObfuscationStory() }
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 f74355ae2a..e944dd3606 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
@@ -16,7 +16,7 @@ import org.junit.jupiter.api.extension.ExtendWith
import org.junit.jupiter.api.extension.RegisterExtension
@ExtendWith(CaptureScreenRecordingsExtension::class)
-abstract class EndToEndTest(private val infra: String) {
+abstract class EndToEndTest {
@RegisterExtension @JvmField val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG)
@@ -43,14 +43,7 @@ abstract class EndToEndTest(private val infra: String) {
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
targetContext = InstrumentationRegistry.getInstrumentation().targetContext
- val targetPackageNameSuffix =
- when (infra) {
- "devmole" -> ".devmole"
- "stagemole" -> ".stagemole"
- else -> ""
- }
-
- app = AppInteractor(device, targetContext, "net.mullvad.mullvadvpn$targetPackageNameSuffix")
+ app = AppInteractor(device, targetContext)
}
companion object {
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt
index 724bffcad0..f68df92854 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt
@@ -2,7 +2,7 @@ package net.mullvad.mullvadvpn.test.e2e
import org.junit.jupiter.api.Test
-class LaunchAppTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
+class LaunchAppTest : EndToEndTest() {
@Test
fun testLaunchApp() {
app.launch()
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt
index 70146e9dc4..0ccc42e80b 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LeakTest.kt
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.RegisterExtension
-class LeakTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
+class LeakTest : EndToEndTest() {
@RegisterExtension @JvmField val accountTestRule = AccountTestRule()
@@ -39,7 +39,7 @@ class LeakTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@BeforeEach
fun setupVPNSettings() {
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { clickSettings() }
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 bfd78422c0..824f9b6aad 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
@@ -9,7 +9,7 @@ import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.RegisterExtension
-class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
+class LoginTest : EndToEndTest() {
@RegisterExtension @JvmField val accountTestRule = AccountTestRule()
@@ -26,7 +26,7 @@ class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
on<LoginPage> {
enterAccountNumber(validTestAccountNumber)
- tapLoginButton()
+ clickLoginButton()
}
on<ConnectPage>()
@@ -46,7 +46,7 @@ class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
on<LoginPage> {
enterAccountNumber(invalidDummyAccountNumber)
- tapLoginButton()
+ clickLoginButton()
verifyShowingInvalidAccount()
}
}
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
index f99cfc5161..96678b3f26 100644
--- 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
@@ -8,14 +8,14 @@ import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.RegisterExtension
-class LogoutTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
+class LogoutTest : EndToEndTest() {
@RegisterExtension @JvmField val accountTestRule = AccountTestRule()
@Test
fun testLogout() {
// Given
- app.launchAndEnsureLoggedIn(accountTestRule.validAccountNumber)
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { clickAccount() }
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt
index 8d8467392c..1c2cbb6a4a 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt
@@ -7,7 +7,7 @@ import net.mullvad.mullvadvpn.test.common.page.SettingsPage
import net.mullvad.mullvadvpn.test.common.page.on
import org.junit.jupiter.api.Test
-class WebLinkTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
+class WebLinkTest : EndToEndTest() {
@Test
@SkipForFlavors(currentFlavor = BuildConfig.FLAVOR_billing, "play")
fun testOpenFaqFromApp() {
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/TextConstants.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/TextConstants.kt
deleted file mode 100644
index cfc4080ea4..0000000000
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/TextConstants.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package net.mullvad.mullvadvpn.test.e2e.constant
-
-const val CONNECTION_CHECK_IS_CONNECTED = "Using Mullvad VPN"
-const val CONNECTION_CHECK_IS_NOT_CONNECTED = "Not using Mullvad VPN"
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt
deleted file mode 100644
index bcf4adcc9e..0000000000
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/SystemSettingsInteractor.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package net.mullvad.mullvadvpn.test.e2e.interactor
-
-import android.content.ComponentName
-import android.content.Context
-import android.content.Intent
-import androidx.test.uiautomator.By
-import androidx.test.uiautomator.UiDevice
-import net.mullvad.mullvadvpn.test.common.extension.findObjectByCaseInsensitiveText
-
-class SystemSettingsInteractor(private val uiDevice: UiDevice, private val context: Context) {
- fun openVpnSettings() {
- val intent =
- Intent("com.intent.MAIN").apply {
- addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
- addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- }
- intent.component =
- ComponentName.unflattenFromString("com.android.settings/.Settings\$VpnSettingsActivity")
- context.startActivity(intent)
- Thread.sleep(1000)
- }
-
- fun removeAllVpnPermissions() {
- openVpnSettings()
- uiDevice.findObjects(By.descContains("Settings")).forEach {
- it.click()
- Thread.sleep(1000)
- uiDevice.findObjectByCaseInsensitiveText("forget vpn").click()
- Thread.sleep(1000)
- uiDevice.findObjectByCaseInsensitiveText("forget").click()
- }
- }
-}