pcbjam/tests/web
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Istvan Matejcsok c421d724b0 findings(E-10..E-22): fix the defects a code review found in the E-1..E-9 work
A review of the group-E fixes found 13 further defects; ten were introduced by
those fixes, two pre-existed and were merely relocated, one is deferred.

Services / transport
  E-10  retireWorker synthesized no bg/exit frame, so sharedspice's s_bgRunning
        mirror stayed latched true after a mid-run worker death: Run stayed
        disabled and the promised fresh-worker restart was unreachable for the
        whole session. Retirement now dispatches a synthetic controlled-exit
        straight to the installed handler (never through dispatchEvt — a
        fabricated frame must not touch the credit ledger). Driving the repro
        exposed two further defects, both fixed here: a replacement worker
        trapped on pre-init engine reads, and the rerun's cm_input_path/circ hit
        that uninitialized engine before KiCad's validate() re-init (the native
        flow assumes a crashed engine survives in-process — true for the dll,
        false for a dead worker). Reads now answer their empty shapes pre-init,
        writes lazy-init, and init is idempotent per worker engine.
  E-19  dispatchEvt acked only AFTER handler(evt) returned, and the sharedspice
        client deliberately rethrows non-trap errors — so each throw leaked one
        unit of the 64-frame credit window until the stream died with a
        misattributed "transport exceeded". The ack moves to a finally in both
        service copies; the throw still propagates (the trap machinery needs it).
  E-20  the oversize-line path promises to transfer the accepted prefix, but
        with the window full that flush only DEFERS, and stopEventStream wiped
        the deferred queue — losing the diagnostics that explain the failure.
        The terminal notice now carries them as pendingEvents; both hosts
        deliver them in order, unacked (the fatal frame is outside the credit
        protocol).
  E-21  the 30s prefetch deadline discarded every model already collected and
        reported nothing. A caller-owned progress sink ships the partials and
        the omission reaches the export report. (Awaiting the aborted collection
        was rejected: an in-flight source fetch is not abortable — E-4's
        original disease.) Plus a serving-candidate memo, so a .wrl ref served
        by its .step fallback stops re-probing the miss on every export.

Scheduler
  E-14  _terminalizeNativeTrap classified by message substring, so any plain JS
        error QUOTING 'Aborted(' or 'out of bounds' permanently bricked a
        healthy instance. Now structural only: instanceof RuntimeError plus a
        duck-typed name check (verified in this build's glue that abort() throws
        a genuine RuntimeError both pre- and post-runtime-init). Module.onAbort
        now latches the gate — the authoritative notification, previously
        ignored.
  E-15  the shim half: _pumpResume gates on terminal (catching wakes already
        queued at latch time) and resolveWait refuses on terminal WITHOUT
        consuming the entry, so a frame stays visibly parked rather than
        resuming inside a trapped module.
  E-16  the E-5 handler read the realm-global scheduler at dispatch instead of
        its installing module's; also frees the per-line buffer on the non-trap
        rethrow path.
  E-11  get_vec trusted the worker's res.length over the transferred arrays.
        Observed death shape: a 4 GiB std::vector threw an unhandled
        std::length_error that exited the editor's main loop. Now clamped, with
        the buffers freed on every failure path.

Guardrails (replacing two deferred refactors: e2e→production-code injection and
collapsing the four copies of the worker-lifecycle machinery)
  E-18  the source contract asserted comment-string counts — rewording failed
        CI while moving a guard outside its #ifdef passed. It now parses the
        #ifdef regions and asserts on code.
        service-stub-parity.ts pins what the four lifecycle copies must share:
        credit-window equality parsed from source, the finally-ack, boot
        deadlines, terminal-notice consumption. The transport numbers are now
        single-sourced from the worker.
        CI actually runs the gates: the web/standalone vitest suites (which had
        NEVER run in CI), the reducer, the source contract and the parity tool —
        with a NON_PLAYWRIGHT_GATES check so deleting a step re-fails the lint.
  E-22  the e2e occ stub's 60s boot watchdog, deleted in a66e109, is restored in
        the ngspice-stub shape with a wedgeNextBoot() repro hook.

Every behavioral fix has red-then-green evidence (the reds were captured first).
E-17 (a stale RUNNING cross-stamping the next run's generation under E-6's
transport deferral) is DEFERRED with its analysis recorded — a real fix needs
run identity on the bg frames.

Test hygiene: the dwell lint now requires the mandated ": <why>" and all 47 bare
markers carry their reason; three export-report dwells became modal-lease polls;
exact-ledger assertions became relative deltas; the dead data-wx-dom-id branch,
an unused fault hook and unused receipt plumbing are gone; abort scans, wx
dialog drivers, the sim harness and the vitest FakeWorker are each one copy now.

