Skip to content

CI: run instrumented tests on emulator; HomeScreen tests; accurate API.md - #2

Merged
HighviewOne merged 3 commits into
masterfrom
claude/optional-followups
Oct 4, 2026
Merged

HighviewOne merged 3 commits into
masterfrom
claude/optional-followups

Conversation

@HighviewOne

Copy link
Copy Markdown
Owner

What does this PR do?

Follow-ups from the v2.4 review:

  • Instrumented tests now run in CI. A new instrumented job runs connectedDebugAndroidTest on an API 34 emulator. Until now these tests had only ever been compiled.
  • New HomeScreenTest covers the device checks left over from the v2.4 smoke test: the Blueprint toggle, search (including by formula, plus the empty state), and locked cards announcing "Locked" and ignoring taps.
  • API.md rewritten from the actual code. The old version described classes and methods that don't exist.

Type of change

  • Bug fix
  • New topic / content addition
  • UI / animation enhancement
  • Refactor (no behavior change)
  • Build / tooling

Checklist

  • ./gradlew assembleDebug builds without errors (also assembleDebugAndroidTest)
  • ./gradlew detekt passes with no new violations
  • New topic follows *Content.kt format (n/a: no new topics)
  • No hardcoded colors (n/a: no production UI changes)
  • No new @Preview composables left in production files

🤖 Generated with Claude Code

HighviewOne and others added 3 commits October 4, 2026 13:29
- build.yml: new `instrumented` job runs connectedDebugAndroidTest on an
  API 34 x86_64 emulator (reactivecircus/android-emulator-runner, KVM
  enabled) and uploads the report. First time these tests run anywhere.
- HomeScreenTest: blueprint toggle, search by formula, empty search state,
  locked cards expose "Locked" and ignore taps (covers the manual checks
  left over from the v2.4 device smoke test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The old API.md described APIs that never existed (a Progress entity,
allTopics/userProgress/currentQuiz flows, clearError(), custom exception
types). Rewritten from the current sources: content model, QuizScoring
rules and constants, ProgressRepository (recordQuizResult returns XP),
Room schema/DAOs/DATABASE_NAME, Hilt module, ViewModel state and
behavior, Routes, screen and component signatures, theming rules.
Notes which components are legacy/unused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
First emulator run: the new HomeScreen/QuizScreen/ResultScreen tests
passed; 10 failures were all in inherited tests.

- ComponentsTest was placeholders (component calls commented out, tests
  asserting empty roots or local literals). Replaced with real tests:
  TopicCard locked/unlocked, XpBar level text, AnswerFeedback, multiple
  choice submit gating, numeric comma input, StatusChip, QuestNotFound.
- AppDatabaseIntegrationTest failed to instantiate: a `= runBlocking`
  test ended in kotlin.test.assertNotNull (returns a value), making the
  test method non-void. All runBlocking tests now declare `: Unit`.
- QuizResultDao multipleInserts asserted insertion order, but results are
  ORDER BY timestamp DESC and same-millisecond inserts tie; compare sorted.
- Docs/workflow comment: CI now runs instrumented tests, not just compiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@HighviewOne
HighviewOne merged commit e002ae3 into master Oct 4, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant