summaryrefslogtreecommitdiffhomepage
path: root/android/test
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-01-10 15:14:02 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-01-11 09:51:39 +0100
commit3e52ec0eb3d4c2cda68cba3596bced1060ba808f (patch)
tree792c59aa493ed3a853fea3e4348cc66c8f334b42 /android/test
parentedbe8c521dd879ba4f100089216d32f853c89f74 (diff)
downloadmullvadvpn-3e52ec0eb3d4c2cda68cba3596bced1060ba808f.tar.xz
mullvadvpn-3e52ec0eb3d4c2cda68cba3596bced1060ba808f.zip
Migrate e2e tests to junit5
Diffstat (limited to 'android/test')
-rw-r--r--android/test/e2e/build.gradle.kts18
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt12
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt25
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt5
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt9
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/WebLinkTest.kt2
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt11
7 files changed, 47 insertions, 35 deletions
diff --git a/android/test/e2e/build.gradle.kts b/android/test/e2e/build.gradle.kts
index 8e24974fcd..946e8effa9 100644
--- a/android/test/e2e/build.gradle.kts
+++ b/android/test/e2e/build.gradle.kts
@@ -4,6 +4,7 @@ import java.util.Properties
plugins {
id(Dependencies.Plugin.androidTestId)
id(Dependencies.Plugin.kotlinAndroidId)
+ id(Dependencies.Plugin.junit5) version Versions.Plugin.junit5
}
android {
@@ -14,6 +15,8 @@ android {
minSdk = Versions.Android.minSdkVersion
testApplicationId = "net.mullvad.mullvadvpn.test.e2e"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunnerArguments["runnerBuilder"] =
+ "de.mannodermaus.junit5.AndroidJUnit5Builder"
targetProjectPath = ":app"
missingDimensionStrategy(FlavorDimensions.BILLING, Flavors.OSS)
@@ -62,6 +65,17 @@ android {
abortOnError = true
warningsAsErrors = true
}
+
+ packaging {
+ resources {
+ pickFirsts +=
+ setOf(
+ // Fixes packaging error caused by: jetified-junit-*
+ "META-INF/LICENSE.md",
+ "META-INF/LICENSE-notice.md"
+ )
+ }
+ }
}
configure<org.owasp.dependencycheck.gradle.extension.DependencyCheckExtension> {
@@ -83,6 +97,10 @@ dependencies {
implementation(Dependencies.AndroidX.testRules)
implementation(Dependencies.AndroidX.testUiAutomator)
implementation(Dependencies.androidVolley)
+ implementation(Dependencies.junitAndroidTestExtensions)
+ implementation(Dependencies.junitApi)
+ implementation(Dependencies.junitAndroidTestCore)
+ implementation(Dependencies.junitAndroidTestRunner)
implementation(Dependencies.Kotlin.stdlib)
androidTestUtil(Dependencies.AndroidX.testOrchestrator)
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt
index 488162b08c..bbecb037f3 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/ConnectionTest.kt
@@ -1,20 +1,22 @@
package net.mullvad.mullvadvpn.test.e2e
import androidx.test.uiautomator.By
-import junit.framework.Assert.assertEquals
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
import net.mullvad.mullvadvpn.test.common.rule.ForgetAllVpnAppsInSettingsTestRule
import net.mullvad.mullvadvpn.test.e2e.misc.CleanupAccountTestRule
import net.mullvad.mullvadvpn.test.e2e.misc.ConnCheckState
import net.mullvad.mullvadvpn.test.e2e.misc.SimpleMullvadHttpClient
-import org.junit.Rule
-import org.junit.Test
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.RegisterExtension
class ConnectionTest : EndToEndTest() {
- @Rule @JvmField val cleanupAccountTestRule = CleanupAccountTestRule()
+ @RegisterExtension @JvmField val cleanupAccountTestRule = CleanupAccountTestRule()
- @Rule @JvmField val forgetAllVpnAppsInSettingsTestRule = ForgetAllVpnAppsInSettingsTestRule()
+ @RegisterExtension
+ @JvmField
+ val forgetAllVpnAppsInSettingsTestRule = ForgetAllVpnAppsInSettingsTestRule()
@Test
fun testConnectAndVerifyWithConnectionCheck() {
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt
index c9226993b8..2cf8ba712d 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/EndToEndTest.kt
@@ -4,35 +4,32 @@ import android.Manifest
import android.content.Context
import android.os.Build
import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.rule.GrantPermissionRule
-import androidx.test.runner.AndroidJUnit4
import androidx.test.uiautomator.UiDevice
+import de.mannodermaus.junit5.extensions.GrantPermissionExtension
import net.mullvad.mullvadvpn.test.common.interactor.AppInteractor
import net.mullvad.mullvadvpn.test.common.rule.CaptureScreenshotOnFailedTestRule
import net.mullvad.mullvadvpn.test.e2e.constant.INVALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.constant.LOG_TAG
import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument
-import org.junit.Before
-import org.junit.Rule
-import org.junit.runner.RunWith
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.extension.RegisterExtension
-@RunWith(AndroidJUnit4::class)
abstract class EndToEndTest {
- @Rule @JvmField val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG)
+ @RegisterExtension @JvmField val rule = CaptureScreenshotOnFailedTestRule(LOG_TAG)
- @Rule
@JvmField
- val permissionRule: GrantPermissionRule? =
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
- GrantPermissionRule.grant(
+ @RegisterExtension
+ val extension =
+ (if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
+ GrantPermissionExtension.grant(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
)
} else {
- null
- }
+ GrantPermissionExtension.grant()
+ })
lateinit var device: UiDevice
lateinit var targetContext: Context
@@ -40,7 +37,7 @@ abstract class EndToEndTest {
lateinit var validTestAccountToken: String
lateinit var invalidTestAccountToken: String
- @Before
+ @BeforeEach
fun setup() {
device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
targetContext = InstrumentationRegistry.getInstrumentation().targetContext
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt
index 64f534990c..f68df92854 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LaunchAppTest.kt
@@ -1,10 +1,7 @@
package net.mullvad.mullvadvpn.test.e2e
-import androidx.test.runner.AndroidJUnit4
-import org.junit.Test
-import org.junit.runner.RunWith
+import org.junit.jupiter.api.Test
-@RunWith(AndroidJUnit4::class)
class LaunchAppTest : EndToEndTest() {
@Test
fun testLaunchApp() {
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 ab3ef54fb1..792c63f1a1 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
@@ -1,20 +1,17 @@
package net.mullvad.mullvadvpn.test.e2e
-import androidx.test.runner.AndroidJUnit4
import androidx.test.uiautomator.By
import net.mullvad.mullvadvpn.test.common.constant.LOGIN_FAILURE_TIMEOUT
import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
import net.mullvad.mullvadvpn.test.e2e.misc.CleanupAccountTestRule
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.extension.RegisterExtension
-@RunWith(AndroidJUnit4::class)
class LoginTest : EndToEndTest() {
- @Rule @JvmField val cleanupAccountTestRule = CleanupAccountTestRule()
+ @RegisterExtension @JvmField val cleanupAccountTestRule = CleanupAccountTestRule()
@Test
fun testLoginWithInvalidCredentials() {
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 ac3997c372..5e72305efe 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
@@ -5,7 +5,7 @@ import net.mullvad.mullvadvpn.test.common.constant.WEB_TIMEOUT
import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
-import org.junit.Test
+import org.junit.jupiter.api.Test
class WebLinkTest : EndToEndTest() {
@Test
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
index 2e19cb42fe..ba42862397 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
@@ -6,12 +6,13 @@ import net.mullvad.mullvadvpn.test.e2e.constant.LOG_TAG
import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument
import net.mullvad.mullvadvpn.test.e2e.interactor.MullvadAccountInteractor
-import org.junit.rules.TestWatcher
-import org.junit.runner.Description
+import org.junit.jupiter.api.extension.BeforeEachCallback
+import org.junit.jupiter.api.extension.ExtensionContext
-class CleanupAccountTestRule : TestWatcher() {
- override fun starting(description: Description) {
- Log.d(LOG_TAG, "Cleaning up account before test: ${description.methodName}")
+class CleanupAccountTestRule : BeforeEachCallback {
+
+ override fun beforeEach(context: ExtensionContext) {
+ Log.d(LOG_TAG, "Cleaning up account before test: ${context.requiredTestMethod.name}")
val targetContext = InstrumentationRegistry.getInstrumentation().targetContext
val validTestAccountToken =
InstrumentationRegistry.getArguments()