diff --git a/packages/workflow/workflow-worker-thread/tests/workflow-worker-thread.spec.ts b/packages/workflow/workflow-worker-thread/tests/workflow-worker-thread.spec.ts index 6b819aa367..acd2702dab 100644 --- a/packages/workflow/workflow-worker-thread/tests/workflow-worker-thread.spec.ts +++ b/packages/workflow/workflow-worker-thread/tests/workflow-worker-thread.spec.ts @@ -23,11 +23,13 @@ function fakeParent(): Agent { vi.setConfig({ testTimeout: 30_000 }) /** - * Wait up to 10 seconds for CPU-bound worker startup or cross-thread delivery on contended CI. - * Host reactions after an observed event use explicit tight overrides, so this generous startup + * Wait up to 60 seconds for CPU-bound worker startup or cross-thread delivery on contended CI: + * startup is the only environment-sensitive phase of a same-process worker exchange, and the + * loaded self-hosted Windows pool stretches the tsx-in-worker boot past 10 seconds. Host + * reactions after an observed event use explicit tight overrides, so this generous startup * allowance cannot hide multi-second reap regressions. */ -function waitFor(assertion: () => void, timeout = 10_000): Promise { +function waitFor(assertion: () => void, timeout = 60_000): Promise { return vi.waitFor(assertion, { timeout, interval: 50 }) } @@ -181,7 +183,9 @@ async function run(ctx: Context, parent: Agent, source: { script: string; meta: } } -describe('dsh-workflow-worker-thread', () => { +// The per-test cap leaves room for one generous startup wait plus the tight +// post-event assertions; explicit narrower timeouts inside stay authoritative. +describe('dsh-workflow-worker-thread', { timeout: 120_000 }, () => { describe('script execution over a real worker thread', () => { it('runs a script end-to-end: agent() text results, phases, log, args, return value, events', async () => { const { ctx, parent, provider } = await setup({ reply: (_request, index) => text(`answer-${index}`) })