diff options
| author | Albin <albin@mullvad.net> | 2022-03-11 10:58:24 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-04-20 17:52:13 +0200 |
| commit | 339038cca27828cc060d23f846e3ab6026889af2 (patch) | |
| tree | dcddf672ff435b2d484f25a4df58eb665809516a /android/e2e/src/main/java | |
| parent | 83059632cb2998ec71aff242897dea947ae05fb7 (diff) | |
| download | mullvadvpn-339038cca27828cc060d23f846e3ab6026889af2.tar.xz mullvadvpn-339038cca27828cc060d23f846e3ab6026889af2.zip | |
Add Android e2e test to open web link
Diffstat (limited to 'android/e2e/src/main/java')
6 files changed, 69 insertions, 0 deletions
diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/WebLinkTest.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/WebLinkTest.kt new file mode 100644 index 0000000000..aaff57de65 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/WebLinkTest.kt @@ -0,0 +1,21 @@ +package net.mullvad.mullvadvpn.e2e + +import androidx.test.uiautomator.By +import net.mullvad.mullvadvpn.e2e.extension.findObjectWithTimeout +import org.junit.Test + +class WebLinkTest : EndToEndTest() { + @Test + fun testOpenFaqFromApp() { + // Given + app.launch() + + // When + device.findObjectWithTimeout(By.text("Login")) + app.clickSettingsCog() + app.clickListItemByText("FAQs & Guides") + + // Then + device.findObjectWithTimeout(By.text("Mullvad help center")) + } +} diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/ResourceConstants.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/ResourceConstants.kt new file mode 100644 index 0000000000..0263a0b0d6 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/ResourceConstants.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.e2e.constant + +const val SETTINGS_COG_ID = "net.mullvad.mullvadvpn:id/settings" diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/TimeoutConstants.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/TimeoutConstants.kt index 6ede2d3048..09b2986ea1 100644 --- a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/TimeoutConstants.kt +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/TimeoutConstants.kt @@ -1,3 +1,4 @@ package net.mullvad.mullvadvpn.e2e.constant const val APP_LAUNCH_TIMEOUT = 5000L +const val DEFAULT_INTERACTION_TIMEOUT = 3000L diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/extension/BundleExtensions.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/extension/BundleExtensions.kt new file mode 100644 index 0000000000..275bd0b9c7 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/extension/BundleExtensions.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.e2e.extension + +import android.os.Bundle + +fun Bundle.getRequiredArgument(argument: String): String { + return getString(argument) + ?: throw IllegalArgumentException("Missing required argument: $argument") +} diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/extension/UiAutomatorExtensions.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/extension/UiAutomatorExtensions.kt new file mode 100644 index 0000000000..8c7dd16cee --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/extension/UiAutomatorExtensions.kt @@ -0,0 +1,26 @@ +package net.mullvad.mullvadvpn.e2e.extension + +import androidx.test.uiautomator.BySelector +import androidx.test.uiautomator.UiDevice +import androidx.test.uiautomator.UiObject2 +import androidx.test.uiautomator.Until +import net.mullvad.mullvadvpn.e2e.constant.DEFAULT_INTERACTION_TIMEOUT + +fun UiDevice.findObjectWithTimeout( + selector: BySelector, + timeout: Long = DEFAULT_INTERACTION_TIMEOUT +): UiObject2 { + + wait( + Until.hasObject(selector), + timeout + ) + + return try { + findObject(selector) + } catch (e: NullPointerException) { + throw IllegalArgumentException( + "No matches for selector within timeout ($timeout): $selector" + ) + } +} diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/interactor/AppInteractor.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/interactor/AppInteractor.kt index 79cc234503..8270f27c9e 100644 --- a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/interactor/AppInteractor.kt +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/interactor/AppInteractor.kt @@ -7,6 +7,8 @@ import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import net.mullvad.mullvadvpn.e2e.constant.APP_LAUNCH_TIMEOUT import net.mullvad.mullvadvpn.e2e.constant.MULLVAD_PACKAGE +import net.mullvad.mullvadvpn.e2e.constant.SETTINGS_COG_ID +import net.mullvad.mullvadvpn.e2e.extension.findObjectWithTimeout class AppInteractor( private val device: UiDevice, @@ -30,4 +32,12 @@ class AppInteractor( APP_LAUNCH_TIMEOUT ) } + + fun clickSettingsCog() { + device.findObjectWithTimeout(By.res(SETTINGS_COG_ID)).click() + } + + fun clickListItemByText(text: String) { + device.findObjectWithTimeout(By.text(text)).click() + } } |
