From 653819d383731bb7ce31cedcaa389b13cf675add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20T=C3=B6rcsv=C3=A1ri?= Date: Sat, 1 Aug 2026 20:50:14 +0200 Subject: [PATCH] ci: widen drift-trio convergence windows for starved CI boxes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit drift-trio-scenarios S4/S5 flaked 4× across this week's CI runs (three wasm instances + full-suite load on the runner) while passing 77/78 locally under stress — and the one local miss carried zero guard beacons, i.e. the same under-load convergence shortfall, not a code path. Same treatment as the follow spec: condition-based polls keep their shape, windows grow to what a starved box actually needs (inline S4/S5 polls 20s→60s, waitAllContain 30s→90s, settleConverged 30s→90s). Local convergence stays ~1s. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019SE4o46Lnq3hF574FFq8x4 --- tests/kicad/drift-trio-scenarios.spec.ts | 6 +++--- tests/kicad/utils/trio.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/kicad/drift-trio-scenarios.spec.ts b/tests/kicad/drift-trio-scenarios.spec.ts index c610429..35e8e22 100644 --- a/tests/kicad/drift-trio-scenarios.spec.ts +++ b/tests/kicad/drift-trio-scenarios.spec.ts @@ -53,7 +53,7 @@ function skipFirefox(): void { } /** Poll until every tab's silent save contains `marker`. */ -async function waitAllContain(set: TabSet, cfg: ToolCfg, marker: string, timeout = 30000): Promise { +async function waitAllContain(set: TabSet, cfg: ToolCfg, marker: string, timeout = 90000): Promise { for (const [label, page] of set.tabs) { await expect .poll(async () => (await modelText(page, cfg)).includes(marker), { @@ -219,7 +219,7 @@ for (const ops of [SCH_OPS, PCB_OPS]) { for (const [tabLabel, p] of trio.tabs) { await expect .poll(async () => /s4-from-[AB]/.test(await modelText(p, cfg)), { - timeout: 20000, + timeout: 60000, intervals: [400], message: `${tabLabel} must receive one of the racing values`, }) @@ -273,7 +273,7 @@ for (const ops of [SCH_OPS, PCB_OPS]) { for (const [tabLabel, p] of trio.tabs) { await expect .poll(async () => (await modelText(p, cfg)).includes("s5-tmp"), { - timeout: 20000, + timeout: 60000, intervals: [400], message: `${tabLabel} must lose the undone value`, }) diff --git a/tests/kicad/utils/trio.ts b/tests/kicad/utils/trio.ts index 11827b7..8288c3b 100644 --- a/tests/kicad/utils/trio.ts +++ b/tests/kicad/utils/trio.ts @@ -419,7 +419,7 @@ function firstDiff(a: string, b: string): string { * Poll until every tab's silent save is byte-identical. The convergence gate * between scenario steps — bounded poll, no blind sleeps (tests/TESTING.md). */ -export async function settleConverged(trio: TabSet, cfg: ToolCfg, timeout = 30000): Promise { +export async function settleConverged(trio: TabSet, cfg: ToolCfg, timeout = 90000): Promise { await expect .poll( async () => {