Bumps kicad and wxwidgets to their findings-group-e tips.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 18:19:16 +02:00
..
chrome-toggle.spec.ts test(web): wait out the self-dismissing WRL infobar before the chrome baseline 2026-07-28 10:36:27 +02:00
comments-mentions.spec.ts comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
comments-panel.spec.ts comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
comments-reactions.spec.ts comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
comments-seen.spec.ts comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
comments-viewport-resize.spec.ts comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
comments.spec.ts fix(editor): real comment authors + overlay menu redesign 2026-07-20 20:59:24 +02:00
console-copy.spec.ts findings R: coverage for the demo-ledger fixes (R-2, R-3, R-4, R-9) — tests only 2026-08-28 13:56:53 +02:00
cross-probe.spec.ts feat(collab): cross-app selection — eeschema symbol ⇄ pcbnew footprint ghost highlight (collab-presence 0006) 2026-07-07 21:09:23 +02:00
eeschema-assign-footprints.spec.ts cvpcb: footprint filter box drawn too high and dead to clicks (wx fa46f1822c) 2026-08-27 13:47:07 +02:00
eeschema-fp-selector.spec.ts jspi cleanup: remove the asyncify-era residue — dead code, conditionals, pipeline scaffolding, stale prose 2026-08-14 09:25:32 +02:00
fatal-overlay.spec.ts fix(editor): DOM-level blue-screen floor — React can no longer white-screen a crash 2026-08-01 14:07:09 +02:00
findings-p1.spec.ts tests: findings-p1 keyboard rotate — explicit canvas focus, retried hotkey, skip (not fail) when the hotkey cannot reach the tool on the runner 2026-08-28 23:46:13 +02:00
follow.spec.ts ci: follow spec — 90s convergence windows (awareness re-broadcast covers lost first delivery) 2026-08-01 11:03:25 +02:00
footprint-browse-remote.spec.ts tests: un-skip sweep — 26 tests revived on the JSPI build, failures re-gated with fresh evidence 2026-08-13 18:43:36 +02:00
footprint-write-remote.spec.ts findings(E-10..E-22): fix the defects a code review found in the E-1..E-9 work 2026-08-31 18:19:16 +02:00
footprint-write-spike.spec.ts jspi cleanup: remove the asyncify-era residue — dead code, conditionals, pipeline scaffolding, stale prose 2026-08-14 09:25:32 +02:00
fpedit-cmd-save.spec.ts tests: fpedit-cmd-save — drop the from-pcbnew variant (CI timeouts), keep the standalone frame 2026-08-26 09:05:37 +02:00
fpedit-from-eeschema.spec.ts fix(ysync): wire dialect == file dialect, uuid churn, drift noise 2026-07-20 18:32:04 +02:00
global-setup-web.ts feat(scopes): migrate GPL open backend + web e2e to scope grammar 2026-06-30 09:54:50 +02:00
items-wire-batch-loss.spec.ts staging CI green-up: P-1 apply-slot wedge under JSPI, popup P-4 regression, ysync double-seed header, spec fixes 2026-08-28 22:25:21 +02:00
locks.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
mobile-editor.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
overlay-menu.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
presence-ghost-diag.spec.ts tests: annotate documented dwells in group-Y presence specs (determinism lint) 2026-08-28 21:30:49 +02:00
presence-ghost-peer.spec.ts staging CI green-up: P-1 apply-slot wedge under JSPI, popup P-4 regression, ysync double-seed header, spec fixes 2026-08-28 22:25:21 +02:00
presence-roster.spec.ts collab-presence 0010: unified draggable overlay menu 2026-07-16 17:25:56 +02:00
quit-after-tool-switch.spec.ts jspi cleanup: remove the asyncify-era residue — dead code, conditionals, pipeline scaffolding, stale prose 2026-08-14 09:25:32 +02:00
quit-to-project.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00
read-only-editor.spec.ts viewer-panels: read-only boots panels open-collapsed; kicad-style layer rows 2026-08-20 11:49:55 +02:00
sheet-panel.spec.ts feat(standalone): floating sheet navigator panel backed by a C++ hierarchy export (sheet-panel) 2026-08-29 16:24:57 +02:00
symbol-write-remote.spec.ts findings(E-10..E-22): fix the defects a code review found in the E-1..E-9 work 2026-08-31 18:19:16 +02:00
symbol-write-spike.spec.ts findings(E-10..E-22): fix the defects a code review found in the E-1..E-9 work 2026-08-31 18:19:16 +02:00
symedit-from-eeschema.spec.ts fix(ysync): wire dialect == file dialect, uuid churn, drift noise 2026-07-20 18:32:04 +02:00
theme.spec.ts comments-ux: figma bubble pins, floating panel, seen/reactions/mentions UI, theme follow (0001 A–E + 0002) 2026-07-24 13:21:22 +02:00
tool-switch-missing-file.spec.ts tool-switch: create the missing counterpart file instead of silently no-opping 2026-07-16 14:19:47 +02:00
tool-switch.spec.ts tool-switch: create the missing counterpart file instead of silently no-opping 2026-07-16 14:19:47 +02:00
tools-open.spec.ts e2e/CI: dual-engine suites, per-engine screenshots, SwiftShader retired, prod web suite, CI-coverage gate 2026-07-17 12:21:54 +02:00