diff options
| author | David Göransson <david.goransson@mullvad.net> | 2025-05-09 15:57:25 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2025-05-12 14:09:31 +0200 |
| commit | 069e7a52de87e665f7fdae8a664182f23150da55 (patch) | |
| tree | 8195719809c07921056735b991c6fb797ce8adf9 /android/test/e2e/src | |
| parent | 405b0be1f551906890be84f5e8aca3539b6bcfbf (diff) | |
| download | mullvadvpn-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')
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() - } - } -} |
