mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-11-15 22:08:03 +00:00
Adds the 06-parity scenario, which compares a live-playback frame at ~5s on the gsap-heavy fixture against a synchronously-seeked reference at the same captured timestamp. The two PNG screenshots are diffed via ffmpeg's SSIM filter; the run reports parity_ssim_min across runs as a higher-is-better metric (baseline 0.95, allowed regression ratio 0.1 yields effective gate >= 0.855). The iframe-side rAF watcher pauses the timeline in the same tick that getTime() crosses 5.0s so the frozen value can be used as the canonical T_actual for both captures. After two host-side rAF ticks for paint settlement the actual frame is screenshotted, then el.seek() (which routes through _trySyncSeek for same-origin iframes) lands the player on the same time and a second screenshot is taken as the reference. Per-run PNGs and the captured time are persisted under results/parity/run-N/ for CI artifact upload and local debugging. Wires the scenario into index.ts (ScenarioId, dispatcher, DEFAULT_RUNS = 3), adds a parity shard to player-perf.yml, and adds paritySsimMin to baseline.json + the PerfBaseline type so the gate can evaluate it.