Repository navigation
Check the playing player without waiting for the screen to go idle - #26
Merged
Merged
Conversation
Since the playing word is highlighted every frame (4b5d0cf), the player redraws every frame while it plays. A Compose test lookup first waits for the UI to go idle, so the acceptance walk's wait for the Pause button returned only after the 15 s clip had ended, when the button said Play again: "Not shown: ContentDescription = 'Pause'". The walk never reached its later screens. Flows.liveNodes reads the semantics nodes of the activity's Compose roots on the UI thread as they are now, and waitShownLive polls it inside waitUntil, which advances frames but does not wait for idle. The walk uses them for the Pause button and the highlighted word; its other checks run while nothing plays and keep the idle-synced lookups. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DrMeyers
pushed a commit
that referenced
this pull request
Oct 31, 2026
The About card of the README and store Settings screenshots reads "Cassini talk 0.3.0". Taken with the acceptance walk (light and dark, real models) on a CI emulator: API 34, Pixel 5 profile, the 1080 x 2340 of the earlier screenshots (run 41161555538, with the walk fix of #26), then 540 px wide with Pillow and optipng -o5 -strip all as docs/development.md says (run 41162612753). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 of 3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The acceptance walk (
AcceptanceWalkTest,@Manual,scripts/acceptance-walk.sh) stopped at screen 03, Read & listen, withNot shown: ContentDescription = 'Pause'. So it never reached Settings, and the README/store screenshots can't be refreshed (coordination R2).Cause. Since 4b5d0cf (#16) the playing word is highlighted every frame, so the player redraws every frame while it plays. Compose test lookups (
onAllNodes(...).fetchSemanticsNodes()) first wait for the UI to go idle. The wait for the Pause button therefore returned only after the 15 s clip had ended, when the button said Play again. Logcat of CI run 41160257011: playback ran from 02:40:07.5 to 02:40:21.2 (680,640 frames, the whole clip), the test sawplayingin the graph state, and the tree printed on timeout shows Play / Paused. App behaviour isn't affected; CI's device checks don't run the walk, which is why nobody noticed.Fix.
Flows.liveNodesreads the semantics nodes of the activity's Compose roots (ViewRootForTest.semanticsOwner) on the UI thread as they are now.Flows.waitShownLivepolls it insidewaitUntil, which advances frames but doesn't wait for idle. The walk uses them for the Pause button and the highlighted-word check. Its other checks run while nothing plays and keep the idle-synced lookups.Checks
./gradlew detekt :app:compileDebugAndroidTestKotlinpasses (macOS). No app or:uicode changes, so no goldens.realModelsreportsOK (1 test)in light and dark, with all 13 screens per theme (03 Read & listen through 10). Before the fix it stopped at 03 in both themes.verifiedchecksums. Only the block total offiles/speaker-modelsgrew by 4 KB (130436 → 130440): the models were pushed seconds before the walk, and that's the filesystem finishing its allocation. With models installed long before, as the script expects, this doesn't happen.Signed-off-by: not added (a personal certification for the maintainer).🤖 Generated with Claude Code