From 52d94f740a845751830965bbd705770485b59ed9 Mon Sep 17 00:00:00 2001 From: mkorwel Date: Thu, 16 Apr 2026 21:58:40 +0000 Subject: [PATCH] test(cli): fix TextInput timeouts and run only it in CI --- .github/workflows/ci-bundling-trial.yml | 2 +- .../ui/components/shared/TextInput.test.tsx | 39 ++++++++++++------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci-bundling-trial.yml b/.github/workflows/ci-bundling-trial.yml index 3d247a888b..a1a1d8ea73 100644 --- a/.github/workflows/ci-bundling-trial.yml +++ b/.github/workflows/ci-bundling-trial.yml @@ -27,7 +27,7 @@ jobs: mode: 'source' - name: 'Run Suspect Tests' - run: 'npx vitest run --pool=forks packages/cli/src/test-utils/render.test.tsx packages/cli/src/ui/App.test.tsx packages/cli/src/test-utils/AppRig.test.tsx packages/cli/src/ui/components/SettingsDialog.test.tsx packages/cli/src/ui/components/messages/DiffRenderer.test.tsx packages/cli/src/ui/components/messages/ThinkingMessage.test.tsx packages/cli/src/ui/components/messages/ToolResultDisplay.test.tsx packages/cli/src/ui/components/messages/ToolResultDisplayOverflow.test.tsx packages/cli/src/ui/components/messages/UserMessage.test.tsx packages/cli/src/ui/components/shared/SearchableList.test.tsx packages/cli/src/ui/components/shared/TextInput.test.tsx packages/cli/src/ui/components/views/ExtensionRegistryView.test.tsx' + run: 'npx vitest run --pool=forks packages/cli/src/ui/components/shared/TextInput.test.tsx' shell: 'bash' diff --git a/packages/cli/src/ui/components/shared/TextInput.test.tsx b/packages/cli/src/ui/components/shared/TextInput.test.tsx index 6c590153ba..8e3bb2d00d 100644 --- a/packages/cli/src/ui/components/shared/TextInput.test.tsx +++ b/packages/cli/src/ui/components/shared/TextInput.test.tsx @@ -170,8 +170,11 @@ describe.sequential('TextInput', () => { }); it('handles character input', async () => { - const { waitUntilReady, unmount } = await render( + const { unmount } = await render( , + undefined, + undefined, + true, ); const keypressHandler = mockedUseKeypress.mock.calls[0][0]; @@ -185,17 +188,18 @@ describe.sequential('TextInput', () => { sequence: 'a', }); }); - await waitUntilReady(); - expect(mockBuffer.handleInput).toHaveBeenCalledWith({ - name: 'a', - shift: false, - alt: false, - ctrl: false, - cmd: false, - sequence: 'a', + await waitFor(() => { + expect(mockBuffer.handleInput).toHaveBeenCalledWith({ + name: 'a', + shift: false, + alt: false, + ctrl: false, + cmd: false, + sequence: 'a', + }); + expect(mockBuffer.text).toBe('a'); }); - expect(mockBuffer.text).toBe('a'); unmount(); }); @@ -353,8 +357,11 @@ describe.sequential('TextInput', () => { it('calls onCancel on escape', async () => { vi.useFakeTimers(); - const { waitUntilReady, unmount } = await render( + const { unmount } = await render( , + undefined, + undefined, + true, ); const keypressHandler = mockedUseKeypress.mock.calls[0][0]; @@ -368,10 +375,6 @@ describe.sequential('TextInput', () => { sequence: '', }); }); - // Escape key has a 50ms timeout in KeypressContext, so we need to wrap waitUntilReady in act - await act(async () => { - await waitUntilReady(); - }); await waitFor(() => { expect(onCancel).toHaveBeenCalled(); @@ -419,6 +422,9 @@ describe.sequential('TextInput', () => { it('registers mouse click handler for free-form text input', async () => { const { unmount } = await render( , + undefined, + undefined, + true, ); expect(mockedUseMouseClick).toHaveBeenCalledWith( @@ -438,6 +444,9 @@ describe.sequential('TextInput', () => { onSubmit={onSubmit} onCancel={onCancel} />, + undefined, + undefined, + true, ); expect(mockedUseMouseClick).toHaveBeenCalledWith(