Repository navigation
test(player): playbench measures first play, audio joins, automation, cuts and the autoplay fallback - #6418
Merged
Conversation
… cuts and the autoplay fallback
Contributor
There was a problem hiding this comment.
Verdict: REQUEST CHANGES · 1 blocker · 1 important · 0 nits · head 8ae2ce78
- blocker: the required check
PR captures / Studio and player capturesfails. The body has no Before/After sections and noNo visible changesection. Everything else in the diff is undertests/, so the only watched change is 5 lines inpackages/player/package.json. Adding a## No visible changeheading to the body should clear it. - important: problem 5 uses the wrong clock (↓ inline).
Scope
Read all 9 files end to end. I simulated the make-media.sh marker tones against the worklet's Goertzel decode over both files: 96–99% of 0.1 s windows decode to within ±0.75 s, which is enough for the >50% rule. CI at review time: CI typecheck/lint/Test (support) green, Player perf green, PR captures red, Safari perf/Windows/CodeQL still running. No prior reviews.
— Genesis
Contributor
Edit accuracy: accurate 271 (base branch 271), smooth 165 of thoseThe gate passes. Quarantined, measured but not gated (0) Unstable (1)
|
3 of 4 tasks
…yhead The host page has no player, so its samples carry no playhead. The windows fell back to nominal cut times.
SanHsien
added a commit
to SanHsien/hyperframes
that referenced
this pull request
Oct 26, 2026
Merge 8 upstream commits (85dcc19..7d6c02f: heygen-com#6418, heygen-com#5273, heygen-com#6245, heygen-com#5593, heygen-com#5447, heygen-com#6415, heygen-com#6373, heygen-com#6375). Keep the fork's Windows-only ci.yml. For cancellableProcess.ts take upstream's heygen-com#5273, which supersedes the fork's own 744a620 port (same StringDecoder design, but the output limit counts raw bytes). Record the batch in docs/DECISIONS.md, mark heygen-com#6373/heygen-com#6375/heygen-com#6415/heygen-com#6418 as merged, and advance the commit watermark to 7d6c02f. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Oct 26, 2026
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.
What
bun run playbenchinpackages/player: plays a composition in headless Chrome and prints the numbers for five player problems reported by a user's detailed report. It ships two fixture edits generated on our own media: a 3-take edit (24.8 s, 30 fps, 6 media elements) and a 10-take edit (53.08 s, 25 fps, 20 media elements).No visible change
Test tooling only; the one non-test edit adds a
playbenchscript topackages/player/package.json. No Studio or player behaviour changes.Why
The fix lanes for first play, audio joins, automation and the autoplay-blocked fallback need one shared before/after measurement, so each fix is judged on the same numbers.
Related work
None open on this surface.
How
tests/browser/player-box.ts(standalone bun script),tests/perf/runner.ts(launchBrowser) andtests/perf/browsers/make-media.sh(media generated at run time, gitignored_media).instrument.jsis injected into every frame: rVFC on every video, a per-rAF sample against__player.getTime(),AudioParamcalls wrapped, and an AudioWorklet on the destination reporting which stretch of the file is heard.analyze.tsis pure, covered by 6 vitest tests (no real timers).--audio sink|none|both,--edit primary|tentake|both,--runs N,--blocked(unmutedplay()rejects, which exercises the parent-proxy fallback).Printed per problem: overrun frames at cut 1 after first play; joins with a mid-play audio seek in the first 600 ms and their jump sizes; automation landing offset; incoming second-frame gap and playhead hold per cut; takes heard in the blocked fallback.
Test plan
Baseline tables on origin/main follow in a comment once the final runs finish.