diff options
| author | Albin <albin@mullvad.net> | 2022-03-07 10:00:47 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-04-20 17:09:16 +0200 |
| commit | bb0db8f6caff2f8b66b35117f282e87aa222a65d (patch) | |
| tree | 73750868dfc33f22d7dd73f26a9aa0cb81bd7d77 /android/e2e/src/main | |
| parent | a9f906b082f76410855f0b97e71f45ca60bfa727 (diff) | |
| download | mullvadvpn-bb0db8f6caff2f8b66b35117f282e87aa222a65d.tar.xz mullvadvpn-bb0db8f6caff2f8b66b35117f282e87aa222a65d.zip | |
Add Android e2e test module
The purpose of this test module is to be able to trigger end-to-end
tests separately from the main app module, mainly because of the flaky
nature of end-to-end tests.
Tests are easiest executed by running the following gradle command:
./gradlew :e2e:connectedDebugAndroidTest
Diffstat (limited to 'android/e2e/src/main')
5 files changed, 52 insertions, 0 deletions
diff --git a/android/e2e/src/main/AndroidManifest.xml b/android/e2e/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..50c48f741b --- /dev/null +++ b/android/e2e/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="net.mullvad.mullvadvpn.e2e"> + <uses-permission android:name="android.permission.INTERNET" /> + <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" + android:targetPackage="net.mullvad.mullvadvpn" /> +</manifest> diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/LaunchAppTest.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/LaunchAppTest.kt new file mode 100644 index 0000000000..5d19716ff5 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/LaunchAppTest.kt @@ -0,0 +1,37 @@ +package net.mullvad.mullvadvpn.e2e + +import android.content.Intent +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.runner.AndroidJUnit4 +import androidx.test.uiautomator.By +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 org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class LaunchAppTest { + @Test + fun testLaunchApp() { + val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + val targetContext = InstrumentationRegistry.getInstrumentation().targetContext + device.pressHome() + // Wait for launcher + device.wait( + Until.hasObject(By.pkg(device.launcherPackageName).depth(0)), + APP_LAUNCH_TIMEOUT + ) + val intent = + targetContext.packageManager.getLaunchIntentForPackage(MULLVAD_PACKAGE)?.apply { + // Clear out any previous instances + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + } + targetContext.startActivity(intent) + device.wait( + Until.hasObject(By.pkg(MULLVAD_PACKAGE).depth(0)), + APP_LAUNCH_TIMEOUT + ) + } +} diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt new file mode 100644 index 0000000000..44b8029799 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.e2e.constant + +const val LOG_TAG = "mullvad-e2e" diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/PackageConstants.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/PackageConstants.kt new file mode 100644 index 0000000000..47aeaa0237 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/PackageConstants.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.e2e.constant + +const val MULLVAD_PACKAGE = "net.mullvad.mullvadvpn" 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 new file mode 100644 index 0000000000..6ede2d3048 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/TimeoutConstants.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.e2e.constant + +const val APP_LAUNCH_TIMEOUT = 5000L |
