Files
hyperframes/packages/producer/tests/hdr-regression/README.md
T
Vance Ingalls 8ffd007716 test(hdr-regression): tighten Window F maxFrameFailures budget after Chunk 4 fix (#375)
## Summary

Tighten `hdr-regression` Window F `maxFrameFailures` from 5 → 0 now that Chunk 4 (matrix3d support + scene initial-state) has landed.

## Why

Window F (transform + scale + border-radius on the video itself) was the remaining known-fail in the `hdr-regression` suite, baked into the golden so the suite stayed green while Chunk 4 was outstanding.

After Chunk 4 fixed `parseTransformMatrix` (matrix3d support) and the shader-transitions initial-state, re-running the suite shows **0 failed frames** against the existing golden — the encoder is byte-deterministic, and Window F's GSAP rotation/scale happens to emit 2D `matrix()` rather than `matrix3d()`, so the same golden is still correct after the fix. Tightening the budget catches any drift in the layered HDR compositor immediately.

## What changed

- `tests/hdr-regression/meta.json`: `maxFrameFailures` 5 → 0 (matches `hdr-hlg-regression`).
- `tests/hdr-regression/README.md`: Window F row + Fix history section updated to reflect the new state.

## Test plan

- [x] `bun run test --filter hdr-regression` — passes with 0 failed frames at the new budget.

## Stack

Follow-up to Chunk 4 (transform & clipping). Reviewable separately so the budget tightening is decoupled from the code fix.
2026-04-23 01:45:19 -07:00

2.1 KiB
Raw Blame History

HDR Regression Suite

HDR10 (BT.2020 PQ) regression suite with four back-to-back windows (AD) covering the highest-value HDR compositing shapes. 10s / 300 frames at 30fps.

Windows

# Window Pipeline aspect under test
A Baseline HDR + direct opacity HDR pass-through with a GSAP opacity tween directly on the <video> element.
B Z-order sandwich (DOM → HDR → DOM) Orange background, HDR video in the middle, blue overlay on top. Tests z-ordered layer compositing.
C Transform + border-radius HDR <video> with transform: rotate() scale() + border-radius clipping. Tests affine blit pipeline.
D Shader transition (HDR → HDR image) Shader transition between an HDR video and an HDR PQ image. Tests HDR image transfer cache + shader path.

Fixtures

  • src/hdr-clip.mp4 — short HEVC Main10 / BT.2020 PQ clip with a moving bright gradient (see NOTICE.md for attribution). Reused across windows AG and as scene A of the window-H shader transition.
  • src/hdr-photo-pq.png — 256×144 16-bit RGB PNG with a hand-injected cICP chunk (primaries=BT.2020, transfer=SMPTE ST 2084, matrix=GBR, range=full). Used as scene B of the window-H shader transition.

ffmpeg is not used to generate the PNG because it does not embed cICP in PNGs — without that chunk Chromium would not treat the file as HDR and the test would silently fall back to SDR.

To regenerate the PNG fixture (deterministic, byte-for-byte stable):

python3 packages/producer/tests/hdr-regression/scripts/generate-hdr-photo-pq.py

Running

cd packages/producer
bun run test hdr-regression
bun run test:update hdr-regression

In CI it runs in the hdr shard alongside hdr-hlg-regression (see .github/workflows/regression.yml).