From 6466dbc0aec2a6f7c73fa2080a00bdbf73e9282d Mon Sep 17 00:00:00 2001 From: CuSO41108 <1737268347@qq.com> Date: Sun, 23 Aug 2026 18:25:56 +0800 Subject: [PATCH] test(mcp): stabilize refresh budget synchronization Generated-by: Codex --- packages/mcp/src/__tests__/manager.test.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/mcp/src/__tests__/manager.test.ts b/packages/mcp/src/__tests__/manager.test.ts index e6454196ba..e1789e0f7d 100644 --- a/packages/mcp/src/__tests__/manager.test.ts +++ b/packages/mcp/src/__tests__/manager.test.ts @@ -749,7 +749,9 @@ describe('McpClientManager E2E', { concurrency: false }, () => { ); }); - test('gives spaced list-changed notifications independent refresh budgets', async () => { + test('gives spaced list-changed notifications independent refresh budgets', { + timeout: 30_000, + }, async () => { const fixture = await createRemoteFixture('sse'); let now = 0; const manager = createManager({ now: () => now }); @@ -757,8 +759,23 @@ describe('McpClientManager E2E', { concurrency: false }, () => { for (let change = 1; change <= 4; change += 1) { now += 1_000; + const refreshCompleted = new Promise((resolve) => { + const unsubscribe = manager.onChange((status) => { + if ( + status.serverId !== 'remote' || + status.state !== 'connected' || + status.updatedAt !== now || + status.error !== undefined + ) { + return; + } + unsubscribe(); + resolve(); + }); + }); await fixture.notifyToolListChanged(); - await waitFor(() => countProtocolMethod(fixture, 'tools/list') === change + 1); + await refreshCompleted; + assert.equal(countProtocolMethod(fixture, 'tools/list'), change + 1); } assert.equal(manager.status('remote')?.error, undefined);