Testing & QA Debt
Coverage reality vs the targets in Testing & QA. Back to register.
Coverage reality vs targets (TD-02)
The testing doc states targets of Prediction 90%+, Finance 80%+, all modules 70%+. Measured test-file counts in the active codebase (2026-06-03) tell a different story:
| Module | Test .kt files | Source .kt files | Notes |
|---|---|---|---|
server | 53 | 468 | Only meaningfully tested layer (routes, DB, services) |
shared | 4 | 491 | Near-zero — most prediction/finance/business logic lives here now |
core | 2 | 31 | Minimal |
composeApp | 0 | 287 | No UI/integration tests |
androidApp | 0 | 2 | Thin host; little to test |
The headline coverage targets are aspirational, not met on the client side. Because feature logic was consolidated into shared/, the 4-file shared test suite is the most important gap.
Test infrastructure rebuild (TD-02)
- The
test-coremodule (Hilt-based test activity,TestTasksDataModule) was removed with the rest of the old Android stack. Any tests that depended on it must be re-authored against koin-test. - No Compose Multiplatform UI tests;
compose-ui-testis declared (1.7.8) but unused at the app level.
E2E / integration (from the testing doc)
- E2E: “limited coverage” — only ad-hoc manual testing of critical workflows.
- Client integration: essentially none; integration tests exist server-side (Ktor Test Host + Exposed, Postgres
localhost:5431/testdb).
Target state
- Restore a
shared/commonTestsuite covering prediction engine, finance calculations, and the consolidated view models (priority order matches the old targets: prediction → finance → rest). - Re-establish a koin-test base to replace
test-core. - Add a thin layer of Compose UI / navigation tests for the shared screens exercised during migration step S6.
- Wire
jacocoTestReport/Kover into CI and track the actual numbers against the 70/80/90 targets (today they are unmeasured).