summaryrefslogtreecommitdiffhomepage
path: root/android/test/e2e/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/test/e2e/src')
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt51
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Relays.kt7
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/RelayProvider.kt8
3 files changed, 66 insertions, 0 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 2d7757ace1..e9c503e5b6 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
@@ -241,6 +241,57 @@ class ConnectionTest : EndToEndTest() {
@Test
@HasDependencyOnLocalAPI
@ClearFirewallRules
+ fun testQuic() = runTest {
+ app.launchAndLogIn(accountTestRule.validAccountNumber)
+ on<ConnectPage> { enableLocalNetworkSharingStory() }
+
+ on<ConnectPage> { clickSelectLocation() }
+
+ on<SelectLocationPage> {
+ val quicRelay = relayProvider.getQuicRelay()
+ clickLocationExpandButton(quicRelay.country)
+ clickLocationExpandButton(quicRelay.city)
+ scrollUntilCell(quicRelay.relay)
+ clickLocationCell(quicRelay.relay)
+ }
+
+ device.acceptVpnPermissionDialog()
+
+ var relayIpAddress: String? = null
+
+ on<ConnectPage> {
+ waitForConnectedLabel()
+ relayIpAddress = extractInIpv4Address()
+ clickDisconnect()
+ }
+
+ // Block UDP traffic to the relay
+ val firewallRule = DropRule.blockWireGuardTrafficRule(relayIpAddress!!)
+ firewallClient.createRule(firewallRule)
+
+ // Enable QUIC
+ on<ConnectPage> { clickSettings() }
+
+ on<SettingsPage> { clickVpnSettings() }
+
+ on<VpnSettingsPage> {
+ scrollUntilWireGuardObfuscationQuicCell()
+ clickWireguardObfuscationQuicCell()
+ }
+
+ device.pressBack()
+ device.pressBack()
+
+ on<ConnectPage> {
+ clickConnect()
+ waitForConnectedLabel(timeout = EXTREMELY_LONG_TIMEOUT)
+ clickDisconnect()
+ }
+ }
+
+ @Test
+ @HasDependencyOnLocalAPI
+ @ClearFirewallRules
fun testShadowsocks() = runTest {
app.launchAndLogIn(accountTestRule.validAccountNumber)
on<ConnectPage> { enableLocalNetworkSharingStory() }
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
index 50a27de87c..7d098fff8f 100644
--- 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
@@ -5,16 +5,23 @@ import net.mullvad.mullvadvpn.test.e2e.misc.TestRelay
object Stagemole {
val DEFAULT_RELAY = Relays.gotWg001
val DAITA_RELAY = Relays.gotWg002RelaySoftware
+
+ val QUIC_RELAY = Relays.stoWg001
}
object Production {
val DEFAULT_RELAY = Relays.gotWg001
val DAITA_RELAY = Relays.gotWg002
+
+ val QUIC_RELAY = Relays.stoWg204
}
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 stoWg001 = TestRelay(relay = "se-sto-wg-001", country = "Sweden", city = "Stockholm")
+ val stoWg204 = TestRelay(relay = "se-sto-wg-204", country = "Sweden", city = "Stockholm")
val gotWg002RelaySoftware =
TestRelay(
relay = "se-got-wg-002",
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
index 6aaafde29f..ee27f95148 100644
--- 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
@@ -21,6 +21,14 @@ class RelayProvider(val currentFlavor: String = BuildConfig.FLAVOR_billing) {
else -> error("Invalid flavor: $currentFlavor")
}
}
+
+ fun getQuicRelay(): TestRelay {
+ return when (currentFlavor) {
+ "play" -> Stagemole.QUIC_RELAY
+ "oss" -> Production.QUIC_RELAY
+ else -> error("Invalid flavor: $currentFlavor")
+ }
+ }
}
data class TestRelay(val country: String, val city: String, val relay: String)