Skip to content

Android playback QA matrix

Evidence status: This page preserves a dated QA packet. Treat rows marked blocked, pending hardware QA, or release-readiness follow-up as stale evidence until they are rerun on current devices and builds.

This matrix is the final Android/TV gate for the ticketed Media3 playback, watch progress, and track-selection stack. Automated fake coverage should pass before any hardware run; phone and TV manual results must be updated from real devices before promoting the Android lane beyond dev.

  • PlaybackFoundationTest covers ticket fetch/stream URL redaction, first play preparation, server-resume vs start-over routing, progress writes for pause/exit/end, session expiry, ticket auth retry, server-unreachable retry, missing-file/offline-library recovery, and diagnostic redaction.
  • PlaybackTrackOptionsTest covers no-track, multiple-audio, unsupported-audio, subtitle off/on, labels, capability warnings, and redacted track diagnostics.
  • TvPlaybackOverlayReducerTest covers D-pad show controls, TV Back/exit sequencing, picker dismissal/selection, playback-stop recovery focus, and auto-hide behavior without Compose hardware dependencies.
ScenarioAutomated/fake evidencePhone manual resultTV manual resultExpected recovery/pass criteria
First playTicket fetch and Ready state in PlaybackFoundationTestPending hardware QAPending hardware QAPlayback opens from detail/cache entry without exposing session tokens and starts rendering.
ResumeServer resume lookup in PlaybackFoundationTestPending hardware QAPending hardware QAResume starts at server watch position when no explicit start was chosen.
Start-overStart-over skip-resume test in PlaybackFoundationTestPending hardware QAPending hardware QAPlayback starts at 0s and does not reuse stale watch position.
PausePeriodic/progress write path in PlaybackFoundationTestPending hardware QAPending hardware QAPause keeps screen recoverable and commits current watch progress.
Back/exitExit progress write plus TV reducer Back testsPending hardware QAPending hardware QABack returns to detail/home without requiring app-data wipe and saves progress when duration is known.
Ended/completedonPlaybackEnded progress testPending hardware QAPending hardware QAEnd of media commits completion position and returns to a usable details/home state.
Watched/unwatched refreshProgress commit callback exercised in PlaybackFoundationTestPending hardware QAPending hardware QADetail/home watch badges refresh after progress/completion changes.
Session expiryTicket/resume/progress 401/403 invalidation testsPending hardware QAPending hardware QAExpired sessions leave playback and show sign-in/change-server recovery, not a stuck player.
Ticket expiry/retryStream auth retry-with-fresh-ticket testPending hardware QAPending hardware QAExpired playback ticket retries with a fresh ticket, then invalidates session after retry limit.
Server unreachableTicket network retry-limit testPending hardware QAPending hardware QAShows retry/change-server/sign-out recovery after bounded retry attempts.
Missing file/offline library404/503 recovery testPending hardware QAPending hardware QAShows retry/change-server/sign-out recovery copy without clearing app data.
No tracksEmpty audio/text option testsPending hardware QAPending hardware QAPlayback stays usable; TV reports no audio/subtitle tracks and subtitles still offer Off.
Multiple audioMulti-group audio option testPending hardware QAPending hardware QATV picker lists each audio stream with language/codec/channel details.
Unsupported audioCapability-warning audio option testPending hardware QAPending hardware QAUnsupported streams are disabled or warned; exceeds-capability streams remain selectable for device fallback.
Subtitles off/onSubtitle Off/selected text testsPending hardware QAPending hardware QAOff disables text tracks and selectable subtitle tracks can be re-enabled.
TV focus/Back behaviorTV overlay reducer testsNot applicablePending hardware QAHidden controls restore safe focus before exit; pickers close before Back exits playback.
  • Physical/manual phone and Android TV playback were not executed in this workspace because no usable attached device or TV remote target was available. Recommended follow-up: run this matrix on a physical phone and Android TV against a seeded Ferrex server before promoting Android builds out of dev.
  • TV currently exposes a minimal “Play first cached item” entry point rather than the full phone detail route flow. Recommended follow-up: add TV browse/detail playback launch coverage once the TV product surface expands.
  • Unsupported-audio behavior is fake-covered through Media3 track support snapshots; hardware verification still needs media fixtures with unsupported and exceeds-capability codecs on representative devices.