diff options
| author | Niklas Berglund <niklas.berglund@gmail.com> | 2024-08-13 14:51:14 +0200 |
|---|---|---|
| committer | Niklas Berglund <niklas.berglund@gmail.com> | 2024-08-19 11:53:56 +0200 |
| commit | 89ea752eb3fe3378fb7439a0f5287aad37cb0ea0 (patch) | |
| tree | b2cf699bae0972fb0ee87de7962ce345c2ad0cff /android/test/e2e | |
| parent | 58a811f70b0d9da7ad052ec98b25eff65ee4a1be (diff) | |
| download | mullvadvpn-89ea752eb3fe3378fb7439a0f5287aad37cb0ea0.tar.xz mullvadvpn-89ea752eb3fe3378fb7439a0f5287aad37cb0ea0.zip | |
Fix for failing mockapi and e2e tests
Diffstat (limited to 'android/test/e2e')
5 files changed, 49 insertions, 15 deletions
diff --git a/android/test/e2e/build.gradle.kts b/android/test/e2e/build.gradle.kts index 2e9d19b83c..fa59f81940 100644 --- a/android/test/e2e/build.gradle.kts +++ b/android/test/e2e/build.gradle.kts @@ -46,6 +46,7 @@ android { put("clearPackageData", "true") addOptionalPropertyAsArgument("valid_test_account_number") addOptionalPropertyAsArgument("invalid_test_account_number") + addOptionalPropertyAsArgument("enable_highly_rate_limited_tests") } } @@ -142,4 +143,12 @@ dependencies { implementation(libs.kotlin.stdlib) androidTestUtil(libs.androidx.test.orchestrator) + + // Needed or else the app crashes when launched + implementation(Dependencies.junit5AndroidTestCompose) + implementation(libs.compose.material3) + + // Need these for forcing later versions of dependencies + implementation(libs.compose.ui) + implementation(libs.androidx.activity.compose) } 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 2efb299246..bfcc1181dd 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 @@ -5,8 +5,8 @@ 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.annotations.HighlyRateLimited import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.RegisterExtension @@ -27,7 +27,7 @@ class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) { } @Test - @Disabled("Disabled to avoid getting rate-limited.") + @HighlyRateLimited fun testLoginWithInvalidCredentials() { // Given val invalidDummyAccountNumber = accountTestRule.invalidAccountNumber diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt index 4d77c2a33a..7a8c8818f4 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LogoutTest.kt @@ -23,17 +23,4 @@ class LogoutTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) { // Then assertNotNull(device.findObjectWithTimeout(By.text("Login"))) } - - @Test - fun testCreateAccountAndLogout() { - // Given - app.launchAndCreateAccount() - - // When - app.clickAccountCog() - app.clickActionButtonByText("Log out") - - // Then - assertNotNull(device.findObjectWithTimeout(By.text("Login"))) - } } diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt new file mode 100644 index 0000000000..a923e03b46 --- /dev/null +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/annotations/HighlyRateLimited.kt @@ -0,0 +1,37 @@ +package net.mullvad.mullvadvpn.test.e2e.annotations + +import androidx.test.platform.app.InstrumentationRegistry +import net.mullvad.mullvadvpn.test.e2e.constant.ENABLE_HIGHLY_RATE_LIMITED +import org.junit.jupiter.api.extension.ConditionEvaluationResult +import org.junit.jupiter.api.extension.ExecutionCondition +import org.junit.jupiter.api.extension.ExtendWith +import org.junit.jupiter.api.extension.ExtensionContext + +/** + * Annotation for tests making use of API endpoints/requests that are highly rate limited such as + * failed login requests. + */ +@Retention(AnnotationRetention.RUNTIME) +@ExtendWith(HighlyRateLimited.ShouldRunWhenSeverelyAffectedByRateLimiting::class) +annotation class HighlyRateLimited { + class ShouldRunWhenSeverelyAffectedByRateLimiting : ExecutionCondition { + override fun evaluateExecutionCondition( + context: ExtensionContext? + ): ConditionEvaluationResult { + val enableHighlyRateLimited = + InstrumentationRegistry.getArguments() + .getString(ENABLE_HIGHLY_RATE_LIMITED) + ?.toBoolean() ?: false + + if (enableHighlyRateLimited) { + return ConditionEvaluationResult.enabled( + "Running test highly affected by rate limiting." + ) + } else { + return ConditionEvaluationResult.disabled( + "Skipping test highly affected by rate limiting." + ) + } + } + } +} diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt index baf3dcae3d..6dbda8f57e 100644 --- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt +++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt @@ -4,3 +4,4 @@ const val LOG_TAG = "mullvad-e2e" const val PARTNER_AUTH = "partner_auth" const val VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "valid_test_account_number" const val INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "invalid_test_account_number" +const val ENABLE_HIGHLY_RATE_LIMITED = "enable_highly_rate_limited_tests" |
