Skip to content

test(driver): close the declared-vs-applied gaps; add __stats + a GridBoard leak-soak gate#263

Merged
zzal merged 1 commit into
mainfrom
test/driver-batch
Jul 20, 2026
Merged

test(driver): close the declared-vs-applied gaps; add __stats + a GridBoard leak-soak gate#263
zzal merged 1 commit into
mainfrom
test/driver-batch

Conversation

@zzal

@zzal zzal commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Audit backlog B11 (Part-6 Mediums): the remaining "declared vs applied" holes, plus the leak-class regression net.

js-driver test batch (103 tests, 0 fail):

  • serializeEvent field fidelity: targetValue, targetChecked, isSelfTarget (bubbled vs self — the backdrop-dismiss distinction), key + all four modifier flags. These power every binding and keyboard shortcut and had zero driver-layer assertions.
  • setProperty innerHTML refusal: the XSS defence-in-depth gate now has a test (throws, batch reports false, no markup lands).
  • destroyNode: listener actually detaches while the node is still in the DOM, and the numeric handle-prefix parse survives the 2-vs-12 collision the code specifically guards. The test's stale "drops the map entry only" comment described pre-fix behavior.
  • Select mount-order: pins the documented gotcha at the honest layer — a value property applied before options loses to the first option; the selected attribute (the framework's fix mechanism) wins regardless of order.

window.swiflow.__stats (new test hook, explicitly not API): live nodes/listeners/mountedRoots map sizes — the driver's retention was previously invisible to soaks.

GridBoard leak-soak e2e: 8 seconds of animation-rate playback must leave the driver maps flat — the regression net for both shipped leak classes (memoKey handlers, animateExit listeners). Runs in the CI gridboard leg #258 added.

autocomplete.spec.ts (swiflowui config): first honest-layer coverage for the kit's most imperative component — typing opens the listbox via :popover-open, Escape closes, ArrowDown keeps the active option inside the scrollport (the ref-driven scrollIntoView), click-to-select fills the input and closes. Registered in the swiflowui testMatch AND the default config's testIgnore (the #258 regression class).

Verification: js-driver 103/103; swiflowui e2e 30 passed locally (incl. the 3 new); gridboard e2e 2 passed locally; whole-package swift test 1904 green; EmbeddedDriver.swift + 22 example copies regenerated.

🤖 Generated with Claude Code

…dBoard leak-soak gate

serializeEvent's load-bearing fields (targetValue/targetChecked/
isSelfTarget/key/modifier flags), the setProperty innerHTML refusal,
destroyNode's listener detach + numeric handle-prefix parse, and the
select value-before-options application order now all have driver-layer
tests — each was observable only below the patch stream, where the
.style() bug class lives. The destroyNode test's stale 'drops the map
entry only' comment described pre-fix behavior.

New window.swiflow.__stats test hook (nodes/listeners/mountedRoots map
sizes): the driver's retention was previously invisible to soaks. The
GridBoard spec gains a leak-soak test — 8s of animation-rate playback
must leave the maps flat, the regression net for the memoKey-handler
and animateExit leak classes.

New autocomplete.spec.ts (swiflowui config): the kit's most imperative
surface (showPopover/hidePopover/scrollIntoView via refs) had zero
honest-layer coverage — typing opens :popover-open, Escape closes,
ArrowDown keeps the active option in the scrollport, click-to-select
fills and closes.

js-driver: 103 tests, 0 fail. swiflowui e2e: 30 passed locally (incl.
the 3 new). gridboard e2e: 2 passed locally. Whole-package swift test:
1904 green. EmbeddedDriver + example copies regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zzal zzal added the run-e2e Run the (expensive) Playwright e2e job on this PR label Jul 20, 2026
@github-actions

Copy link
Copy Markdown

📦 Bundle size

Artifact Baseline This PR Δ
App.wasm 5.06 MB 5.23 MB +3.45%
App.wasm (gzip) 1.80 MB 1.87 MB +3.56%
JS runtime 54.5 KB 54.5 KB +0.00%
JS runtime (gzip) 11.3 KB 11.3 KB +0.00%
Total (gzip) 1.81 MB 1.88 MB +3.54%

✅ Within budget (≤5% growth allowed).

Baseline: Swift 6.3, WASM SDK 6.3-RELEASE, measured 2026-06-18.

@zzal
zzal merged commit a6191b4 into main Jul 20, 2026
12 of 18 checks passed
@zzal
zzal deleted the test/driver-batch branch July 20, 2026 01:37
zzal added a commit that referenced this pull request Jul 20, 2026
The modularization-audit release (PRs #254-#263): animateExit listener
leak, wasm32 Int traps, host-abort gates, macro guardrails, driver test
batch. Three BREAKING API cleanups (HTTP facade, LabeledField rename,
tuple-pattern @State).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-e2e Run the (expensive) Playwright e2e job on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant