diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml index e7b46a9044..763e7d0105 100644 --- a/.github/workflows/claude-code-review.yml +++ b/.github/workflows/claude-code-review.yml @@ -1,17 +1,15 @@ name: Claude Code Review on: - pull_request: - types: [opened, synchronize, ready_for_review, reopened] - # Optional: Only run on specific file changes - # paths: - # - "src/**/*.ts" - # - "src/**/*.tsx" - # - "src/**/*.js" - # - "src/**/*.jsx" + workflow_dispatch: + inputs: + pr_number: + description: "Pull request number to review" + required: true + type: number concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + group: ${{ github.workflow }}-${{ inputs.pr_number }} cancel-in-progress: true jobs: @@ -40,7 +38,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | REPO="${{ github.repository }}" - PR_NUMBER="${{ github.event.pull_request.number }}" + PR_NUMBER="${{ inputs.pr_number }}" # Minimize issue comments from claude[bot] gh api "repos/$REPO/issues/$PR_NUMBER/comments" --jq '.[] | select(.user.login == "claude[bot]") | .node_id' | while read -r node_id; do @@ -62,6 +60,6 @@ jobs: claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} plugin_marketplaces: 'https://github.com/anthropics/claude-code.git' plugins: 'code-review@claude-code-plugins' - prompt: '/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}' + prompt: '/code-review:code-review --comment ${{ github.repository }}/pull/${{ inputs.pr_number }}' claude_args: | --allowedTools "Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh api:*),Bash(git log:*),Bash(git diff:*),Bash(git blame:*),Read,Glob,Grep" diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 76cb06e684..3a95b7a7d3 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -1,26 +1,15 @@ name: Claude Code on: - issue_comment: - types: [created] - pull_request_review_comment: - types: [created] - issues: - types: [opened, assigned] - pull_request_review: - types: [submitted] + workflow_dispatch: + inputs: + prompt: + description: "Prompt for Claude Code" + required: true + type: string jobs: claude: - if: | - (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude') && - contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)) || - (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude') && - contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)) || - (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude') && - contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.review.author_association)) || - (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')) && - contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.issue.author_association)) runs-on: ubuntu-latest permissions: contents: write # Allow creating branches/commits @@ -44,8 +33,7 @@ jobs: additional_permissions: | actions: read - # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. - # prompt: 'Update the pull request description to include a summary of changes.' + prompt: ${{ inputs.prompt }} # Optional: Add claude_args to customize behavior and configuration # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index c2f5272c6d..f1162229f9 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -5,6 +5,12 @@ on: branches: [ "master" ] workflow_dispatch: + inputs: + suites: + description: "Android test suites: all or comma-separated annotations/suites" + required: false + default: "all" + type: string concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -81,6 +87,8 @@ jobs: - name: Run UI tests on Android Emulator uses: reactivecircus/android-emulator-runner@v2 + env: + ANDROID_TEST_SUITES: ${{ github.event.inputs.suites || 'all' }} with: api-level: 30 arch: x86_64 @@ -101,7 +109,41 @@ jobs: # Install and run tests ./gradlew installDevDebug - ./gradlew connectedDevDebugAndroidTest + + suites="${ANDROID_TEST_SUITES:-all}" + suites="$(echo "$suites" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')" + + if [[ -z "$suites" || "$suites" == "all" ]]; then + ./gradlew connectedDevDebugAndroidTest + exit 0 + fi + + IFS=',' read -ra requested_suites <<< "$suites" + for suite in "${requested_suites[@]}"; do + case "$suite" in + compose|compose-ui|composeuitest|to.bitkit.test.annotations.composeuitest) + task="connectedDevDebugComposeAndroidTest" + ;; + device|device-integration|deviceintegrationtest|to.bitkit.test.annotations.deviceintegrationtest) + task="connectedDevDebugDeviceIntegrationAndroidTest" + ;; + core|core-service|coreserviceintegrationtest|to.bitkit.test.annotations.coreserviceintegrationtest) + task="connectedDevDebugCoreServiceIntegrationAndroidTest" + ;; + storage|device-storage|devicestorageintegrationtest|to.bitkit.test.annotations.devicestorageintegrationtest) + task="connectedDevDebugDeviceStorageIntegrationAndroidTest" + ;; + ui|device-ui|deviceuiintegrationtest|to.bitkit.test.annotations.deviceuiintegrationtest) + task="connectedDevDebugDeviceUiIntegrationAndroidTest" + ;; + *) + echo "::error::Unknown Android test suite '$suite'. Use all, compose, device-integration, core-service, device-storage, or device-ui." + exit 1 + ;; + esac + + ./gradlew "$task" + done - name: Upload UI test report if: always() diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 91a377e23c..3689336001 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -48,6 +48,33 @@ val bcp47Locales = listOf( ) val e2eBackendEnv = System.getenv("E2E_BACKEND") ?: "local" val e2eHomegateUrlEnv = System.getenv("E2E_HOMEGATE_URL") ?: "http://127.0.0.1:6288" +val coreServiceIntegrationTestAnnotation = "to.bitkit.test.annotations.CoreServiceIntegrationTest" +val composeUiTestAnnotation = "to.bitkit.test.annotations.ComposeUiTest" +val deviceIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceIntegrationTest" +val deviceStorageIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceStorageIntegrationTest" +val deviceUiIntegrationTestAnnotation = "to.bitkit.test.annotations.DeviceUiIntegrationTest" +val requestedTaskNames = gradle.startParameter.taskNames.map { it.substringAfterLast(":") } +val bitkitAndroidTestSuite = providers.gradleProperty("bitkitAndroidTestSuite").orNull +val bitkitAndroidTestAnnotation = when { + requestedTaskNames.any { it == "connectedDevDebugComposeAndroidTest" } -> composeUiTestAnnotation + requestedTaskNames.any { it == "connectedDevDebugCoreServiceIntegrationAndroidTest" } -> { + coreServiceIntegrationTestAnnotation + } + requestedTaskNames.any { it == "connectedDevDebugDeviceStorageIntegrationAndroidTest" } -> { + deviceStorageIntegrationTestAnnotation + } + requestedTaskNames.any { it == "connectedDevDebugDeviceUiIntegrationAndroidTest" } -> { + deviceUiIntegrationTestAnnotation + } + requestedTaskNames.any { it == "connectedDevDebugDeviceIntegrationAndroidTest" } -> deviceIntegrationTestAnnotation + bitkitAndroidTestSuite == "compose" -> composeUiTestAnnotation + bitkitAndroidTestSuite == "core-service" -> coreServiceIntegrationTestAnnotation + bitkitAndroidTestSuite == "device-storage" -> deviceStorageIntegrationTestAnnotation + bitkitAndroidTestSuite == "device-ui" -> deviceUiIntegrationTestAnnotation + bitkitAndroidTestSuite == "integration" -> deviceIntegrationTestAnnotation + bitkitAndroidTestSuite == null -> null + else -> error("Unsupported bitkitAndroidTestSuite '$bitkitAndroidTestSuite'") +} android { namespace = "to.bitkit" @@ -59,6 +86,9 @@ android { versionCode = 181 versionName = "2.2.0" testInstrumentationRunner = "to.bitkit.test.HiltTestRunner" + bitkitAndroidTestAnnotation?.let { + testInstrumentationRunnerArguments["annotation"] = it + } vectorDrawables { useSupportLibrary = true } @@ -363,4 +393,34 @@ tasks.withType().configureEach { jvmArgs("-XX:+EnableDynamicAgentLoading") } +tasks.register("connectedDevDebugComposeAndroidTest") { + group = "verification" + description = "Runs devDebug Android tests annotated as Compose UI tests." + dependsOn("connectedDevDebugAndroidTest") +} + +tasks.register("connectedDevDebugDeviceIntegrationAndroidTest") { + group = "verification" + description = "Runs devDebug Android tests annotated as device integration tests." + dependsOn("connectedDevDebugAndroidTest") +} + +tasks.register("connectedDevDebugCoreServiceIntegrationAndroidTest") { + group = "verification" + description = "Runs devDebug Android tests annotated as core service integration tests." + dependsOn("connectedDevDebugAndroidTest") +} + +tasks.register("connectedDevDebugDeviceStorageIntegrationAndroidTest") { + group = "verification" + description = "Runs devDebug Android tests annotated as device storage integration tests." + dependsOn("connectedDevDebugAndroidTest") +} + +tasks.register("connectedDevDebugDeviceUiIntegrationAndroidTest") { + group = "verification" + description = "Runs devDebug Android tests annotated as device UI integration tests." + dependsOn("connectedDevDebugAndroidTest") +} + // endregion diff --git a/app/src/androidTest/java/to/bitkit/data/keychain/KeychainTest.kt b/app/src/androidTest/java/to/bitkit/data/keychain/KeychainTest.kt index 206adabe52..0634954d39 100644 --- a/app/src/androidTest/java/to/bitkit/data/keychain/KeychainTest.kt +++ b/app/src/androidTest/java/to/bitkit/data/keychain/KeychainTest.kt @@ -14,12 +14,16 @@ import org.junit.runner.RunWith import to.bitkit.data.AppDb import to.bitkit.data.entities.ConfigEntity import to.bitkit.test.BaseAndroidTest +import to.bitkit.test.annotations.DeviceIntegrationTest +import to.bitkit.test.annotations.DeviceStorageIntegrationTest import kotlin.test.assertEquals import kotlin.test.assertFailsWith import kotlin.test.assertNull import kotlin.test.assertTrue @RunWith(AndroidJUnit4::class) +@DeviceIntegrationTest +@DeviceStorageIntegrationTest class KeychainTest : BaseAndroidTest() { private val appContext by lazy { ApplicationProvider.getApplicationContext() } diff --git a/app/src/androidTest/java/to/bitkit/services/BlocktankTest.kt b/app/src/androidTest/java/to/bitkit/services/BlocktankTest.kt index dafbce5e2d..00bff76860 100644 --- a/app/src/androidTest/java/to/bitkit/services/BlocktankTest.kt +++ b/app/src/androidTest/java/to/bitkit/services/BlocktankTest.kt @@ -15,6 +15,8 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import to.bitkit.env.Env +import to.bitkit.test.annotations.CoreServiceIntegrationTest +import to.bitkit.test.annotations.DeviceIntegrationTest import javax.inject.Inject import kotlin.test.assertEquals import kotlin.test.assertNotEquals @@ -22,6 +24,8 @@ import kotlin.test.assertNotNull import kotlin.test.assertTrue @HiltAndroidTest +@DeviceIntegrationTest +@CoreServiceIntegrationTest class BlocktankTest { @get:Rule var hiltRule = HiltAndroidRule(this) diff --git a/app/src/androidTest/java/to/bitkit/services/OnchainServiceTests.kt b/app/src/androidTest/java/to/bitkit/services/OnchainServiceTests.kt index 706f868725..dd0e891df9 100644 --- a/app/src/androidTest/java/to/bitkit/services/OnchainServiceTests.kt +++ b/app/src/androidTest/java/to/bitkit/services/OnchainServiceTests.kt @@ -8,11 +8,15 @@ import org.junit.Test import org.junit.runner.RunWith import org.lightningdevkit.ldknode.Network import to.bitkit.models.toDerivationPath +import to.bitkit.test.annotations.CoreServiceIntegrationTest +import to.bitkit.test.annotations.DeviceIntegrationTest import kotlin.test.assertEquals import kotlin.test.assertNotNull import kotlin.test.assertTrue @RunWith(AndroidJUnit4::class) +@DeviceIntegrationTest +@CoreServiceIntegrationTest class OnchainServiceTests { private lateinit var onchainService: OnchainService diff --git a/app/src/androidTest/java/to/bitkit/services/RoutingFeeEstimationTest.kt b/app/src/androidTest/java/to/bitkit/services/RoutingFeeEstimationTest.kt index c707257347..fae997f559 100644 --- a/app/src/androidTest/java/to/bitkit/services/RoutingFeeEstimationTest.kt +++ b/app/src/androidTest/java/to/bitkit/services/RoutingFeeEstimationTest.kt @@ -18,6 +18,8 @@ import to.bitkit.data.CacheStore import to.bitkit.data.keychain.Keychain import to.bitkit.env.Env import to.bitkit.repositories.WalletRepo +import to.bitkit.test.annotations.CoreServiceIntegrationTest +import to.bitkit.test.annotations.DeviceIntegrationTest import to.bitkit.utils.LdkError import javax.inject.Inject import kotlin.test.assertEquals @@ -27,6 +29,8 @@ import kotlin.test.assertTrue @HiltAndroidTest @RunWith(AndroidJUnit4::class) +@DeviceIntegrationTest +@CoreServiceIntegrationTest class RoutingFeeEstimationTest { companion object { diff --git a/app/src/androidTest/java/to/bitkit/services/TxBumpingTests.kt b/app/src/androidTest/java/to/bitkit/services/TxBumpingTests.kt index e46347f454..6206efd1e2 100644 --- a/app/src/androidTest/java/to/bitkit/services/TxBumpingTests.kt +++ b/app/src/androidTest/java/to/bitkit/services/TxBumpingTests.kt @@ -15,6 +15,8 @@ import org.junit.runner.RunWith import to.bitkit.data.keychain.Keychain import to.bitkit.env.Env import to.bitkit.repositories.WalletRepo +import to.bitkit.test.annotations.CoreServiceIntegrationTest +import to.bitkit.test.annotations.DeviceIntegrationTest import javax.inject.Inject import kotlin.test.assertEquals import kotlin.test.assertFalse @@ -23,6 +25,8 @@ import kotlin.test.assertTrue @HiltAndroidTest @RunWith(AndroidJUnit4::class) +@DeviceIntegrationTest +@CoreServiceIntegrationTest class TxBumpingTests { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/services/UtxoSelectionTests.kt b/app/src/androidTest/java/to/bitkit/services/UtxoSelectionTests.kt index e239093ce6..2b9d9cc0fc 100644 --- a/app/src/androidTest/java/to/bitkit/services/UtxoSelectionTests.kt +++ b/app/src/androidTest/java/to/bitkit/services/UtxoSelectionTests.kt @@ -16,6 +16,8 @@ import org.lightningdevkit.ldknode.CoinSelectionAlgorithm import to.bitkit.data.keychain.Keychain import to.bitkit.env.Env import to.bitkit.repositories.WalletRepo +import to.bitkit.test.annotations.CoreServiceIntegrationTest +import to.bitkit.test.annotations.DeviceIntegrationTest import javax.inject.Inject import kotlin.test.assertEquals import kotlin.test.assertFalse @@ -25,6 +27,8 @@ import kotlin.test.fail @HiltAndroidTest @RunWith(AndroidJUnit4::class) +@DeviceIntegrationTest +@CoreServiceIntegrationTest class UtxoSelectionTests { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/test/annotations/ComposeUiTest.kt b/app/src/androidTest/java/to/bitkit/test/annotations/ComposeUiTest.kt new file mode 100644 index 0000000000..0b7581810e --- /dev/null +++ b/app/src/androidTest/java/to/bitkit/test/annotations/ComposeUiTest.kt @@ -0,0 +1,5 @@ +package to.bitkit.test.annotations + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +annotation class ComposeUiTest diff --git a/app/src/androidTest/java/to/bitkit/test/annotations/CoreServiceIntegrationTest.kt b/app/src/androidTest/java/to/bitkit/test/annotations/CoreServiceIntegrationTest.kt new file mode 100644 index 0000000000..f36be5a1cc --- /dev/null +++ b/app/src/androidTest/java/to/bitkit/test/annotations/CoreServiceIntegrationTest.kt @@ -0,0 +1,5 @@ +package to.bitkit.test.annotations + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +annotation class CoreServiceIntegrationTest diff --git a/app/src/androidTest/java/to/bitkit/test/annotations/DeviceIntegrationTest.kt b/app/src/androidTest/java/to/bitkit/test/annotations/DeviceIntegrationTest.kt new file mode 100644 index 0000000000..d3fe905adf --- /dev/null +++ b/app/src/androidTest/java/to/bitkit/test/annotations/DeviceIntegrationTest.kt @@ -0,0 +1,5 @@ +package to.bitkit.test.annotations + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +annotation class DeviceIntegrationTest diff --git a/app/src/androidTest/java/to/bitkit/test/annotations/DeviceStorageIntegrationTest.kt b/app/src/androidTest/java/to/bitkit/test/annotations/DeviceStorageIntegrationTest.kt new file mode 100644 index 0000000000..2a99d5c581 --- /dev/null +++ b/app/src/androidTest/java/to/bitkit/test/annotations/DeviceStorageIntegrationTest.kt @@ -0,0 +1,5 @@ +package to.bitkit.test.annotations + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +annotation class DeviceStorageIntegrationTest diff --git a/app/src/androidTest/java/to/bitkit/test/annotations/DeviceUiIntegrationTest.kt b/app/src/androidTest/java/to/bitkit/test/annotations/DeviceUiIntegrationTest.kt new file mode 100644 index 0000000000..de2a9f00c7 --- /dev/null +++ b/app/src/androidTest/java/to/bitkit/test/annotations/DeviceUiIntegrationTest.kt @@ -0,0 +1,5 @@ +package to.bitkit.test.annotations + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +annotation class DeviceUiIntegrationTest diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/wallets/send/SendAmountContentTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/wallets/send/SendAmountContentTest.kt index b0f6392b9a..cfae877313 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/wallets/send/SendAmountContentTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/wallets/send/SendAmountContentTest.kt @@ -7,10 +7,12 @@ import androidx.compose.ui.test.performClick import org.junit.Rule import org.junit.Test import to.bitkit.models.NodeLifecycleState +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.viewmodels.SendMethod import to.bitkit.viewmodels.SendUiState import to.bitkit.viewmodels.previewAmountInputViewModel +@ComposeUiTest class SendAmountContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/blocks/BlockCardTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/blocks/BlockCardTest.kt index 323ddec06b..b6f2d5247f 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/blocks/BlockCardTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/blocks/BlockCardTest.kt @@ -5,8 +5,10 @@ import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class BlockCardTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsCardTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsCardTest.kt index 5b7cdafad5..4465a79db4 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsCardTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsCardTest.kt @@ -5,8 +5,10 @@ import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class FactsCardTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsPreviewScreenTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsPreviewScreenTest.kt index 2905c0d7c1..d222a1443c 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsPreviewScreenTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/facts/FactsPreviewScreenTest.kt @@ -5,8 +5,10 @@ import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.performClick import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class FactsPreviewContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlineCardTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlineCardTest.kt index 457eaa3419..7f6bf4e2c3 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlineCardTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlineCardTest.kt @@ -5,8 +5,10 @@ import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class HeadlineCardTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesEditContentTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesEditContentTest.kt index b3ff9239e0..5b537d1e29 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesEditContentTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesEditContentTest.kt @@ -9,8 +9,10 @@ import org.junit.Rule import org.junit.Test import to.bitkit.models.widget.ArticleModel import to.bitkit.models.widget.HeadlinePreferences +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class HeadlinesEditContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesPreviewContentTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesPreviewContentTest.kt index e7b6ec8e1a..8b2f83c4ff 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesPreviewContentTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/headlines/HeadlinesPreviewContentTest.kt @@ -7,8 +7,10 @@ import org.junit.Rule import org.junit.Test import to.bitkit.models.widget.ArticleModel import to.bitkit.models.widget.HeadlinePreferences +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class HeadlinesPreviewContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherCardTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherCardTest.kt index afdc713360..a6be686808 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherCardTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherCardTest.kt @@ -9,9 +9,11 @@ import to.bitkit.R import to.bitkit.data.dto.FeeCondition import to.bitkit.models.widget.WeatherDataOption import to.bitkit.models.widget.WeatherPreferences +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.screens.widgets.blocks.WeatherModel import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class WeatherCardTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherEditScreenTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherEditScreenTest.kt index 2854d79746..87ea27ea09 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherEditScreenTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherEditScreenTest.kt @@ -11,9 +11,11 @@ import to.bitkit.R import to.bitkit.data.dto.FeeCondition import to.bitkit.models.widget.WeatherDataOption import to.bitkit.models.widget.WeatherPreferences +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.screens.widgets.blocks.WeatherModel import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class WeatherEditScreenTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherPreviewScreenTest.kt b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherPreviewScreenTest.kt index 5804af8363..2d9f4832ff 100644 --- a/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherPreviewScreenTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/screens/widgets/weather/WeatherPreviewScreenTest.kt @@ -9,9 +9,11 @@ import to.bitkit.R import to.bitkit.data.dto.FeeCondition import to.bitkit.models.widget.WeatherDataOption import to.bitkit.models.widget.WeatherPreferences +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.screens.widgets.blocks.WeatherModel import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class WeatherPreviewContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/settings/backups/BackupIntroScreenTest.kt b/app/src/androidTest/java/to/bitkit/ui/settings/backups/BackupIntroScreenTest.kt index d3730264e0..7d5c6137bd 100644 --- a/app/src/androidTest/java/to/bitkit/ui/settings/backups/BackupIntroScreenTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/settings/backups/BackupIntroScreenTest.kt @@ -5,8 +5,10 @@ import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.performClick import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class BackupIntroScreenTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/settings/quickPay/QuickPaySettingsScreenTest.kt b/app/src/androidTest/java/to/bitkit/ui/settings/quickPay/QuickPaySettingsScreenTest.kt index 39fa168f28..28047ed00f 100644 --- a/app/src/androidTest/java/to/bitkit/ui/settings/quickPay/QuickPaySettingsScreenTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/settings/quickPay/QuickPaySettingsScreenTest.kt @@ -9,9 +9,11 @@ import dagger.hilt.android.testing.HiltAndroidTest import org.junit.Before import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface @HiltAndroidTest +@ComposeUiTest class QuickPaySettingsScreenTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/settings/support/ReportIssueScreenTest.kt b/app/src/androidTest/java/to/bitkit/ui/settings/support/ReportIssueScreenTest.kt index d7e9f2c2b7..a6ca7db6e5 100644 --- a/app/src/androidTest/java/to/bitkit/ui/settings/support/ReportIssueScreenTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/settings/support/ReportIssueScreenTest.kt @@ -8,8 +8,10 @@ import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performTextInput import org.junit.Rule import org.junit.Test +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.theme.AppThemeSurface +@ComposeUiTest class ReportIssueContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/sheets/BoostTransactionSheetTest.kt b/app/src/androidTest/java/to/bitkit/ui/sheets/BoostTransactionSheetTest.kt index 60da21a7d0..af4e931d4e 100644 --- a/app/src/androidTest/java/to/bitkit/ui/sheets/BoostTransactionSheetTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/sheets/BoostTransactionSheetTest.kt @@ -20,6 +20,7 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith +import to.bitkit.test.annotations.ComposeUiTest import to.bitkit.ui.sheets.BoostTransactionContent import to.bitkit.ui.sheets.BoostTransactionTestTags import to.bitkit.ui.sheets.BoostTransactionUiState @@ -28,6 +29,7 @@ import to.bitkit.ui.theme.AppThemeSurface @HiltAndroidTest @RunWith(AndroidJUnit4::class) +@ComposeUiTest class BoostTransactionContentTest { @get:Rule diff --git a/app/src/androidTest/java/to/bitkit/ui/sheets/NewTransactionSheetViewTest.kt b/app/src/androidTest/java/to/bitkit/ui/sheets/NewTransactionSheetViewTest.kt index 5a7769d36f..065a1b99b4 100644 --- a/app/src/androidTest/java/to/bitkit/ui/sheets/NewTransactionSheetViewTest.kt +++ b/app/src/androidTest/java/to/bitkit/ui/sheets/NewTransactionSheetViewTest.kt @@ -11,8 +11,10 @@ import org.junit.Test import to.bitkit.models.NewTransactionSheetDetails import to.bitkit.models.NewTransactionSheetDirection import to.bitkit.models.NewTransactionSheetType +import to.bitkit.test.annotations.ComposeUiTest @HiltAndroidTest +@ComposeUiTest class NewTransactionSheetViewTest { @get:Rule