summaryrefslogtreecommitdiffhomepage
path: root/android/test
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-12-28 15:06:32 +0100
committerAlbin <albin@mullvad.net>2023-01-10 15:32:42 +0100
commit0976431ed723e635b812f3b3a3d569532d50463b (patch)
tree1e7ac41632db9444f105ce3e9a5014cc6cb73521 /android/test
parentba35985915d5067b2887d6aa398c8e4db96e0fb4 (diff)
downloadmullvadvpn-0976431ed723e635b812f3b3a3d569532d50463b.tar.xz
mullvadvpn-0976431ed723e635b812f3b3a3d569532d50463b.zip
Handle notificaiton permission prompt in e2e tests
Diffstat (limited to 'android/test')
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/extension/UiAutomatorExtensions.kt25
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt2
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt2
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt2
4 files changed, 31 insertions, 0 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 e6b63f5d36..72dd06b998 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
@@ -1,5 +1,6 @@
package net.mullvad.mullvadvpn.test.common.extension
+import android.os.Build
import androidx.test.uiautomator.By
import androidx.test.uiautomator.BySelector
import androidx.test.uiautomator.UiDevice
@@ -35,6 +36,30 @@ fun UiDevice.findObjectWithTimeout(
}
}
+fun UiDevice.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove(
+ timeout: Long = DEFAULT_INTERACTION_TIMEOUT
+) {
+ if (Build.VERSION.SDK_INT < 31) {
+ // Skipping as notification permissions are not shown.
+ return
+ }
+
+ val selector = By.text("Allow")
+
+ wait(
+ Until.hasObject(selector),
+ timeout
+ )
+
+ try {
+ findObjectWithTimeout(selector).click()
+ } catch (e: IllegalArgumentException) {
+ throw IllegalArgumentException(
+ "Failed to allow notification permission within timeout ($timeout)"
+ )
+ }
+}
+
fun UiObject2.findObjectWithTimeout(
selector: BySelector,
timeout: Long = DEFAULT_INTERACTION_TIMEOUT
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt
index 83d217236f..1d6e9358a8 100644
--- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt
+++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt
@@ -15,6 +15,7 @@ import net.mullvad.mullvadvpn.test.common.constant.MULLVAD_PACKAGE
import net.mullvad.mullvadvpn.test.common.constant.SETTINGS_COG_ID
import net.mullvad.mullvadvpn.test.common.constant.TUNNEL_INFO_ID
import net.mullvad.mullvadvpn.test.common.constant.TUNNEL_OUT_ADDRESS_ID
+import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
class AppInteractor(
@@ -46,6 +47,7 @@ class AppInteractor(
fun launchAndEnsureLoggedIn(accountToken: String) {
launch()
+ device.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove()
attemptLogin(accountToken)
ensureLoggedIn()
}
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 e8fe5b3c7e..9e106d45a2 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
@@ -4,6 +4,7 @@ import androidx.test.runner.AndroidJUnit4
import androidx.test.uiautomator.By
import junit.framework.Assert.assertNotNull
import net.mullvad.mullvadvpn.test.common.constant.LOGIN_FAILURE_TIMEOUT
+import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
import net.mullvad.mullvadvpn.test.e2e.misc.CleanupAccountTestRule
import org.junit.Rule
@@ -24,6 +25,7 @@ class LoginTest : EndToEndTest() {
// When
app.launch()
+ device.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove()
app.attemptLogin(invalidDummyAccountToken)
// Then
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 06b1409e3c..9893074a88 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
@@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.test.e2e
import androidx.test.uiautomator.By
import net.mullvad.mullvadvpn.test.common.constant.WEB_TIMEOUT
+import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
import org.junit.Test
@@ -12,6 +13,7 @@ class WebLinkTest : EndToEndTest() {
app.launch()
// When
+ device.clickAllowOnNotificationPermissionPromptIfApiLevel31AndAbove()
device.findObjectWithTimeout(By.text("Login"))
app.clickSettingsCog()
app.clickListItemByText("FAQs & Guides")