From 759bed7dae69d71c6c8df415e8c679bd9a4188f9 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 14 Apr 2026 09:05:29 -0500 Subject: [PATCH] test: add regression coverage for thinking/chat visibility Add a regression test for #4181 to ensure assistant-message caps thinking block height when text content is present. --- ...istant-message-thinking-visibility.test.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/tests/assistant-message-thinking-visibility.test.ts diff --git a/src/tests/assistant-message-thinking-visibility.test.ts b/src/tests/assistant-message-thinking-visibility.test.ts new file mode 100644 index 000000000..29fc356ee --- /dev/null +++ b/src/tests/assistant-message-thinking-visibility.test.ts @@ -0,0 +1,34 @@ +// Regression test for #4181: +// When assistant messages include both thinking + text, cap visible thinking +// lines so question/chat text remains visible without toggling thinking off. +import test from "node:test"; +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +const assistantMessagePath = join( + process.cwd(), + "packages", + "pi-coding-agent", + "src", + "modes", + "interactive", + "components", + "assistant-message.ts", +); + +test("assistant-message caps thinking block height when text content is present", () => { + const src = readFileSync(assistantMessagePath, "utf-8"); + + assert.match( + src, + /const hasTextContent = message\.content\.some\(\(c\) => c\.type === "text" && c\.text\.trim\(\)\.length > 0\);/, + "assistant-message should detect text presence in mixed thinking+text messages", + ); + + assert.match( + src, + /if \(hasTextContent\)\s*\{\s*thinkingMarkdown\.maxLines = 8;\s*\}/s, + "assistant-message should cap visible thinking lines when assistant text also exists", + ); +});