pcbjam/tests/e2e
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Viktor Vaczi 9a04217788 wip: nested-asyncify fix, wxAuiToolBar registration, tests, research docs
Main-repo side of a multi-part WIP covering the KiCad WASM tool-selection
and nested-Asyncify work. Submodule commits are in kicad@f6e9239aaa
(libcontext hygiene) and wxwidgets@bb80f91e8b (auibar registration +
dialog diagnostics).

## scripts/common/inject-dyncall-shims.sh

Wrap Asyncify.handleSleep / allocateData to save-and-restore Asyncify.currData
around each EM_ASYNC_JS sleep. This fixes the nested Asyncify collision where
a fiber swap that fired during a modal's event loop clobbered currData, and
the modal's later doRewind used the fiber's buffer and hit "RuntimeError:
index out of bounds". Root cause documented as Emscripten Issue #9153
(wontfix upstream).

Diagnostic-rewind logging (forcedBottomOfCallStack, callStack traces) is
retained to help future debugging of Asyncify state corruption.

## tests/

- tests/playwright-kicad.config.ts: add `channel: 'chrome'` for the
  chromium project so --project=chromium --headed uses system Chrome
  (real GPU) instead of SwiftShader on ARM Mac. Also switch trace to
  retain-on-failure + screenshot on-failure for easier E2E debugging.
- tests/kicad/pcbnew.spec.ts: replace `tool.checked` assertions with a
  label-suffix check (`[checked]`) since our auibar registration encodes
  checked state in the label (no schema change to the registry).
- tests/apps/Makefile.wasm: add `coroutine-nested` build target + include
  it in the all: list.
- tests/apps/standalone/coroutine/: kicad_coroutine_harness.h + test app
  reproducing KiCad COROUTINE semantics against real libcontext.
- tests/apps/standalone/coroutine-nested/: nested_test.cpp reproduces the
  EM_ASYNC_JS-modal + fiber-swap nesting bug in isolation. 8 scenarios
  from baseline_modal_alone through nested_fibers_inside_modal.
- tests/e2e/coroutine.spec.ts + coroutine-nested.spec.ts: Playwright specs
  that load the standalone apps and assert all case cases pass via
  [COROUTINE_TEST] SUMMARY log parsing.

## research/ and features/browser-tools/

Three background docs capturing the investigation trajectory:

- features/browser-tools/0001-kicad-wasm-tool-activation-investigation.md
  Early investigation: why tools don't activate; initial dynCall-empty-
  callback hypothesis.
- features/browser-tools/0002-wasm-coroutine-deep-dive.md
  Deep dive on Asyncify internals, fiber API, QEMU's coroutine-wasm
  reference implementation.
- features/browser-tools/0003-wxauitoolbar-registration-fix.md
  The narrow fix: why wxAuiToolBar needs a registration block, where to
  add it, what the fallback plan is.
- research/threading_1.md: corrected root-cause analysis after reading
  runtime logs — nested-Asyncify currData collision, Emscripten #9153.
- research/threading_2.md: extended research on alternative approaches
  (JSPI/WasmFX/state-machines) and why they don't help here.

## Submodule pointer updates

kicad: f6e9239aaa (wip: libcontext WASM hygiene cleanup)
wxwidgets: bb80f91e8b (wip: wxAuiToolBar element-registry registration +
            dialog diagnostics)

## Open threads not yet in scope

- Firefox/Chrome divergent behavior: "indirect call signature mismatch"
  traps in Firefox vs renderer crash in system Chrome (tracked in
  plans/peaceful-hugging-pnueli.md and the research docs).
- E2E pixel-diff for Draw Lines fails because the test's diff region does
  not cover where the line is actually drawn; tool activation works, the
  line is visible in test-results/pcbnew-draw-lines-02-after-drawing.png.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 13:58:16 +02:00
..
baseline-screenshots Fix wxGrid test crash and add debug build support 2025-11-29 22:15:56 +01:00
utils Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
aui.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
auinotebook.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
bitmapbuttons.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
bitmask.spec.ts Add WASM feature tests: font enum, text decor, bitmap mask, regions 2025-12-04 11:06:33 +01:00
calendar.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
clipboard.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
collapsible.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
coroutine-nested.spec.ts wip: nested-asyncify fix, wxAuiToolBar registration, tests, research docs 2026-04-21 13:58:16 +02:00
coroutine.spec.ts wip: nested-asyncify fix, wxAuiToolBar registration, tests, research docs 2026-04-21 13:58:16 +02:00
dataview.spec.ts Extend element registry and migrate all tests to semantic selectors 2025-12-30 14:17:51 +01:00
dataviewvirtual.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
dialog.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
dialogs.spec.ts Extend element registry and migrate all tests to semantic selectors 2025-12-30 14:17:51 +01:00
dnd.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
earlysize.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
filedialog.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
fontenum.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
gal-webgl.spec.ts fix(test): Fix WebGL screenshot capture and comparison 2026-01-08 11:32:39 +01:00
grid.spec.ts Extend element registry and migrate all tests to semantic selectors 2025-12-30 14:17:51 +01:00
gridedit.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
gridrenderers.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
htmlwin.spec.ts Extend element registry and migrate all tests to semantic selectors 2025-12-30 14:17:51 +01:00
infobar.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
layout.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
listctrl.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
logerror.spec.ts Add element registry for semantic E2E test automation 2025-12-29 12:11:33 +01:00
maximize.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
menu.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
opengl.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
ownerdrawn.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
pickers.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
popup.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
print.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
printpreview.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
propgrid.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
regions.spec.ts Add WASM feature tests: font enum, text decor, bitmap mask, regions 2025-12-04 11:06:33 +01:00
retinascale.spec.ts wasm: validate kicad hi-dpi scaling 2026-03-22 12:48:05 +01:00
specialized.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
stc.spec.ts Extend element registry and migrate all tests to semantic selectors 2025-12-30 14:17:51 +01:00
textdecor.spec.ts Add WASM feature tests: font enum, text decor, bitmap mask, regions 2025-12-04 11:06:33 +01:00
threadpool.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
timer.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
toolbar.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
tree.spec.ts Extend element registry and migrate all tests to semantic selectors 2025-12-30 14:17:51 +01:00
validators.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
wasmedge.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
wizard.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
wxwidgets.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00
xml.spec.ts Clean up test infrastructure and fix test assertions 2026-01-01 20:18:19 +01:00