From c423ef2e3408e95bc2e189f985654dcefb3d5553 Mon Sep 17 00:00:00 2001 From: Shakker Date: Tue, 12 May 2026 15:56:38 +0100 Subject: [PATCH] test: split tool card block checks --- ui/src/ui/chat/tool-cards.test.ts | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/ui/src/ui/chat/tool-cards.test.ts b/ui/src/ui/chat/tool-cards.test.ts index 3ec06771b07..a353d30203f 100644 --- a/ui/src/ui/chat/tool-cards.test.ts +++ b/ui/src/ui/chat/tool-cards.test.ts @@ -53,10 +53,14 @@ describe("tool-cards", () => { container, ); - expect(container.textContent).toContain("Tool input"); - expect(container.textContent).toContain("Tool output"); - expect(container.textContent).toContain("https://example.com"); - expect(container.textContent).toContain("Opened page"); + const blocks = Array.from(container.querySelectorAll(".chat-tool-card__block")); + expect( + blocks.map((block) => block.querySelector(".chat-tool-card__block-label")?.textContent), + ).toEqual(["Tool input", "Tool output"]); + expect(blocks.map((block) => block.querySelector("code")?.textContent)).toEqual([ + '{\n "url": "https://example.com"\n}', + "Opened page", + ]); }); it("renders expanded tool calls without an inline output block when no output is present", () => { @@ -74,10 +78,14 @@ describe("tool-cards", () => { container, ); - expect(container.textContent).toContain("Tool input"); - expect(container.textContent).toContain('"thread": true'); - expect(container.textContent).not.toContain("Tool output"); - expect(container.textContent).not.toContain("No output"); + const blocks = Array.from(container.querySelectorAll(".chat-tool-card__block")); + expect( + blocks.map((block) => block.querySelector(".chat-tool-card__block-label")?.textContent), + ).toEqual(["Tool input"]); + expect(blocks[0]?.querySelector("code")?.textContent).toBe( + '{\n "mode": "session",\n "thread": true\n}', + ); + expect(container.querySelector(".chat-tool-card__block-empty")).toBeNull(); }); it("labels collapsed tool calls with the display summary", () => { @@ -95,10 +103,12 @@ describe("tool-cards", () => { container, ); - expect(container.textContent).toContain("Sessions Spawn"); - expect(container.textContent).not.toContain("Tool input"); const summaryButton = container.querySelector("button.chat-tool-msg-summary"); + expect(summaryButton?.querySelector(".chat-tool-msg-summary__label")?.textContent).toBe( + "Sessions Spawn", + ); expect(summaryButton?.getAttribute("aria-expanded")).toBe("false"); + expect(container.querySelector(".chat-tool-msg-body")).toBeNull(); }); it("keeps raw details for legacy canvas tool output without rendering tool-row previews", () => {