Follow-up from #27 / PR #58.
That PR added an instrumented smoke test (AppSmokeTest) under
ft8cn/app/src/androidTest/ that launches ComposeMainActivity via
ActivityScenario. It runs locally with:
cd ft8cn && cmd.exe /c "gradlew.bat connectedDebugAndroidTest"
…but the GitHub-hosted Ubuntu runner in .github/workflows/build-release.yml
has no emulator wired up, so connectedAndroidTest is not exercised in CI.
What to do
- Add an Android emulator to the CI workflow (e.g. via
reactivecircus/android-emulator-runner). Pick a reasonable API level
(likely 30+ to match Compose UI test requirements).
- Add a
Run instrumented tests step that calls
./gradlew connectedDebugAndroidTest.
- Upload
app/build/reports/androidTests/ on failure, mirroring the
unit-test artifact upload.
- Decide whether the step is required for merge (branch protection
currently requires build); start as non-required while it stabilises.
Why this matters
AppSmokeTest is currently dead weight in CI — it can only catch
regressions if a developer runs it locally before pushing. Wiring it up
also unblocks JNI/native testing (see the LDPC encoder follow-up).
Follow-up from #27 / PR #58.
That PR added an instrumented smoke test (
AppSmokeTest) underft8cn/app/src/androidTest/that launchesComposeMainActivityviaActivityScenario. It runs locally with:…but the GitHub-hosted Ubuntu runner in
.github/workflows/build-release.ymlhas no emulator wired up, so
connectedAndroidTestis not exercised in CI.What to do
reactivecircus/android-emulator-runner). Pick a reasonable API level(likely 30+ to match Compose UI test requirements).
Run instrumented testsstep that calls./gradlew connectedDebugAndroidTest.app/build/reports/androidTests/on failure, mirroring theunit-test artifact upload.
currently requires
build); start as non-required while it stabilises.Why this matters
AppSmokeTestis currently dead weight in CI — it can only catchregressions if a developer runs it locally before pushing. Wiring it up
also unblocks JNI/native testing (see the LDPC encoder follow-up).