From c47c4b35746d606e41a35eff0481688ecf3e2541 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 17 Apr 2026 19:11:58 +0100 Subject: [PATCH] test: trim remaining ui browser cases --- ui/src/ui/markdown.test.ts | 10 ++++++---- ui/src/ui/navigation.browser.test.ts | 15 ++++++--------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ui/src/ui/markdown.test.ts b/ui/src/ui/markdown.test.ts index 473b1fc07b3..246bffa6192 100644 --- a/ui/src/ui/markdown.test.ts +++ b/ui/src/ui/markdown.test.ts @@ -424,8 +424,10 @@ describe("toSanitizedMarkdownHtml", () => { describe("ReDoS protection", () => { it("does not throw on deeply nested emphasis markers (#36213)", () => { const nested = "*".repeat(500) + "text" + "*".repeat(500); - expect(() => toSanitizedMarkdownHtml(nested)).not.toThrow(); - const html = toSanitizedMarkdownHtml(nested); + let html = ""; + expect(() => { + html = toSanitizedMarkdownHtml(nested); + }).not.toThrow(); expect(html).toContain("text"); }); @@ -467,7 +469,7 @@ describe("toSanitizedMarkdownHtml", () => { it("uses plain text fallback for oversized content", () => { // MARKDOWN_PARSE_LIMIT is 40_000 chars const input = Array.from( - { length: 320 }, + { length: 220 }, (_, i) => `Paragraph ${i + 1}: ${"Long plain-text reply. ".repeat(8)}`, ).join("\n\n"); const html = toSanitizedMarkdownHtml(input); @@ -475,7 +477,7 @@ describe("toSanitizedMarkdownHtml", () => { }); it("preserves indentation in plain text fallback", () => { - const input = `${"Header line\n".repeat(5000)}\n indented log line\n deeper indent`; + const input = `${"Header line\n".repeat(3400)}\n indented log line\n deeper indent`; const html = toSanitizedMarkdownHtml(input); expect(html).toContain('class="markdown-plain-text-fallback"'); expect(html).toContain(" indented log line"); diff --git a/ui/src/ui/navigation.browser.test.ts b/ui/src/ui/navigation.browser.test.ts index 046921f6b8a..cc8b6b65c33 100644 --- a/ui/src/ui/navigation.browser.test.ts +++ b/ui/src/ui/navigation.browser.test.ts @@ -173,7 +173,7 @@ describe("control UI routing", () => { expect(header.querySelector(".nav-collapse-toggle")).not.toBeNull(); }); - it("preserves the active session when opening chat from sidebar navigation", async () => { + it("preserves session navigation and keeps focus mode scoped to chat", async () => { const app = mountApp("/sessions?session=agent:main:subagent:task-123"); await app.updateComplete; @@ -186,11 +186,6 @@ describe("control UI routing", () => { expect(app.sessionKey).toBe("agent:main:subagent:task-123"); expect(window.location.pathname).toBe("/chat"); expect(window.location.search).toBe("?session=agent%3Amain%3Asubagent%3Atask-123"); - }); - - it("keeps focus mode scoped to the chat tab", async () => { - const app = mountApp("/chat"); - await app.updateComplete; const shell = app.querySelector(".shell"); expect(shell).not.toBeNull(); @@ -203,9 +198,11 @@ describe("control UI routing", () => { await app.updateComplete; expect(shell?.classList.contains("shell--chat-focus")).toBe(true); - const link = app.querySelector('a.nav-item[href="/channels"]'); - expect(link).not.toBeNull(); - link?.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true, button: 0 })); + const channelsLink = app.querySelector('a.nav-item[href="/channels"]'); + expect(channelsLink).not.toBeNull(); + channelsLink?.dispatchEvent( + new MouseEvent("click", { bubbles: true, cancelable: true, button: 0 }), + ); await app.updateComplete; expect(app.tab).toBe("channels");