pcbjam/tests/package.json
Istvan Matejcsok 0b8e7186d4 findings(E-1,E-2,E-3,E-6): ngspice service generations + credit-bounded event transport
Adapted from codex/asyncify-execution-owner-core 3753320. Service side mirrors
the occ-service shape (E-1 watchdogs, E-2 fail-all + boot-death fix — onerror
now rejects the in-flight boot waiter instead of stranding it, E-3
onmessageerror terminal, Blob URL revoked, per-generation evtQueue cleared on
retirement).

E-6 transport bounds (worker hunks re-applied inside the emscripten-6
em-pthread else-branch — the codex file predates that split, so this is a
re-application, not a cherry-pick):
- batch cut at 512 lines / 1 MiB exact JSON-UTF-8 bytes, measured before a
  line is retained; a single line > 1 MiB flushes the accepted prefix then
  stops the event stream terminally (never retained);
- posting gated by a 64-frame / 8 MiB unacked credit window; each frame
  carries { eventSequence, eventBytes } and is released only by an exact
  { sequence, bytes } ack; any mismatched ack is terminal;
- the service mirrors the same 64-frame / 8 MiB bound on its pre-handler
  queue, acks after handing a frame to __ngspiceOnEvent, and retires the
  generation on invalid credit; { fatal } frames retire the worker.

Tests: ngspice-service.test.ts (11, ported) — watchdogs, crash/bootError/
decode-fault settlement + recovery, out-of-order ids, sync postMessage throw,
stale-generation event drops, fatal-frame retirement. tests/tools/
ngspice-worker-batch-unit.ts (node:vm over the production worker source;
`npm run ngspice:worker-batch`) — bounded ordered chunks, byte-pressure
flush, 100k-chunk credit storm, over-limit line, exact ack lease. e2e harness
twin updated to speak the ack protocol (adds __ngspiceServiceTestHooks).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 18:18:02 +02:00

50 lines
3.3 KiB
JSON

{
"name": "kicad-wasm-tests",
"version": "1.0.0",
"description": "Playwright tests for wxWidgets WASM and KiCad",
"scripts": {
"test": "npm run test:e2e",
"test:e2e": "npm run setup:kicad && playwright test --project=wx-chromium --project=kicad-firefox --project=kicad-chromium --project=jspi-firefox --project=coroutine-firefox",
"test:kicad": "npm run setup:kicad && playwright test --project=kicad-firefox",
"test:kicad:headed": "npm run setup:kicad && playwright test --project=kicad-chrome --headed",
"test:jspi:chrome": "playwright test --project=jspi-chrome",
"test:perf": "npm run setup:kicad && playwright test --project=perf --workers=1",
"test:web": "npm run setup:kicad && playwright test --config=playwright-web.config.ts --project=web-firefox",
"test:web:ci": "npm run setup:kicad && playwright test --config=playwright-web.config.ts --project=web-firefox --project=web-chromium --project=web-mobile",
"build:collab": "node collab/build.mjs",
"serve": "npx serve apps -p 8080 -c ../serve.json",
"setup:kicad": "./scripts/setup-kicad-wasm.sh",
"corpus:lint": "tsx tools/corpus-lint.ts",
"lint:determinism": "tsx tools/lint-determinism.ts",
"lint:ci-coverage": "tsx tools/lint-ci-coverage.ts",
"screenshots:check": "tsx tools/screenshots/compare.ts",
"screenshots:noise": "tsx tools/screenshots/noise.ts",
"screenshots:report": "tsx tools/screenshots/post-discord.ts",
"screenshots:fetch-manifest": "tsx tools/screenshots/r2-sync.ts --manifest",
"screenshots:fetch": "tsx tools/screenshots/r2-sync.ts --pull",
"screenshots:upload-run": "tsx tools/screenshots/upload-run.ts",
"3d:compare": "tsx tools/screenshots/compare-dirs.ts",
"3d:check": "tsx tools/screenshots/compare-dirs.ts --old 3d-regression/baseline --new 3d-regression/output/native --out 3d-regression/output/diff/native-self --floors 3d-regression/floors.json --level native-self --label 3d-native --fail-on-change",
"3d:check:webgl": "tsx tools/screenshots/compare-dirs.ts --old 3d-regression/baseline-webgl --new 3d-regression/output/webgl --out 3d-regression/output/diff/webgl-self --floors 3d-regression/floors.json --level webgl-self --label 3d-webgl --fail-on-change",
"3d:check:parity": "tsx tools/screenshots/compare-dirs.ts --old 3d-regression/baseline --new 3d-regression/output/webgl --out 3d-regression/output/diff/parity --floors 3d-regression/floors.json --level webgl-vs-native --label 3d-parity",
"3d:review": "tsx tools/screenshots/compare-dirs.ts --old 3d-regression/baseline --new 3d-regression/output/webgl --out 3d-regression/output/diff/parity-review --floors 3d-regression/floors.json --level webgl-vs-native --label 3d-parity --artifacts always",
"3d:test:webgl": "playwright test --project=wx-chromium e2e/3d-webgl.spec.ts",
"tools:contract": "tsx tools/cli-contract.ts",
"ngspice:worker-batch": "tsx tools/ngspice-worker-batch-unit.ts"
},
"devDependencies": {
"@playwright/test": "^1.62.1",
"@types/node": "^24.10.1",
"@types/pixelmatch": "^5.2.6",
"@types/pngjs": "^6.0.5",
"aws4fetch": "^1.0.20",
"esbuild": "^0.28.0",
"pixelmatch": "^5.3.0",
"playwright": "^1.62.1",
"pngjs": "^7.0.0",
"serve": "^14.2.0",
"tsx": "^4.22.4",
"typescript": "^5.9.3",
"yjs": "^13.6.31"
}
}