diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-05-20 13:27:09 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-05-22 15:13:17 +0200 |
| commit | 1cc68b0d4ef64b19a3cebc86f48c36025819675e (patch) | |
| tree | d84d85ca84c25d167d3b831300edb3f45610d757 | |
| parent | 91f3ef13d0ec4008c83adba131031a86c8386449 (diff) | |
| download | mullvadvpn-1cc68b0d4ef64b19a3cebc86f48c36025819675e.tar.xz mullvadvpn-1cc68b0d4ef64b19a3cebc86f48c36025819675e.zip | |
Fix e2e production tests
6 files changed, 68 insertions, 22 deletions
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 cbad74981c..8eef6e2086 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 @@ -68,14 +68,6 @@ abstract class EndToEndTest { ) companion object { - const val DEFAULT_COUNTRY = "Sweden" - const val DEFAULT_CITY = "Gothenburg" - const val DEFAULT_RELAY = "se-got-wg-001" - - const val DAITA_COMPATIBLE_COUNTRY = "Relay Software Country" - const val DAITA_COMPATIBLE_CITY = "Relay Software city" - const val DAITA_COMPATIBLE_RELAY = "se-got-wg-002" - val firewallClient = FirewallClient() @JvmStatic 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 9a2ec22fef..35c6f323f0 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 @@ -23,6 +23,7 @@ import net.mullvad.mullvadvpn.test.e2e.constant.getTrafficGeneratorPort import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule import net.mullvad.mullvadvpn.test.e2e.misc.NetworkTrafficChecker import net.mullvad.mullvadvpn.test.e2e.misc.NoTrafficToHostRule +import net.mullvad.mullvadvpn.test.e2e.misc.RelayProvider import net.mullvad.mullvadvpn.test.e2e.misc.SomeTrafficToHostRule import net.mullvad.mullvadvpn.test.e2e.misc.SomeTrafficToOtherHostsRule import net.mullvad.mullvadvpn.test.e2e.misc.TrafficGenerator @@ -40,6 +41,8 @@ class LeakTest : EndToEndTest() { @JvmField val forgetAllVpnAppsInSettingsTestRule = ForgetAllVpnAppsInSettingsTestRule() + val relayProvider = RelayProvider() + @BeforeEach fun setupVPNSettings() { app.launchAndLogIn(accountTestRule.validAccountNumber) @@ -76,9 +79,9 @@ class LeakTest : EndToEndTest() { } on<SelectLocationPage> { - clickLocationExpandButton(DEFAULT_COUNTRY) - clickLocationExpandButton(DEFAULT_CITY) - clickLocationCell(DEFAULT_RELAY) + clickLocationExpandButton(relayProvider.getDefaultRelay().country) + clickLocationExpandButton(relayProvider.getDefaultRelay().city) + clickLocationCell(relayProvider.getDefaultRelay().relay) } device.acceptVpnPermissionDialog() @@ -124,9 +127,9 @@ class LeakTest : EndToEndTest() { } on<SelectLocationPage> { - clickLocationExpandButton(DEFAULT_COUNTRY) - clickLocationExpandButton(DEFAULT_CITY) - clickLocationCell(DEFAULT_RELAY) + clickLocationExpandButton(relayProvider.getDefaultRelay().country) + clickLocationExpandButton(relayProvider.getDefaultRelay().city) + clickLocationCell(relayProvider.getDefaultRelay().relay) } device.acceptVpnPermissionDialog() @@ -181,9 +184,9 @@ class LeakTest : EndToEndTest() { on<ConnectPage> { clickSelectLocation() } on<SelectLocationPage> { - clickLocationExpandButton(DAITA_COMPATIBLE_COUNTRY) - clickLocationExpandButton(DAITA_COMPATIBLE_CITY) - clickLocationCell(DAITA_COMPATIBLE_RELAY) + clickLocationExpandButton(relayProvider.getDaitaRelay().country) + clickLocationExpandButton(relayProvider.getDaitaRelay().city) + clickLocationCell(relayProvider.getDaitaRelay().relay) } device.acceptVpnPermissionDialog() 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 1c2cbb6a4a..0e23fca54a 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 @@ -1,15 +1,15 @@ package net.mullvad.mullvadvpn.test.e2e -import net.mullvad.mullvadvpn.test.common.annotation.SkipForFlavors import net.mullvad.mullvadvpn.test.common.page.LoginPage import net.mullvad.mullvadvpn.test.common.page.MullvadWebsite import net.mullvad.mullvadvpn.test.common.page.SettingsPage import net.mullvad.mullvadvpn.test.common.page.on +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test class WebLinkTest : EndToEndTest() { @Test - @SkipForFlavors(currentFlavor = BuildConfig.FLAVOR_billing, "play") + @Disabled("Disabled due to broken in-browser text detection (DROID-2009)") fun testOpenFaqFromApp() { app.launchAndEnsureOnLoginPage() diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt index b09dd9eae4..dafdd38b80 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/api/relay/RelayApi.kt @@ -17,10 +17,12 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json import net.mullvad.mullvadvpn.test.e2e.BuildConfig -import net.mullvad.mullvadvpn.test.e2e.EndToEndTest.Companion.DEFAULT_RELAY import net.mullvad.mullvadvpn.test.e2e.misc.KermitLogger +import net.mullvad.mullvadvpn.test.e2e.misc.RelayProvider class RelayApi { + private val relayProvider = RelayProvider() + private val client: HttpClient = HttpClient(CIO) { install(ContentNegotiation) { json(Json { ignoreUnknownKeys = true }) } @@ -42,10 +44,13 @@ class RelayApi { withContext(Dispatchers.IO) { val body = client.get { url { path(RELAY_PATH) } }.body<String>() val ipRegex = - """${DEFAULT_RELAY}.+?ipv4_addr_in":"(.+?)"""".toRegex(RegexOption.DOT_MATCHES_ALL) + """${relayProvider.getDefaultRelay().relay}.+?ipv4_addr_in":"(.+?)"""" + .toRegex(RegexOption.DOT_MATCHES_ALL) ipRegex.find(body)?.groups?.get(1)?.value - ?: error("Could not find $DEFAULT_RELAY IP address in relay list") + ?: error( + "Could not find ${relayProvider.getDefaultRelay().relay} IP address in relay list" + ) } companion object { diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Relays.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Relays.kt new file mode 100644 index 0000000000..fb945af9c7 --- /dev/null +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Relays.kt @@ -0,0 +1,20 @@ +package net.mullvad.mullvadvpn.test.e2e.constant + +import net.mullvad.mullvadvpn.test.e2e.misc.TestRelay + +object Stagemole { + val DEFAULT_RELAY = Relays.gotWg001 + val DAITA_RELAY = Relays.gotWg002RelaySoftware +} + +object Production { + val DEFAULT_RELAY = Relays.gotWg001 + val DAITA_RELAY = Relays.gotWg002 +} + +private object Relays { + val gotWg001 = TestRelay(relay = "se-got-wg-001", country = "Sweden", city = "Gothenburg") + val gotWg002 = TestRelay(relay = "se-got-wg-002", country = "Sweden", city = "Gothenburg") + val gotWg002RelaySoftware = + TestRelay(relay = "se-got-wg-002", country = "Sweden", city = "Gothenburg") +} diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/RelayProvider.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/RelayProvider.kt new file mode 100644 index 0000000000..6aaafde29f --- /dev/null +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/RelayProvider.kt @@ -0,0 +1,26 @@ +package net.mullvad.mullvadvpn.test.e2e.misc + +import net.mullvad.mullvadvpn.test.e2e.BuildConfig +import net.mullvad.mullvadvpn.test.e2e.constant.Production +import net.mullvad.mullvadvpn.test.e2e.constant.Stagemole + +class RelayProvider(val currentFlavor: String = BuildConfig.FLAVOR_billing) { + + fun getDefaultRelay(): TestRelay { + return when (currentFlavor) { + "play" -> Stagemole.DEFAULT_RELAY + "oss" -> Production.DEFAULT_RELAY + else -> error("Invalid flavor: $currentFlavor") + } + } + + fun getDaitaRelay(): TestRelay { + return when (currentFlavor) { + "play" -> Stagemole.DAITA_RELAY + "oss" -> Production.DAITA_RELAY + else -> error("Invalid flavor: $currentFlavor") + } + } +} + +data class TestRelay(val country: String, val city: String, val relay: String) |
