The e2e workflow runs 3 of 16 specs because we assumed hosted runners have no GPU. That is true for Ubuntu. The free macOS runners do have one, and it works for both backends.
Probe: run 35742921976 from .github/workflows/gpu-probe.yml (branch ci/gpu-runner-probe).
| Runner |
Full Chromium (new headless) |
Headless shell (Playwright default) |
| macos-14, macos-15 |
Metal (Apple Paravirtual device), WebGPU renders and computes correctly |
SwiftShader only |
| ubuntu-latest |
SwiftShader only |
SwiftShader only |
Why it matters. The WebGL2 versus WebGPU parity specs, and the render-mode tests from #196, only run on a developer's Mac today. This puts them in CI on the backend we actually tune against, at no cost.
Two things to know
- It only works with
channel: 'chromium' in the Playwright launch options. The default headless shell falls back to SwiftShader, even on a physical Mac.
- The runner is a small VM (3 cores, 7 GB). Use it for correctness, not timing.
Next step. Add a macos-15 job to niivue-e2e.yml that runs the full spec list with the channel change, behind an env var so the Ubuntu job is untouched.
The e2e workflow runs 3 of 16 specs because we assumed hosted runners have no GPU. That is true for Ubuntu. The free macOS runners do have one, and it works for both backends.
Probe: run 35742921976 from
.github/workflows/gpu-probe.yml(branchci/gpu-runner-probe).Why it matters. The WebGL2 versus WebGPU parity specs, and the render-mode tests from #196, only run on a developer's Mac today. This puts them in CI on the backend we actually tune against, at no cost.
Two things to know
channel: 'chromium'in the Playwright launch options. The default headless shell falls back to SwiftShader, even on a physical Mac.Next step. Add a
macos-15job toniivue-e2e.ymlthat runs the full spec list with the channel change, behind an env var so the Ubuntu job is untouched.