Skip to content

#672 Phase 3 / AC6: visual baselines for the HD rower - #676

Merged
MaximumTrainer merged 3 commits into
mainfrom
claude/project-thread-ppmlwv
Nov 2, 2026
Merged

MaximumTrainer merged 3 commits into
mainfrom
claude/project-thread-ppmlwv

Conversation

@MaximumTrainer

Copy link
Copy Markdown
Collaborator

Requested by Dan · project thread

Phase 3 of #672, the last phase. It waited on #666 (engine baselines on the GPU runner) and #671 (the GPU-runner WebGPU recipe). Both have merged.

Summary

  • New playwright/tests/visual/crew.spec.ts: four baselines, male and female × chase and bow, at medium and 1280×720.
    • The spec pins the crew (virtualrow:crew) and the view (virtualrow:camera-view) through localStorage.
    • It checks that the engine actually fetched the picked scull-<crew>.glb, so the baseline can't record the wrong rower.
    • On a VM with no hardware adapter it skips with a well-formed decline, the same way scene.spec.ts does.
  • Brings the visual job in next-branch-ci.yml to #648 follow-up: diagnose Vulkan/NVIDIA runtime on the GPU-runner image #671's recipe (agents.md §8, "the three traps"):
    • It installs Chrome Stable and runs the specs on it, because the headless shell has no navigator.gpu.
    • It installs the libnvidia-gl-$DRV-server userspace.
    • It runs headful under Xvfb, because the headless path doesn't composite the WebGPU swap chain into screenshots.
  • Fixes the record step's order:
    • Before, it ran after both the failing run and the upload, so a visual-baseline label run never put the recorded PNGs in the artifact.
    • Now one step takes --update-snapshots under the label, and the upload follows it. test-results is uploaded as well, so a red run's diffs come with it.

Not in this PR

scene.spec.ts (#666) still launches the default headless shell, so its shots still skip on the GPU runner. Moving it to Chrome Stable under Xvfb is a spec edit, so it's left to Dan to decide.

Test plan

  • tsc -p tsconfig.playwright.json, eslint, and pre-commit/pre-push are green.
  • --list shows the 4 new tests in the visual project.
  • Run locally with no GPU, the spec takes the decline branch and skips cleanly.
  • With the visual-baseline label, the GPU runner records crew-{male,female}-{chase,bow}.png. They come back in this PR in a follow-up commit, once I've checked they show the rower.


Generated by Claude Code

Adds playwright/tests/visual/crew.spec.ts: one baseline per crew
(male, female) per camera view (chase, bow), at medium and 1280x720.
The spec pins the crew and view through localStorage, checks the
engine fetched the picked scull-<crew>.glb, and skips with a
well-formed decline on a VM with no hardware adapter.

The visual job in next-branch-ci.yml now uses #671's GPU-runner
recipe: Chrome Stable, the -server GL userspace, and headful under
Xvfb. Under the visual-baseline label it records the baselines in the
same step, before the upload, so the artifact carries the PNGs to
commit back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UM4shUt4GC6ZsPiQdivoym
@MaximumTrainer MaximumTrainer added the visual-baseline Re-record the #340 visual baselines in CI and upload them as an artifact label Nov 2, 2026 — with Claude
@MaximumTrainer MaximumTrainer self-assigned this Nov 2, 2026
Also records that the visual-baseline label only takes effect on the
next push, since next-branch-ci.yml does not run on labeled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UM4shUt4GC6ZsPiQdivoym
On the GPU runner all four crew shots got WebGPU working and fetched
the right GLB, then failed in assertCanvasNotBlank: its drawImage
readback read 0/400 lit samples. #648 found the same thing, where a
WebGPU canvas presents cleanly but drawImage still reads zero. The
black-frame check now decodes Chrome's own canvas screenshot, which is
the image the baseline compares.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UM4shUt4GC6ZsPiQdivoym
@MaximumTrainer
MaximumTrainer merged commit ed80bdc into main Nov 2, 2026
13 checks passed
@MaximumTrainer
MaximumTrainer deleted the claude/project-thread-ppmlwv branch November 2, 2026 07:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

visual-baseline Re-record the #340 visual baselines in CI and upload them as an artifact

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants