test(perf): track-only runtime-perf E2E for eeschema + pcbnew

Measures the current build's cold load, open+render, and pan/zoom FPS
(1x/4x/6x CPU-throttle sweep) for both editors, writing
tests/test-results/perf-*.json. Track-only: asserts only that the app booted
and the document opened — no perf thresholds, so it never gates CI.

Runs on a new Chromium `perf` Playwright project (CDP throttling; pcbnew needs
V8 anyway) via `npm run test:perf`, and is wired into wasm-build.yml as a
continue-on-error step so the numbers are captured/uploaded without flaking the
gate. Reuses the existing fixtures, ready-signal, fs-inject, and board-ready
helpers; FPS counter is cancel-able so a throttle sweep on one page doesn't
accumulate rAF loops.

.gitignore: ignore /benchmark-builds/ (disposable prebuilt-WASM + standalone
harness bundle used to reproduce the native-vs-JS-EH comparison locally).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Viktor Vaczi 2026-07-01 14:43:54 +02:00
commit 3e5791774b
7 changed files with 268 additions and 3 deletions

5
.gitignore vendored
View file

@ -83,6 +83,11 @@ output/
/bench/
/scripts/bench/vm/
# Temporary/disposable prebuilt WASM sets (native-EH + JS-EH × eeschema + pcbnew
# O1 builds) + the standalone perf harness, used to reproduce the runtime-perf
# comparison on demand. Large (~1 GB), never committed.
/benchmark-builds/
/tests/.test-port-asyncify
/memory/