Repository navigation
test(engine): split the frame extractor tests so each file stays under the flake gate budget - #7476
Conversation
There was a problem hiding this comment.
Verdict: APPROVE · 0 blocker · 0 important · 0 nits · head dd0fc905
The split is mechanical. Every non-comment line of the original file appears across the five files. The only additions are imports, the copied runFfmpeg mock, HAS_FFMPEG and two copied pixel helpers. The 195 static test titles match. The skip conditions are unchanged: HAS_FFMPEG everywhere, and HAS_ZSCALE still guards the HDR block. CI is green, and the flake gate ran all 5 files 10/10. This is a test refactor, not a fix, so it needs no fails-without-the-fix line.
dd0fc90 to
44216e1
Compare
There was a problem hiding this comment.
Verdict: APPROVE · 0 open, 0 new · dd0fc90 → 44216e1
Range-diff after the rebase onto main: the only content change is #7471's assertion edits carried into the split files (expectedFrames: 19 in the VFR file). Every non-comment line from main's file is still present, the 195 test titles match, and the added lines are the same as on dd0fc905. CI was still running on this head when I approved.
…nce watermark Seventeen commits, PRs 7469-7493, issues 7473 and 7486 and twelve pin moves are recorded with their evidence in the continued ledger, DECISIONS, UPSTREAM and ROADMAP. Adopted: heygen-com#7466, heygen-com#7479, heygen-com#7482, heygen-com#7490 and the heygen-com#7441 and heygen-com#7440 docs. Deferred: heygen-com#7469, heygen-com#7471, heygen-com#7476, heygen-com#7480, heygen-com#7468, heygen-com#7487, heygen-com#7491. Not applicable: heygen-com#7470, heygen-com#7351, heygen-com#7475, heygen-com#7483. The watermark moves to 61e720b, PR heygen-com#7493, issue heygen-com#7486; thirteen new PRs are pinned. FORK.md records the subComposition test differences. The core packed-size roadmap row trigger is not met. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
What
videoFrameExtractor.test.tsis split along its existing describe blocks so a pull request that touches extractor tests can pass the flake gate on any runner. The four blocks that run ffmpeg each move into their own file:videoFrameExtractor.format.test.tsvideoFrameExtractor.sampling.test.tsvideoFrameExtractor.vfr.test.tsvideoFrameExtractor.hdr.test.tsvideoFrameExtractor.test.ts(stays)No test is deleted or changed, the gate's budget is not raised, and no file is exempted.
Why
The flake gate re-runs every test file a pull request touches 10 times under CPU contention, with 120 s per run (
scripts/ci/flake-gate.mjs,RUN_TIMEOUT_MS). This file alone took 106 to 118 s per run there, so any pull request that touched it passed or failed depending on the runner:The two #7469 heads had the same test content in this file; only the runner differed.
Related work
Found while landing #7469, which had to move its new test out of this file to get through the gate. Rebased onto #7471, which changed two assertions in this file: the count test stays in the original file, and the superset case moved to
videoFrameExtractor.vfr.test.tswith its new expected count (19).How
The split was mechanical: a script parsed the file with the TypeScript compiler, moved each heavy describe block with its leading comments, and gave each new file only the imports, constants and helpers it uses. The
runFfmpegpass-through mock goes to every file that touchesrunFfmpeg. Helpers that two files need are copied rather than shared. The duplication audit stays clean without adding any suppression, and the original file keeps its existing one.Long comments that came along with the moved code are cut. The original file keeps its one note on why ffmpeg tests can be skipped on GitHub's hosted runners, where the producer's Docker regression test covers this. The new files set
HAS_FFMPEGinline, the way the engine's other ffmpeg tests do. The VFR block's history: irregular timestamps once made thefpsfilter emit too few frames for a range, so the compositor held the last frame and the video looked frozen. The block's comment now states that in two lines, and the fixture comment in two more.Test plan
oxlint0 errors,oxfmt --checkclean, engine typecheck clean, comment ratchet at or under share,fallow audit --base origin/main: no issues and no added suppressions.