Skip to content

Commit 70aa979

Browse files
committed
test: add android test lanes
1 parent 635084f commit 70aa979

27 files changed

Lines changed: 139 additions & 0 deletions

app/build.gradle.kts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,33 @@ val bcp47Locales = listOf(
4848
)
4949
val e2eBackendEnv = System.getenv("E2E_BACKEND") ?: "local"
5050
val e2eHomegateUrlEnv = System.getenv("E2E_HOMEGATE_URL") ?: "http://127.0.0.1:6288"
51+
val coreServiceIntegrationTestAnnotation = "to.bitkit.test.annotations.CoreServiceIntegrationTest"
52+
val composeUiTestAnnotation = "to.bitkit.test.annotations.ComposeUiTest"
53+
val deviceIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceIntegrationTest"
54+
val deviceStorageIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceStorageIntegrationTest"
55+
val deviceUiIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceUiIntegrationTest"
56+
val requestedTaskNames = gradle.startParameter.taskNames.map { it.substringAfterLast(":") }
57+
val bitkitAndroidTestSuite = providers.gradleProperty("bitkitAndroidTestSuite").orNull
58+
val bitkitAndroidTestAnnotation = when {
59+
requestedTaskNames.any { it == "connectedDevDebugComposeAndroidTest" } -> composeUiTestAnnotation
60+
requestedTaskNames.any { it == "connectedDevDebugCoreServiceIntegrationAndroidTest" } -> {
61+
coreServiceIntegrationTestAnnotation
62+
}
63+
requestedTaskNames.any { it == "connectedDevDebugDeviceStorageIntegrationAndroidTest" } -> {
64+
deviceStorageIntegrationTestAnnotation
65+
}
66+
requestedTaskNames.any { it == "connectedDevDebugDeviceUiIntegrationAndroidTest" } -> {
67+
deviceUiIntegrationTestAnnotation
68+
}
69+
requestedTaskNames.any { it == "connectedDevDebugDeviceIntegrationAndroidTest" } -> deviceIntegrationTestAnnotation
70+
bitkitAndroidTestSuite == "compose" -> composeUiTestAnnotation
71+
bitkitAndroidTestSuite == "core-service" -> coreServiceIntegrationTestAnnotation
72+
bitkitAndroidTestSuite == "device-storage" -> deviceStorageIntegrationTestAnnotation
73+
bitkitAndroidTestSuite == "device-ui" -> deviceUiIntegrationTestAnnotation
74+
bitkitAndroidTestSuite == "integration" -> deviceIntegrationTestAnnotation
75+
bitkitAndroidTestSuite == null -> null
76+
else -> error("Unsupported bitkitAndroidTestSuite '$bitkitAndroidTestSuite'")
77+
}
5178

