diff options
| author | Albin <albin@mullvad.net> | 2022-12-28 15:06:32 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2023-01-10 15:32:42 +0100 |
| commit | 0976431ed723e635b812f3b3a3d569532d50463b (patch) | |
| tree | 1e7ac41632db9444f105ce3e9a5014cc6cb73521 /android/test | |
| parent | ba35985915d5067b2887d6aa398c8e4db96e0fb4 (diff) | |
| download | mullvadvpn-0976431ed723e635b812f3b3a3d569532d50463b.tar.xz mullvadvpn-0976431ed723e635b812f3b3a3d569532d50463b.zip | |
Handle notificaiton permission prompt in e2e tests
Diffstat (limited to 'android/test')
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") |
