Skip to content

Commit 36a5b44

Browse files
committed
test: add android test lanes
1 parent 011c618 commit 36a5b44

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
@@ -50,6 +50,33 @@ val e2eBackendEnv = System.getenv("E2E_BACKEND") ?: "local"
5050
val e2eHomegateUrlEnv = System.getenv("E2E_HOMEGATE_URL") ?: "http://127.0.0.1:6288"
5151
val trezorBridgeEnv = System.getenv("TREZOR_BRIDGE")?.toBoolean()?.toString() ?: "false"
5252
val trezorBridgeUrlEnv = System.getenv("TREZOR_BRIDGE_URL") ?: "http://10.0.2.2:21325"
53+
val coreServiceIntegrationTestAnnotation = "to.bitkit.test.annotations.CoreServiceIntegrationTest"
54+
val composeUiTestAnnotation = "to.bitkit.test.annotations.ComposeUiTest"
55+
val deviceIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceIntegrationTest"
56+
val deviceStorageIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceStorageIntegrationTest"
57+
val deviceUiIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceUiIntegrationTest"
58+
val requestedTaskNames = gradle.startParameter.taskNames.map { it.substringAfterLast(":") }
59+
val bitkitAndroidTestSuite = providers.gradleProperty("bitkitAndroidTestSuite").orNull
60+
val bitkitAndroidTestAnnotation = when {
61+
requestedTaskNames.any { it == "connectedDevDebugComposeAndroidTest" } -> composeUiTestAnnotation
62+
requestedTaskNames.any { it == "connectedDevDebugCoreServiceIntegrationAndroidTest" } -> {
63+
coreServiceIntegrationTestAnnotation
64+
}
65+
requestedTaskNames.any { it == "connectedDevDebugDeviceStorageIntegrationAndroidTest" } -> {
66+
deviceStorageIntegrationTestAnnotation
67+
}
68+
requestedTaskNames.any { it == "connectedDevDebugDeviceUiIntegrationAndroidTest" } -> {
69+
deviceUiIntegrationTestAnnotation
70+
}
71+
requestedTaskNames.any { it == "connectedDevDebugDeviceIntegrationAndroidTest" } -> deviceIntegrationTestAnnotation
72+
bitkitAndroidTestSuite == "compose" -> composeUiTestAnnotation
73+
bitkitAndroidTestSuite == "core-service" -> coreServiceIntegrationTestAnnotation
74+
bitkitAndroidTestSuite == "device-storage" -> deviceStorageIntegrationTestAnnotation
75+
bitkitAndroidTestSuite == "device-ui" -> deviceUiIntegrationTestAnnotation
76+
bitkitAndroidTestSuite == "integration" -> deviceIntegrationTestAnnotation
77+
bitkitAndroidTestSuite == null -> null
78+
else -> error("Unsupported bitkitAndroidTestSuite '$bitkitAndroidTestSuite'")
79+
}
5380

5481
android {
5582
namespace = "to.bitkit"
@@ -61,6 +88,9 @@ android {
6188
versionCode = 181
6289
versionName = "2.2.0"
6390
testInstrumentationRunner = "to.bitkit.test.HiltTestRunner"
91+
bitkitAndroidTestAnnotation?.let {
92+
testInstrumentationRunnerArguments["annotation"] = it
93+
}
6494
vectorDrawables {
6595
useSupportLibrary = true
6696
}
@@ -367,4 +397,34 @@ tasks.withType<Test>().configureEach {
367397
jvmArgs("-XX:+EnableDynamicAgentLoading")
368398
}
369399

400+
tasks.register("connectedDevDebugComposeAndroidTest") {
401+
group = "verification"
402+
description = "Runs devDebug Android tests annotated as Compose UI tests."
403+
dependsOn("connectedDevDebugAndroidTest")
404+
}
405+
406+
tasks.register("connectedDevDebugDeviceIntegrationAndroidTest") {
407+
group = "verification"
408+
description = "Runs devDebug Android tests annotated as device integration tests."
409+
dependsOn("connectedDevDebugAndroidTest")
410+
}
411+
412+
tasks.register("connectedDevDebugCoreServiceIntegrationAndroidTest") {
413+
group = "verification"
414+
description = "Runs devDebug Android tests annotated as core service integration tests."
415+
dependsOn("connectedDevDebugAndroidTest")
416+
}
417+
418+
tasks.register("connectedDevDebugDeviceStorageIntegrationAndroidTest") {
419+
group = "verification"
420+
description = "Runs devDebug Android tests annotated as device storage integration tests."
421+
dependsOn("connectedDevDebugAndroidTest")
422+
}
423+
424+
tasks.register("connectedDevDebugDeviceUiIntegrationAndroidTest") {
425+
group = "verification"
426+
description = "Runs devDebug Android tests annotated as device UI integration tests."
427+
dependsOn("connectedDevDebugAndroidTest")
428+
}
429+
370430
// 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)