From e8d7fd4bcfc18e7d226a224e731fb2fd472d3cfc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 13:44:50 +1000 Subject: [PATCH 1/2] test(web): cancel queued animation frames during worker cleanup --- .../files/fileEditorLanguageReadiness.test.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts b/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts index 520c0fa82d0e..268aa0fca5b9 100644 --- a/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts +++ b/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts @@ -40,6 +40,7 @@ const source = "export const View = () =>
Ready
;"; let pool: WorkerPoolManager; let renderer: FileRenderer; let terminationPromises: Promise[]; +const pendingAnimationFrames = new Set>(); class WorkerTransport { private readonly worker = new NodeWorkerThreads.Worker( @@ -96,10 +97,18 @@ function firstEnter(highlighter: DiffsHighlighter, file: FileContents, language: beforeEach(async () => { terminationPromises = []; - vi.stubGlobal("requestAnimationFrame", (callback: FrameRequestCallback) => - setImmediate(() => callback(0)), - ); - vi.stubGlobal("cancelAnimationFrame", clearImmediate); + vi.stubGlobal("requestAnimationFrame", (callback: FrameRequestCallback) => { + const handle = setImmediate(() => { + pendingAnimationFrames.delete(handle); + callback(0); + }); + pendingAnimationFrames.add(handle); + return handle; + }); + vi.stubGlobal("cancelAnimationFrame", (handle: ReturnType) => { + pendingAnimationFrames.delete(handle); + clearImmediate(handle); + }); vi.stubGlobal("window", { matchMedia: () => ({ matches: true }) }); await disposeHighlighter(); pool = new WorkerPoolManager( @@ -116,6 +125,8 @@ afterEach(async () => { pool?.terminate(); await Promise.all(terminationPromises); await disposeHighlighter(); + for (const handle of pendingAnimationFrames) clearImmediate(handle); + pendingAnimationFrames.clear(); vi.unstubAllGlobals(); }); From 4c80bf57b2d245b7b5a81296ae8eb2ffa7d1bd89 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 10:13:41 +1000 Subject: [PATCH 2/2] test(server): match V2 tool output redaction in retention coverage --- apps/server/src/orchestration-v2/FoundationPersistence.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server/src/orchestration-v2/FoundationPersistence.test.ts b/apps/server/src/orchestration-v2/FoundationPersistence.test.ts index 26b314747dd2..23a9a88eb78f 100644 --- a/apps/server/src/orchestration-v2/FoundationPersistence.test.ts +++ b/apps/server/src/orchestration-v2/FoundationPersistence.test.ts @@ -422,7 +422,7 @@ it.layer(TestLayer)("orchestration V2 foundation persistence", (it) => { if (stored.event.type !== "turn-item.updated") return; assert.equal(stored.event.payload.type, "dynamic_tool"); if (stored.event.payload.type !== "dynamic_tool") return; - assert.deepInclude(stored.event.payload.output, { truncated: true }); + assert.notProperty(stored.event.payload, "output"); } const persisted = yield* store.read({ threadId: thread.id }).pipe(Stream.runCollect); const fullEvent = persisted.find(