summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2025-07-04 09:20:42 +0200
committerDavid Göransson <david.goransson@mullvad.net>2025-07-04 09:20:42 +0200
commit3b1c4cce2f6f2810db2f5efcae99d4da1ca81ffd (patch)
treeb90897c6f41cdbed6fcb887afdfca69c579a054c
parent7251c7d33ddd1a98cd388b758509c569392253bd (diff)
parent9b5764c6efa5589ac71a564be2e819f320eb8b54 (diff)
downloadmullvadvpn-3b1c4cce2f6f2810db2f5efcae99d4da1ca81ffd.tar.xz
mullvadvpn-3b1c4cce2f6f2810db2f5efcae99d4da1ca81ffd.zip
Merge branch 'fix-wait-for-stable'
-rw-r--r--android/gradle/libs.versions.toml2
-rw-r--r--android/gradle/verification-metadata.xml10
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt14
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/Page.kt4
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TooManyDevicesPage.kt4
5 files changed, 10 insertions, 24 deletions
diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml
index b1ef2bde46..993586e2fd 100644
--- a/android/gradle/libs.versions.toml
+++ b/android/gradle/libs.versions.toml
@@ -35,7 +35,7 @@ androidx-test = "1.6.1"
androidx-testmonitor = "1.7.2"
androidx-testorchestrator = "1.5.1"
androidx-testrunner = "1.6.2"
-androidx-uiautomator = "2.4.0-alpha03"
+androidx-uiautomator = "2.4.0-alpha05"
androidx-tv = "1.0.0"
# Arrow
diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml
index 97c1b353fb..8512f7c0db 100644
--- a/android/gradle/verification-metadata.xml
+++ b/android/gradle/verification-metadata.xml
@@ -2426,12 +2426,12 @@
<sha256 value="69893d87f3682a2abf95757bfa57c062a491d34f316cb55dc99a022e9c1dbbbe" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="androidx.test.uiautomator" name="uiautomator" version="2.4.0-alpha03">
- <artifact name="uiautomator-2.4.0-alpha03.aar">
- <sha256 value="eec96451e0b35a23ebf32bafe3d6d7f8498e21c7f646c5d5e75e1020919cb045" origin="Generated by Gradle"/>
+ <component group="androidx.test.uiautomator" name="uiautomator" version="2.4.0-alpha05">
+ <artifact name="uiautomator-2.4.0-alpha05.aar">
+ <sha256 value="44933f7d78b436d34c8a1aab0297fd597fd0a58a8350613a30044868ff9a4a00" origin="Generated by Gradle"/>
</artifact>
- <artifact name="uiautomator-2.4.0-alpha03.module">
- <sha256 value="9a935084c738a01673987f82cfa0bc0c22bd409fa17c80d0b2e5628cb9acc281" origin="Generated by Gradle"/>
+ <artifact name="uiautomator-2.4.0-alpha05.module">
+ <sha256 value="4f74d74883b9f4dc6b4ab11cb3359102bdd9f72e67e16dc834b02b662e05c208" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.tracing" name="tracing" version="1.0.0">
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 37c2283962..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
@@ -2,14 +2,12 @@ package net.mullvad.mullvadvpn.test.common.extension
import androidx.test.uiautomator.By
import androidx.test.uiautomator.BySelector
-import androidx.test.uiautomator.StableResult
import androidx.test.uiautomator.StaleObjectException
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 androidx.test.uiautomator.waitForStableInActiveWindow
import co.touchlab.kermit.Logger
import java.lang.Thread.sleep
import java.util.regex.Pattern
@@ -114,15 +112,3 @@ fun UiDevice.acceptVpnPermissionDialog() {
findObjectWithTimeout(By.text("OK")).click()
waitForAppToBeVisible(currentPackageName)
}
-
-fun UiDevice.waitForStableInActiveWindowSafe(): StableResult? =
- try {
- // Wait for stable is not very stable, but it is our best best to wait for animation to
- // settle. For now we will just catch the exception and sleep for a bit and hope for the
- // best.
- waitForStableInActiveWindow()
- } catch (e: Exception) {
- Logger.e("waitForStableInActiveWindow failed", e)
- sleep(1000)
- null
- }
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/Page.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/Page.kt
index e01ab6dec7..c865fb0e50 100644
--- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/Page.kt
+++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/Page.kt
@@ -2,7 +2,7 @@ package net.mullvad.mullvadvpn.test.common.page
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
-import net.mullvad.mullvadvpn.test.common.extension.waitForStableInActiveWindowSafe
+import androidx.test.uiautomator.waitForStableInActiveWindow
sealed class Page {
val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
@@ -14,7 +14,7 @@ inline fun <reified T : Page> on(scope: T.() -> Unit = {}) {
val page = T::class.java.getConstructor().newInstance()
// Wait for the screen to settle and so we don't proceed with actions too early. Otherwise, we
// might start clicking on the screen before it is in a resumed state.
- page.uiDevice.waitForStableInActiveWindowSafe()
+ page.uiDevice.waitForStableInActiveWindow()
page.assertIsDisplayed()
page.scope()
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TooManyDevicesPage.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TooManyDevicesPage.kt
index 39ad3cd83a..2f5f8c4133 100644
--- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TooManyDevicesPage.kt
+++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/page/TooManyDevicesPage.kt
@@ -1,9 +1,9 @@
package net.mullvad.mullvadvpn.test.common.page
import androidx.test.uiautomator.By
+import androidx.test.uiautomator.waitForStableInActiveWindow
import net.mullvad.mullvadvpn.test.common.extension.expectObjectToDisappearWithTimeout
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
-import net.mullvad.mullvadvpn.test.common.extension.waitForStableInActiveWindowSafe
class TooManyDevicesPage internal constructor() : Page() {
private val tooManyDevicesSelector = By.text("Too many devices")
@@ -37,7 +37,7 @@ fun TooManyDevicesPage.removeDeviceFlow(deviceName: String) {
clickRemoveDevice(deviceName)
// Wait for the confirmation dialog to appear
- uiDevice.waitForStableInActiveWindowSafe()
+ uiDevice.waitForStableInActiveWindow()
// Confirm logout
uiDevice.findObjectWithTimeout(By.text("Yes, log out device")).click()