5279
android {
5380
namespace = "to.bitkit"
@@ -59,6 +86,9 @@ android {
5986
versionCode = 181
6087
versionName = "2.2.0"
6188
testInstrumentationRunner = "to.bitkit.test.HiltTestRunner"
89+
bitkitAndroidTestAnnotation?.let {
90+
testInstrumentationRunnerArguments["annotation"] = it
91+
}
6292
vectorDrawables {
6393
useSupportLibrary = true
6494
}
@@ -363,4 +393,34 @@ tasks.withType<Test>().configureEach {
363393
jvmArgs("-XX:+EnableDynamicAgentLoading")
364394
}
365395

396+
tasks.register("connectedDevDebugComposeAndroidTest") {
397+
group = "verification"
398+
description = "Runs devDebug Android tests annotated as Compose UI tests."
399+
dependsOn("connectedDevDebugAndroidTest")
400+
}
401+
402+
tasks.register("connectedDevDebugDeviceIntegrationAndroidTest") {
403+
group = "verification"
404+
description = "Runs devDebug Android tests annotated as device integration tests."
405+
dependsOn("connectedDevDebugAndroidTest")
406+
}
407+
408+
tasks.register("connectedDevDebugCoreServiceIntegrationAndroidTest") {
409+
group = "verification"
410+
description = "Runs devDebug Android tests annotated as core service integration tests."
411+
dependsOn("connectedDevDebugAndroidTest")
412+
}
413+
414+
tasks.register("connectedDevDebugDeviceStorageIntegrationAndroidTest") {
415+
group = "verification"
416+
description = "Runs devDebug Android tests annotated as device storage integration tests."
417+
dependsOn("connectedDevDebugAndroidTest")
418+
}
419+
420+
tasks.register("connectedDevDebugDeviceUiIntegrationAndroidTest") {
421+
group = "verification"
422+
description = "Runs devDebug Android tests annotated as device UI integration tests."
423+
dependsOn("connectedDevDebugAndroidTest")
424+
}
425+
366426
// endregion

app/src/androidTest/java/to/bitkit/data/keychain/KeychainTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,16 @@ import org.junit.runner.RunWith
1414
import to.bitkit.data.AppDb
1515
import to.bitkit.data.entities.ConfigEntity
1616
import to.bitkit.test.BaseAndroidTest
17+
import to.bitkit.test.annotations.DeviceIntegrationTest
18+
import to.bitkit.test.annotations.DeviceStorageIntegrationTest
1719
import kotlin.test.assertEquals
1820
import kotlin.test.assertFailsWith
1921
import kotlin.test.assertNull
2022
import kotlin.test.assertTrue
2123

2224
@RunWith(AndroidJUnit4::class)
25+
@DeviceIntegrationTest
26+
@DeviceStorageIntegrationTest
2327
class KeychainTest : BaseAndroidTest() {
2428

2529
private val appContext by lazy { ApplicationProvider.getApplicationContext<Context>() }

app/src/androidTest/java/to/bitkit/services/BlocktankTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@ import org.junit.Before
1515
import org.junit.Rule
1616
import org.junit.Test
1717
import to.bitkit.env.Env
18+
import to.bitkit.test.annotations.CoreServiceIntegrationTest
19+
import to.bitkit.test.annotations.DeviceIntegrationTest
1820
import javax.inject.Inject
1921
import kotlin.test.assertEquals
2022
import kotlin.test.assertNotEquals
2123
import kotlin.test.assertNotNull
2224
import kotlin.test.assertTrue
2325

2426
@HiltAndroidTest
27+
@DeviceIntegrationTest
28+
@CoreServiceIntegrationTest
2529
class BlocktankTest {
2630
@get:Rule
2731
var hiltRule = HiltAndroidRule(this)

app/src/androidTest/java/to/bitkit/services/OnchainServiceTests.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ import org.junit.Test
88
import org.junit.runner.RunWith
99
import org.lightningdevkit.ldknode.Network
1010
import to.bitkit.models.toDerivationPath
11+
import to.bitkit.test.annotations.CoreServiceIntegrationTest
12+
import to.bitkit.test.annotations.DeviceIntegrationTest
1113
import kotlin.test.assertEquals
1214
import kotlin.test.assertNotNull
1315
import kotlin.test.assertTrue
1416

1517
@RunWith(AndroidJUnit4::class)
18+
@DeviceIntegrationTest
19+
@CoreServiceIntegrationTest
1620
class OnchainServiceTests {
1721
private lateinit var onchainService: OnchainService
1822

app/src/androidTest/java/to/bitkit/services/RoutingFeeEstimationTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import to.bitkit.data.CacheStore
1818
import to.bitkit.data.keychain.Keychain
1919
import to.bitkit.env.Env
2020
import to.bitkit.repositories.WalletRepo
21+
import to.bitkit.test.annotations.CoreServiceIntegrationTest
22+
import to.bitkit.test.annotations.DeviceIntegrationTest
2123
import to.bitkit.utils.LdkError
2224
import javax.inject.Inject
2325
import kotlin.test.assertEquals
@@ -27,6 +29,8 @@ import kotlin.test.assertTrue
2729

2830
@HiltAndroidTest
2931
@RunWith(AndroidJUnit4::class)
32+
@DeviceIntegrationTest
33+
@CoreServiceIntegrationTest
3034
class RoutingFeeEstimationTest {
3135

3236
companion object {

app/src/androidTest/java/to/bitkit/services/TxBumpingTests.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import org.junit.runner.RunWith
1515
import to.bitkit.data.keychain.Keychain
1616
import to.bitkit.env.Env
1717
import to.bitkit.repositories.WalletRepo
18+
import to.bitkit.test.annotations.CoreServiceIntegrationTest
19+
import to.bitkit.test.annotations.DeviceIntegrationTest
1820
import javax.inject.Inject
1921
import kotlin.test.assertEquals
2022
import kotlin.test.assertFalse
@@ -23,6 +25,8 @@ import kotlin.test.assertTrue
2325

2426
@HiltAndroidTest
2527
@RunWith(AndroidJUnit4::class)
28+
@DeviceIntegrationTest
29+
@CoreServiceIntegrationTest
2630
class TxBumpingTests {
2731

2832
@get:Rule

app/src/androidTest/java/to/bitkit/services/UtxoSelectionTests.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import org.lightningdevkit.ldknode.CoinSelectionAlgorithm
1616
import to.bitkit.data.keychain.Keychain
1717
import to.bitkit.env.Env
1818
import to.bitkit.repositories.WalletRepo
19+
import to.bitkit.test.annotations.CoreServiceIntegrationTest
20+
import to.bitkit.test.annotations.DeviceIntegrationTest
1921
import javax.inject.Inject
2022
import kotlin.test.assertEquals
2123
import kotlin.test.assertFalse
@@ -25,6 +27,8 @@ import kotlin.test.fail
2527

2628
@HiltAndroidTest
2729
@RunWith(AndroidJUnit4::class)
30+
@DeviceIntegrationTest
31+
@CoreServiceIntegrationTest
2832
class UtxoSelectionTests {
2933

3034
@get:Rule
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package to.bitkit.test.annotations
2+
3+
@Retention(AnnotationRetention.RUNTIME)
4+
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
5+
annotation class ComposeUiTest
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package to.bitkit.test.annotations
2+
3+
@Retention(AnnotationRetention.RUNTIME)
4+
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
5+
annotation class CoreServiceIntegrationTest
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package to.bitkit.test.annotations
2+
3+
@Retention(AnnotationRetention.RUNTIME)
4+
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
5+
annotation class DeviceIntegrationTest

0 commit comments

Comments
 (0)