ci: de-flake follow spec — sequence on A landing before asserting B tracks
"B never tracked the second viewport move" ate three v0.1.21 release attempts (2026-08-01) while the same build passed 10/10 locally, including under 4-worker contention. The T2 block asserted B's convergence without first confirming A's second fit LANDED — the T1 block has that sequencing point, T2 didn't — so on a starved CI box any A-side fit delay was misreported as a B-side tracking failure, and B's 30s window burned while A was still moving. Mirror the T1 pattern: poll A onto its target, then start B's clock. Verified 4/4 green locally (web-chromium, 2 workers). Reminder that cost 20 minutes tonight: web/standalone/.env poisons local web e2e (untitled/title mismatches) — stash it before local runs (standalone-env-e2e-poison). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019SE4o46Lnq3hF574FFq8x4
This commit is contained in:
parent
e561507898
commit
208cb67959
1 changed files with 11 additions and 1 deletions
|
|
@ -98,9 +98,19 @@ test('B follows A: viewport mirrors, then local input breaks the follow', async
|
||||||
})
|
})
|
||||||
.toBe(true);
|
.toBe(true);
|
||||||
|
|
||||||
// A moves again → B tracks.
|
// A moves again → B tracks. Sequence on A actually LANDING first (same
|
||||||
|
// pattern as T1): without it, any A-side fit delay on a starved CI box gets
|
||||||
|
// misreported as "B never tracked" — the exact flake that ate three release
|
||||||
|
// runs on 2026-08-01 (green 10/10 locally on the same build). B's window
|
||||||
|
// starts only once A's rect demonstrably went out.
|
||||||
const T2 = { cx: 180e6, cy: 120e6, hw: 25e6, hh: 20e6 };
|
const T2 = { cx: 180e6, cy: 120e6, hw: 25e6, hh: 20e6 };
|
||||||
await fit(a, T2.cx, T2.cy, T2.hw, T2.hh);
|
await fit(a, T2.cx, T2.cy, T2.hw, T2.hh);
|
||||||
|
await expect
|
||||||
|
.poll(async () => near(await viewport(a), T2.cx, T2.cy, 1e6), {
|
||||||
|
timeout: 20000,
|
||||||
|
message: 'A never landed on its second fit target',
|
||||||
|
})
|
||||||
|
.toBe(true);
|
||||||
await expect
|
await expect
|
||||||
.poll(async () => near(await viewport(b), T2.cx, T2.cy, T2.hw * 0.02), {
|
.poll(async () => near(await viewport(b), T2.cx, T2.cy, T2.hw * 0.02), {
|
||||||
timeout: 30000,
|
timeout: 30000,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue