summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-03-07 10:26:56 +0100
committerAlbin <albin@mullvad.net>2022-04-20 17:09:16 +0200
commit24f8b8dd5fb827f71b0ae6bb087bc3c6e56ee120 (patch)
treec1316034ecd8cc32aa8829e9671112bd33a649e1 /android
parentbb0db8f6caff2f8b66b35117f282e87aa222a65d (diff)
downloadmullvadvpn-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')
-rw-r--r--android/e2e/src/main/AndroidManifest.xml4
-rw-r--r--android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt28
-rw-r--r--android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/LaunchAppTest.kt28
-rw-r--r--android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt3
-rw-r--r--android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/interactor/AppInteractor.kt33
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
+ )
+ }
+}