Skip to content

Add hermetic video player tests - #73

Merged
rovkinmax merged 3 commits into
masterfrom
PUB-79
Sep 2, 2026
Merged

Add hermetic video player tests#73
rovkinmax merged 3 commits into
masterfrom
PUB-79

Conversation

@rovkinmax

@rovkinmax rovkinmax commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add hermetic synthetic player fixtures and loopback media-server coverage for the real PlaybackController → Media3/ExoPlayer → MediaCodec/Surface path.
  • Cover HLS/progressive playback, tracks, faults/recovery, cache, lifecycle, progress, TV D-pad focus, navigation, and stale callback/session guards without production backend or credentials.
  • Redesign player instrumentation around readable direct Kaspresso ownership: technical tests use Kaspresso.Builder.simple(), Compose UI journeys use Kaspresso.Builder.withComposeSupport() and Kakao screen/robot abstractions.

Final architecture and acceptance corrections

  • Every one of the 42 player instrumentation methods owns its Kaspresso run block and named step(...) narrative.
  • The four unique E2E journeys own their 21 steps directly; no opaque one-use journey methods or generic scenario/factory wrapper remains.
  • Stable root-scoped PlayerScreen tags and a typed TV-remote API cover concrete focus assertions and D-pad behavior while low-level Media3, network, cache, lifecycle, resource, and request-journal assertions remain direct and event-based.
  • F-01: strict single-owner fixture SHA256SUMS parsing plus exact packaged 18-entry verification and malformed/duplicate/unsafe manifest regressions.
  • F-02: documentation now maps all six classes, builders, and direct per-test run/step ownership; the source-to-documentation audit covers 42/42 methods.

Compliance

Final Compliance Review: passed (sequence 138 current-tree deterministic evidence and sequence 139 current-tree smoke evidence). No compliance violations or unreviewed findings remain.

Verification

  • git diff --check — passed before commit and on the committed tree.
  • Current-tree resolver-validated APK pair — passed: target SHA-256 221bcd2b5b3cad893fa008e8f3ec6eff280f7cc0f479857e677795733fa74b86; test SHA-256 3811f8fc7c3d62c8822348e2e560864d3b7c2074a2d2daeffaa704644814aee.
  • Host, production compile/package, instrumentation compile, fixture integrity, and production-exclusion verification — passed.
  • Full com.kino.puber.ui.feature.player instrumentation suite with explicit adb -s emulator-5556 — passed twice, 42/42 each, without selective or flaky retry.
  • Preservation-safe install, bounded diagnostics/request-journal checks, cleanup/evidence audit, and emulator lease release — passed.

Notes

  • Fixtures and test dependencies remain excluded from production runtime artifacts.
  • No absolute emulator performance thresholds were introduced; HEVC/AC3 decode diagnostics remain out of scope while AC3 fallback logic is host-tested.
  • PR remains open and unmerged. CI for the new head should be monitored; no auto-merge or branch deletion has been enabled.

hasTestTag(PlayerScreenTestTags.PlayPause)
}

val seekBar: KNode = child {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тут тоже tagged можно использовать. tagged вынести как экстеншн в утильный класс и переиспользовать в будущем

@rovkinmax
rovkinmax merged commit 1d3ec39 into master Sep 2, 2026
3 checks passed
@rovkinmax
rovkinmax deleted the PUB-79 branch September 2, 2026 06:48
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