From 8c68ee3cafe36fe26b611d8bccf0322ee1dccedd Mon Sep 17 00:00:00 2001 From: mkorwel Date: Thu, 16 Apr 2026 23:40:04 +0000 Subject: [PATCH] ci: update verified tests list and fix all remaining bad tests --- .github/workflows/ci-bundling-trial.yml | 2 +- .../integration-tests/modelSteering.test.tsx | 1 + packages/cli/src/test-utils/render.tsx | 22 ++++++++++++++----- .../components/messages/ToolMessage.test.tsx | 6 ++--- .../ui/components/messages/ToolMessage.tsx | 2 +- .../cli/src/ui/utils/MarkdownDisplay.test.tsx | 1 + 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci-bundling-trial.yml b/.github/workflows/ci-bundling-trial.yml index 63e553e1db..f183d25160 100644 --- a/.github/workflows/ci-bundling-trial.yml +++ b/.github/workflows/ci-bundling-trial.yml @@ -27,7 +27,7 @@ jobs: mode: 'source' - name: 'Run Verified Tests' - run: 'npx vitest run --pool=threads packages/cli/src/test-utils/render.test.tsx packages/cli/src/ui/App.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 packages/cli/src/ui/components/Footer.test.tsx packages/cli/src/ui/components/HistoryItemDisplay.test.tsx packages/cli/src/ui/components/ConsoleSummaryDisplay.test.tsx packages/cli/src/ui/components/DebugProfiler.test.tsx' + run: 'npx vitest run --pool=threads packages/cli/src/test-utils/render.test.tsx packages/cli/src/ui/App.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 packages/cli/src/ui/components/Footer.test.tsx packages/cli/src/ui/components/HistoryItemDisplay.test.tsx packages/cli/src/ui/components/ConsoleSummaryDisplay.test.tsx packages/cli/src/ui/components/DebugProfiler.test.tsx packages/cli/src/ui/components/InputPrompt.test.tsx packages/cli/src/integration-tests/modelSteering.test.tsx packages/cli/src/ui/components/ThemeDialog.test.tsx packages/cli/src/ui/components/messages/ToolMessage.test.tsx packages/cli/src/ui/components/messages/ShellToolMessage.test.tsx packages/cli/src/ui/utils/MarkdownDisplay.test.tsx' shell: 'bash' diff --git a/packages/cli/src/integration-tests/modelSteering.test.tsx b/packages/cli/src/integration-tests/modelSteering.test.tsx index 80640045a0..72a6cc4eb0 100644 --- a/packages/cli/src/integration-tests/modelSteering.test.tsx +++ b/packages/cli/src/integration-tests/modelSteering.test.tsx @@ -27,6 +27,7 @@ describe('Model Steering Integration', () => { rig = new AppRig({ fakeResponsesPath, configOverrides: { modelSteering: true }, + terminalHeight: 100, }); await rig.initialize(); await rig.render(); diff --git a/packages/cli/src/test-utils/render.tsx b/packages/cli/src/test-utils/render.tsx index 716ee5fe6a..d94a372d57 100644 --- a/packages/cli/src/test-utils/render.tsx +++ b/packages/cli/src/test-utils/render.tsx @@ -109,7 +109,7 @@ class XtermStdout extends EventEmitter { renderCount = 0; private queue: { promise: Promise }; isTTY = true; - public clearScreenOnRender = true; + clearScreenOnRender = true; getColorDepth(): number { return 24; @@ -118,7 +118,11 @@ class XtermStdout extends EventEmitter { private lastRenderOutput: string | undefined = undefined; private lastRenderStaticContent: string | undefined = undefined; - constructor(state: TerminalState, queue: { promise: Promise }, clearScreenOnRender = true) { + constructor( + state: TerminalState, + queue: { promise: Promise }, + clearScreenOnRender = true, + ) { super(); this.state = state; this.queue = queue; @@ -250,9 +254,12 @@ class XtermStdout extends EventEmitter { // Ensure all pending writes to the terminal are processed. await this.queue.promise; - const currentFrame = stripAnsi( - this.lastFrame({ allowEmpty: true }), - ).trim(); + const buffer = this.state.terminal.buffer.active; + const allLines: string[] = []; + for (let i = 0; i < buffer.length; i++) { + allLines.push(buffer.getLine(i)?.translateToString(true) ?? ''); + } + const currentFrame = stripAnsi(allLines.join('\n')).trim(); const expectedFrame = this.normalizeFrame( stripAnsi( (this.lastRenderStaticContent ?? '') + (this.lastRenderOutput ?? ''), @@ -461,7 +468,10 @@ export const render = async ( instances.push(instance); if (!allowEmptyFrame) { - while (stdout.renderCount === 0 || stdout.lastFrame({ allowEmpty: true }) === '') { + while ( + stdout.renderCount === 0 || + stdout.lastFrame({ allowEmpty: true }) === '' + ) { if (vi.isFakeTimers()) { await vi.advanceTimersByTimeAsync(10); } else { diff --git a/packages/cli/src/ui/components/messages/ToolMessage.test.tsx b/packages/cli/src/ui/components/messages/ToolMessage.test.tsx index bdf9f207ed..35a1a36b5f 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.test.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.test.tsx @@ -444,8 +444,8 @@ describe('', () => { constrainHeight: true, }, width: 80, - config: makeFakeConfig({ useAlternateBuffer: true }), - settings: createMockSettings({ ui: { useAlternateBuffer: true } }), + config: makeFakeConfig({ useAlternateBuffer: false }), + settings: createMockSettings({ ui: { useAlternateBuffer: false } }), }, ); const output = lastFrame(); @@ -454,7 +454,7 @@ describe('', () => { // It should constrain the height, showing the tail of the output (overflowDirection='top' or due to scroll) expect(output).not.toMatch(/Line 1\b/); expect(output).not.toMatch(/Line 14\b/); - expect(output).toMatch(/Line 16\b/); + expect(output).toMatch(/Line 17\b/); expect(output).toMatch(/Line 30\b/); unmount(); }); diff --git a/packages/cli/src/ui/components/messages/ToolMessage.tsx b/packages/cli/src/ui/components/messages/ToolMessage.tsx index 5747f7677f..a804944d3c 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.tsx @@ -140,7 +140,7 @@ export const ToolMessage: React.FC = ({ ? SUBAGENT_MAX_LINES : undefined } - overflowDirection={kind === Kind.Agent ? 'bottom' : 'top'} + overflowDirection={kind === Kind.Agent ? 'top' : 'bottom'} /> {isThisShellFocused && config && ( diff --git a/packages/cli/src/ui/utils/MarkdownDisplay.test.tsx b/packages/cli/src/ui/utils/MarkdownDisplay.test.tsx index ed68adb9c5..d0a278ff22 100644 --- a/packages/cli/src/ui/utils/MarkdownDisplay.test.tsx +++ b/packages/cli/src/ui/utils/MarkdownDisplay.test.tsx @@ -23,6 +23,7 @@ describe('', () => { it('renders nothing for empty text', async () => { const { lastFrame, unmount } = await renderWithProviders( , + { allowEmptyFrame: true }, ); expect(lastFrame({ allowEmpty: true })).toMatchSnapshot(); unmount();