From a68b450292a1dd56f434185ea5093c3cd3b23298 Mon Sep 17 00:00:00 2001 From: Barak Bloch Date: Fri, 17 Jul 2026 23:58:52 +0300 Subject: [PATCH] test(undo): give the 500-stroke soak a 30s timeout The soak does 500 real encode/decode iterations plus ~15 compactions; it runs in ~0.8s locally but is a genuine multi-second job on GitHub runners and flaked past vitest's default 5s per-test timeout on the 0.61.0 release CI (it passed when PR11 part 1 merged - it sits right at the boundary). The test is correct and not hung; raise its ceiling to 30s so runner load can't fail the release. Behaviour unchanged. --- tests/tile-capture.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/tile-capture.test.ts b/tests/tile-capture.test.ts index 10b2b0b..00f97ab 100644 --- a/tests/tile-capture.test.ts +++ b/tests/tile-capture.test.ts @@ -404,6 +404,9 @@ describe("TileShadow chain: undo/redo + evict-fold", () => { expect((await shadow.verify(0)).layerDiffs).toBe(0); // floor preserved }); + // A real 500-iteration soak with encode/decode + repeated compaction: seconds of + // genuine work, so it needs headroom over the default 5s per-test timeout on slow + // CI runners (it is not hung - just long). it("500-stroke soak stays under budget and the folded cap, still exact", async () => { const BUDGET = 4000; const host = new FakeHost(1024, 256, 1, ["L0"]); @@ -425,5 +428,5 @@ describe("TileShadow chain: undo/redo + evict-fold", () => { expect(chain.folded.length).toBeLessThanOrEqual(30); // boot-replay cap holds expect((await shadow.verify(0)).layerDiffs).toBe(0); // exact through every compaction expect(shadow.mismatches).toBe(0); - }); + }, 30_000); });