diff options
| author | David Göransson <david.goransson@mullvad.net> | 2025-05-11 22:54:25 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2025-05-13 09:51:27 +0200 |
| commit | 8ceea62b0b54a3eeed1651ee5d2c1944ed256067 (patch) | |
| tree | 112c41fae28867537453d7d8b1778b0851b495bf | |
| parent | 3a7029e28bef6406f9a03a42afd1db341f3b0391 (diff) | |
| download | mullvadvpn-8ceea62b0b54a3eeed1651ee5d2c1944ed256067.tar.xz mullvadvpn-8ceea62b0b54a3eeed1651ee5d2c1944ed256067.zip | |
Avoid waiting for stable when active window is switched
NullPointerException was probably caused by the active window being
changing while we called `waitForStableInActiveWindow`.
4 files changed, 19 insertions, 27 deletions
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt index c14be06208..11fc039be9 100644 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt +++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt @@ -7,6 +7,7 @@ import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiObject2 import androidx.test.uiautomator.UiObject2Condition import androidx.test.uiautomator.Until +import androidx.test.uiautomator.waitForAppToBeVisible import co.touchlab.kermit.Logger import java.lang.Thread.sleep import java.util.regex.Pattern @@ -104,3 +105,10 @@ fun UiObject2.findObjectWithTimeout( ) } } + +fun UiDevice.acceptVpnPermissionDialog() { + findObjectWithTimeout(By.text("Connection request")) + // Accept Creating the VPN Permission profile + findObjectWithTimeout(By.text("OK")).click() + waitForAppToBeVisible(currentPackageName) +} diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SystemVpnConfigurationAlert.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SystemVpnConfigurationAlert.kt deleted file mode 100644 index 046d6e8197..0000000000 --- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/SystemVpnConfigurationAlert.kt +++ /dev/null @@ -1,16 +0,0 @@ -package net.mullvad.mullvadvpn.test.common.page - -import androidx.test.uiautomator.By -import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout - -class SystemVpnConfigurationAlert internal constructor() : Page() { - private val okSelector = By.text("OK") - - override fun assertIsDisplayed() { - uiDevice.findObjectWithTimeout(okSelector) - } - - fun clickOk() { - uiDevice.findObjectWithTimeout(okSelector).click() - } -} 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 0908d8f4ed..0d0f3d6262 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 @@ -4,10 +4,10 @@ import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.delay import kotlinx.coroutines.test.runTest import net.mullvad.mullvadvpn.test.common.constant.EXTREMELY_LONG_TIMEOUT +import net.mullvad.mullvadvpn.test.common.extension.acceptVpnPermissionDialog import net.mullvad.mullvadvpn.test.common.page.ConnectPage import net.mullvad.mullvadvpn.test.common.page.SelectLocationPage import net.mullvad.mullvadvpn.test.common.page.SettingsPage -import net.mullvad.mullvadvpn.test.common.page.SystemVpnConfigurationAlert import net.mullvad.mullvadvpn.test.common.page.VpnSettingsPage import net.mullvad.mullvadvpn.test.common.page.disableObfuscationStory import net.mullvad.mullvadvpn.test.common.page.enableLocalNetworkSharingStory @@ -42,7 +42,7 @@ class ConnectionTest : EndToEndTest() { on<ConnectPage> { clickConnect() } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() on<ConnectPage> { waitForConnectedLabel() } } @@ -54,7 +54,7 @@ class ConnectionTest : EndToEndTest() { on<ConnectPage> { clickConnect() } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() var outIpv4Address = "" @@ -84,7 +84,7 @@ class ConnectionTest : EndToEndTest() { clickLocationCell(DEFAULT_RELAY) } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() var relayIpAddress: String? = null @@ -121,7 +121,7 @@ class ConnectionTest : EndToEndTest() { clickLocationCell(DEFAULT_RELAY) } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() var relayIpAddress: String? = null @@ -173,7 +173,7 @@ class ConnectionTest : EndToEndTest() { clickLocationCell(DEFAULT_RELAY) } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() var relayIpAddress: String? = null @@ -222,7 +222,7 @@ class ConnectionTest : EndToEndTest() { on<ConnectPage> { clickConnect() } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() // Ensure it is not possible to connect to relay on<ConnectPage> { 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 0ccc42e80b..3d5eb70cfa 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 @@ -3,11 +3,11 @@ 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.test.common.extension.acceptVpnPermissionDialog import net.mullvad.mullvadvpn.test.common.misc.Attachment import net.mullvad.mullvadvpn.test.common.page.ConnectPage import net.mullvad.mullvadvpn.test.common.page.SelectLocationPage import net.mullvad.mullvadvpn.test.common.page.SettingsPage -import net.mullvad.mullvadvpn.test.common.page.SystemVpnConfigurationAlert import net.mullvad.mullvadvpn.test.common.page.VpnSettingsPage import net.mullvad.mullvadvpn.test.common.page.WireGuardCustomPortDialog import net.mullvad.mullvadvpn.test.common.page.disableObfuscationStory @@ -78,7 +78,7 @@ class LeakTest : EndToEndTest() { clickLocationCell(DEFAULT_RELAY) } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() on<ConnectPage> { waitForConnectedLabel() } @@ -126,7 +126,7 @@ class LeakTest : EndToEndTest() { clickLocationCell(DEFAULT_RELAY) } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() on<ConnectPage> { waitForConnectedLabel() } @@ -183,7 +183,7 @@ class LeakTest : EndToEndTest() { clickLocationCell(DAITA_COMPATIBLE_RELAY) } - on<SystemVpnConfigurationAlert> { clickOk() } + device.acceptVpnPermissionDialog() on<ConnectPage> { waitForConnectedLabel() } |
