diff options
| author | Albin <albin@mullvad.net> | 2022-03-07 10:26:56 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-04-20 17:09:16 +0200 |
| commit | 24f8b8dd5fb827f71b0ae6bb087bc3c6e56ee120 (patch) | |
| tree | c1316034ecd8cc32aa8829e9671112bd33a649e1 /android | |
| parent | bb0db8f6caff2f8b66b35117f282e87aa222a65d (diff) | |
| download | mullvadvpn-24f8b8dd5fb827f71b0ae6bb087bc3c6e56ee120.tar.xz mullvadvpn-24f8b8dd5fb827f71b0ae6bb087bc3c6e56ee120.zip | |
Add Android e2e base test class
Most/all tests will inherit from this common base class that will hold
necessary setup steps to run various e2e test scenarios.
Diffstat (limited to 'android')
5 files changed, 66 insertions, 30 deletions
diff --git a/android/e2e/src/main/AndroidManifest.xml b/android/e2e/src/main/AndroidManifest.xml index 50c48f741b..8f3435f452 100644 --- a/android/e2e/src/main/AndroidManifest.xml +++ b/android/e2e/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ <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" + <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/EndToEndTest.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt new file mode 100644 index 0000000000..81a496c4f2 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt @@ -0,0 +1,28 @@ +package net.mullvad.mullvadvpn.e2e + +import android.content.Context +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.runner.AndroidJUnit4 +import androidx.test.uiautomator.UiDevice +import net.mullvad.mullvadvpn.e2e.interactor.AppInteractor +import org.junit.Before +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +abstract class EndToEndTest { + + lateinit var device: UiDevice + lateinit var targetContext: Context + lateinit var app: AppInteractor + + @Before + fun setup() { + device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + targetContext = InstrumentationRegistry.getInstrumentation().targetContext + + app = AppInteractor( + device, + targetContext + ) + } +} 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 index 5d19716ff5..c873d3452c 100644 --- a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/LaunchAppTest.kt +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/LaunchAppTest.kt @@ -1,37 +1,13 @@ 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 { +class LaunchAppTest : EndToEndTest() { @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 - ) + app.launch() } } 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 deleted file mode 100644 index 44b8029799..0000000000 --- a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt +++ /dev/null @@ -1,3 +0,0 @@ -package net.mullvad.mullvadvpn.e2e.constant - -const val LOG_TAG = "mullvad-e2e" 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 new file mode 100644 index 0000000000..79cc234503 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/interactor/AppInteractor.kt @@ -0,0 +1,33 @@ +package net.mullvad.mullvadvpn.e2e.interactor + +import android.content.Context +import android.content.Intent +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 + +class AppInteractor( + private val device: UiDevice, + private val targetContext: Context +) { + fun launch() { + 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 + ) + } +} |
