From 9d64823eb45bf0f9d6fabb00d4cdc5fe7f942a9b Mon Sep 17 00:00:00 2001 From: Naki Date: Sat, 5 Sep 2026 01:16:35 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=9A=20Fix=20flaky=20Bash=20poll=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/integration/bash-sessions.test.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/integration/bash-sessions.test.ts b/test/integration/bash-sessions.test.ts index 1936b44..e9b80c5 100644 --- a/test/integration/bash-sessions.test.ts +++ b/test/integration/bash-sessions.test.ts @@ -299,11 +299,19 @@ test('serializes concurrent polls without duplicating or losing output', async ( sessions.poll('owner', 'sandbox', id, { yieldTimeMs: 0 }), sessions.poll('owner', 'sandbox', id, { yieldTimeMs: 0 }), ]); - const exited = await sessions.poll('owner', 'sandbox', id, { yieldTimeMs: 1_000 }); - const output = [...concurrent, exited].map((result) => result.structuredContent?.output).join(''); + const results = [...concurrent]; + let final; + do { + final = await sessions.poll('owner', 'sandbox', id, { yieldTimeMs: 1_000 }); + results.push(final); + } while ( + final.structuredContent?.status === 'running' || + final.structuredContent?.has_more_output === true + ); + const output = results.map((result) => result.structuredContent?.output).join(''); expect(output).toBe('uniquelater'); - expect(exited.structuredContent?.status).toBe('exited'); + expect(final.structuredContent?.status).toBe('exited'); }); test('preserves UTF-8 characters across output chunks', async () => {