tests: un-skip sweep — 26 tests revived on the JSPI build, failures re-gated with fresh evidence
Empirical pass over every skip/fixme whose premise the JSPI migration could have changed. Revived (verified green): - Firefox wasm-budget guards RETIRED (drift-trio, drift-trio-fuzz, drift-trio-scenarios, ysync-two-tab, ysync-libsymbols): the JSPI build (~half the asyncify size) fits three editor tabs inside Firefox 153's per-process budget — +20 firefox collab tests. - roundtrip 'pcbnew preserves items through a yjs round trip': the asyncify-fragile envelope parse it waited on is gone — both engines. - drift-trio-scenarios S4/S4b: converge now (was KNOWN ~5-8%). - pcbnew-collab + eeschema-collab 'a local move propagates A→B'. - web eeschema-fp-selector, read-only-editor's fixme'd writer-stream test, footprint-browse-remote read path (chromium; firefox gated: FootprintEnumerate rows never appear in 60s — slow wasm tier suspected). Still broken, re-gated with re-verified reasons: - 3d-viewer raytracer engine toggle: still inert, both engines. - maximize display geometry: wxDisplay reports 0x0 in the harness. - web editor WRITE bridge (symbol/footprint × remote/spike): wedges at the New Symbol/Footprint dialog step on both engines — the web-e2e-rot 01 gap stands for writes. Verify runs: kicad+wx touched files 93 passed / 0 failed / 7 skipped (intended gates); web touched files 7 passed / 0 failed / 9 skipped. lint:determinism + lint:ci-coverage green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016X9eh1s5sTx1o9Em9KBuwR
This commit is contained in:
parent
db819850ee
commit
3ee174e9b4
17 changed files with 56 additions and 33 deletions
|
|
@ -58,7 +58,8 @@ test.describe('3D viewer camera-move deadlock', () => {
|
|||
// m_boardAdapter.m_Cfg while RenderEngineChanged() reads GetAppSettings<…>() — possibly
|
||||
// different instances in the merged kicad_editor bundle. Unskip once the toggle works:
|
||||
// the engagement guard below then validates the engine flip loudly.
|
||||
test.skip(true, 'KNOWN ISSUE: the raytracer engine toggle is inert on the webgl-era wasm '
|
||||
test.skip(true, // re-verified still inert 2026-08-13 (both engines, JSPI build)
|
||||
'KNOWN ISSUE: the raytracer engine toggle is inert on the webgl-era wasm '
|
||||
+ 'build — the deadlock mechanism cannot be driven until it works (see comment)');
|
||||
// One 187 MB wasm runtime is already heavy; keep this serial and generous.
|
||||
test.describe.configure({ mode: 'serial' });
|
||||
|
|
|
|||
|
|
@ -56,10 +56,10 @@ test.beforeAll(() => {
|
|||
});
|
||||
|
||||
function skipFirefox(): void {
|
||||
test.skip(
|
||||
test.info().project.name.includes("firefox"),
|
||||
"three heavy wasm tabs exceed Firefox's per-process wasm budget",
|
||||
);
|
||||
// 2026-08-13: guard retired — the JSPI build (~half the asyncify size) fits
|
||||
// three editor tabs inside Firefox 153's per-process wasm budget; the
|
||||
// whole file passes on kicad-firefox. Kept as a hook in case the wall
|
||||
// returns with future growth.
|
||||
}
|
||||
|
||||
/** mulberry32 — tiny deterministic PRNG. */
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@ test.beforeAll(() => {
|
|||
});
|
||||
|
||||
function skipFirefox(): void {
|
||||
test.skip(
|
||||
test.info().project.name.includes("firefox"),
|
||||
"three heavy wasm tabs exceed Firefox's per-process wasm budget",
|
||||
);
|
||||
// 2026-08-13: guard retired — the JSPI build (~half the asyncify size) fits
|
||||
// three editor tabs inside Firefox 153's per-process wasm budget; the
|
||||
// whole file passes on kicad-firefox. Kept as a hook in case the wall
|
||||
// returns with future growth.
|
||||
}
|
||||
|
||||
/** Poll until every tab's silent save contains `marker`. */
|
||||
|
|
@ -197,7 +197,8 @@ for (const ops of [SCH_OPS, PCB_OPS]) {
|
|||
// runs). A real same-item conflict-resolution race that needs its own
|
||||
// hunt — tracking: memory s4-value-race-divergence. The sequenced-edit
|
||||
// scenarios (S1–S3, S5–S8) have never diverged and stay active.
|
||||
test.fixme(`${label} S4: move-vs-delete, value-vs-value, move-vs-move`, async ({
|
||||
// re-enabled 2026-08-13: converges on the JSPI build
|
||||
test(`${label} S4: move-vs-delete, value-vs-value, move-vs-move`, async ({
|
||||
context,
|
||||
testLogger,
|
||||
}) => {
|
||||
|
|
@ -241,7 +242,8 @@ for (const ops of [SCH_OPS, PCB_OPS]) {
|
|||
// locally at single-worker). A real CRDT/apply race that needs its own
|
||||
// hunt: capture both tabs' modelText diff at timeout, then bisect the
|
||||
// value-apply path. Tracking: memory s4-value-race-divergence.
|
||||
test.fixme(`${label} S4b: value-vs-value converges (KNOWN ~5-8% divergence)`, async ({
|
||||
// re-enabled 2026-08-13: converges on the JSPI build
|
||||
test(`${label} S4b: value-vs-value converges (KNOWN ~5-8% divergence)`, async ({
|
||||
context,
|
||||
testLogger,
|
||||
}) => {
|
||||
|
|
|
|||
|
|
@ -51,10 +51,10 @@ test.beforeAll(() => {
|
|||
/** Heavy editors exceed Firefox's per-content-process wasm budget at 2+
|
||||
* instances (see ysync-two-tab.spec.ts) — at 3 it is strictly worse. */
|
||||
function skipFirefox(): void {
|
||||
test.skip(
|
||||
test.info().project.name.includes("firefox"),
|
||||
"three heavy wasm tabs exceed Firefox's per-process wasm budget",
|
||||
);
|
||||
// 2026-08-13: guard retired — the JSPI build (~half the asyncify size) fits
|
||||
// three editor tabs inside Firefox 153's per-process wasm budget; the
|
||||
// whole file passes on kicad-firefox. Kept as a hook in case the wall
|
||||
// returns with future growth.
|
||||
}
|
||||
|
||||
// ── pl_editor: green baseline validating the trio plumbing itself ────────────
|
||||
|
|
|
|||
|
|
@ -224,7 +224,8 @@ test.describe("eeschema collab bridge — single page", () => {
|
|||
test.describe("eeschema collab bridge — two tabs (BroadcastChannel)", () => {
|
||||
// SKIP headless for the same reason as the single-page apply test (harness open=false →
|
||||
// SCH_COMMIT no-ops). Verified working in the real web app.
|
||||
test.skip("a local move propagates A→B", async ({ context, testLogger }) => {
|
||||
// re-enabled 2026-08-13: passes on the JSPI build (flaked once under 2-worker trio load; green solo)
|
||||
test("a local move propagates A→B", async ({ context, testLogger }) => {
|
||||
const channel = `ee-collab-e2e-${test.info().workerIndex}`;
|
||||
const bundle = path.resolve(__dirname, "../apps/kicad/collab-bundle.js");
|
||||
|
||||
|
|
|
|||
|
|
@ -437,7 +437,8 @@ test.describe("pcbnew collab bridge — single page", () => {
|
|||
test.describe("pcbnew collab bridge — two tabs (BroadcastChannel)", () => {
|
||||
// SKIP headless for the same reason as the single-page apply test (harness can't PAINT).
|
||||
// Verified working in the real web app.
|
||||
test.skip("a local move propagates A→B", async ({ context, testLogger }) => {
|
||||
// re-enabled 2026-08-13: passes on the JSPI build (both engines)
|
||||
test("a local move propagates A→B", async ({ context, testLogger }) => {
|
||||
const channel = `pcb-collab-e2e-${test.info().workerIndex}`;
|
||||
const bundle = path.resolve(__dirname, "../apps/kicad/collab-bundle.js");
|
||||
|
||||
|
|
|
|||
|
|
@ -510,7 +510,7 @@ test.describe("round trip: file → yjs → file", () => {
|
|||
// fixture (via + gr_text + segments) therefore still loses those items on the
|
||||
// rebuild side. Un-fixme when the envelope parse is solved. Run with
|
||||
// --grep-invert skipped to see the live diff.
|
||||
test.fixme(
|
||||
test( // re-enabled 2026-08-13: the asyncify-fragile envelope parse is gone with JSPI — passes both engines
|
||||
"pcbnew preserves items through a yjs round trip",
|
||||
async ({ context, testLogger }) => {
|
||||
const { orig, regen } = await roundTrip(context, PCB);
|
||||
|
|
|
|||
|
|
@ -157,10 +157,8 @@ test.describe("v2 items wire — lib_symbols travel (miss 08A)", () => {
|
|||
context,
|
||||
testLogger,
|
||||
}) => {
|
||||
test.skip(
|
||||
test.info().project.name.includes("firefox"),
|
||||
"two kicad_editor tabs exceed Firefox's per-process wasm budget",
|
||||
);
|
||||
// 2026-08-13: FF wasm-budget skip retired — the JSPI build fits two
|
||||
// editor tabs on Firefox 153; passes on kicad-firefox.
|
||||
|
||||
const room = `ysync-libsym-${test.info().workerIndex}`;
|
||||
const tabA = await context.newPage();
|
||||
|
|
|
|||
|
|
@ -353,10 +353,8 @@ for (const [cfg, label] of [
|
|||
// same SpiderMonkey wall playwright-kicad.config.ts documents for x86
|
||||
// CI, hit at 2× on ARM). V8 handles it: runs on chromium-ci in CI and
|
||||
// --project=chromium locally.
|
||||
test.skip(
|
||||
test.info().project.name.includes("firefox"),
|
||||
"two kicad_editor tabs exceed Firefox's per-process wasm budget",
|
||||
);
|
||||
// 2026-08-13: FF wasm-budget skip retired — the JSPI build fits two
|
||||
// editor tabs on Firefox 153; passes on kicad-firefox.
|
||||
|
||||
const room = `ysync-v2-${label}-bug01-${test.info().workerIndex}`;
|
||||
const tabA = await context.newPage();
|
||||
|
|
|
|||
Loading…
Reference in a new issue