Skip to content

Commit 422c06e

Browse files
Introduce HighlyRateLimited tag for tests
1 parent a543647 commit 422c06e

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

android/test/e2e/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ android {
4646
put("clearPackageData", "true")
4747
addOptionalPropertyAsArgument("valid_test_account_number")
4848
addOptionalPropertyAsArgument("invalid_test_account_number")
49+
addOptionalPropertyAsArgument("ignore_highly_rate_limited_tests")
4950
}
5051
}
5152

android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import net.mullvad.mullvadvpn.test.common.constant.LOGIN_FAILURE_TIMEOUT
55
import net.mullvad.mullvadvpn.test.common.extension.clickAgreeOnPrivacyDisclaimer
66
import net.mullvad.mullvadvpn.test.common.extension.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove
77
import net.mullvad.mullvadvpn.test.common.extension.findObjectWithTimeout
8+
import net.mullvad.mullvadvpn.test.e2e.annotations.HighlyRateLimited
89
import net.mullvad.mullvadvpn.test.e2e.misc.AccountTestRule
9-
import org.junit.jupiter.api.Disabled
1010
import org.junit.jupiter.api.Test
1111
import org.junit.jupiter.api.extension.RegisterExtension
1212

@@ -27,7 +27,7 @@ class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
2727
}
2828

2929
@Test
30-
@Disabled("Disabled to avoid getting rate-limited.")
30+
@HighlyRateLimited
3131
fun testLoginWithInvalidCredentials() {
3232
// Given
3333
val invalidDummyAccountNumber = accountTestRule.invalidAccountNumber
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package net.mullvad.mullvadvpn.test.e2e.annotations
2+
3+
import androidx.test.platform.app.InstrumentationRegistry
4+
import org.junit.jupiter.api.extension.ConditionEvaluationResult
5+
import org.junit.jupiter.api.extension.ExecutionCondition
6+
import org.junit.jupiter.api.extension.ExtendWith
7+
import org.junit.jupiter.api.extension.ExtensionContext
8+
import net.mullvad.mullvadvpn.test.e2e.constant.IGNORE_HIGHLY_RATE_LIMITED
9+
import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument
10+
11+
/**
12+
* Annotation for tests making use of API endpoints/requests that are highly rate limited such as failed login requests.
13+
*/
14+
@Retention(AnnotationRetention.RUNTIME)
15+
@ExtendWith(HighlyRateLimited.ShouldRunWhenSeverelyAffectedByRateLimiting::class)
16+
annotation class HighlyRateLimited {
17+
class ShouldRunWhenSeverelyAffectedByRateLimiting: ExecutionCondition {
18+
override fun evaluateExecutionCondition(context: ExtensionContext?): ConditionEvaluationResult {
19+
val ignoreHighlyRateLimited = InstrumentationRegistry.getArguments().getRequiredArgument(
20+
IGNORE_HIGHLY_RATE_LIMITED).toBoolean()
21+
22+
if (ignoreHighlyRateLimited) {
23+
return ConditionEvaluationResult.disabled("Skipping test because this run is configured to skip tests that are highly affected by rate limiting")
24+
} else {
25+
return ConditionEvaluationResult.enabled("Running test highly affected by rate limiting")
26+
}
27+
}
28+
}
29+
}

android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt

+1
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ const val LOG_TAG = "mullvad-e2e"
44
const val PARTNER_AUTH = "partner_auth"
55
const val VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "valid_test_account_number"
66
const val INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "invalid_test_account_number"
7+
const val IGNORE_HIGHLY_RATE_LIMITED = "ignore_highly_rate_limited_tests"

0 commit comments

Comments
 (0)