From f32831bd5ac3ceb3db5d2f16efee02e01d2f22a8 Mon Sep 17 00:00:00 2001 From: Dotta Date: Fri, 24 Apr 2026 07:40:57 -0500 Subject: [PATCH] Broaden rich editor HTML tag regression --- ui/src/components/MarkdownEditor.test.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ui/src/components/MarkdownEditor.test.tsx b/ui/src/components/MarkdownEditor.test.tsx index 4d46cc3aa37..aac6345cd86 100644 --- a/ui/src/components/MarkdownEditor.test.tsx +++ b/ui/src/components/MarkdownEditor.test.tsx @@ -22,6 +22,10 @@ const mdxEditorMockState = vi.hoisted(() => ({ suppressHtmlProcessingValues: [] as boolean[], })); +function containsHtmlLikeTag(markdown: string) { + return /<\/?[A-Za-z][A-Za-z0-9:-]*(?:\s[^>]*)?\/?>/.test(markdown); +} + vi.mock("@mdxeditor/editor", async () => { const React = await import("react"); @@ -63,7 +67,7 @@ vi.mock("@mdxeditor/editor", async () => { }), []); React.useEffect(() => { - if (!suppressHtmlProcessing && (markdown.includes(""))) { + if (!suppressHtmlProcessing && containsHtmlLikeTag(markdown)) { setContent(""); onError?.({ error: "Error parsing markdown: HTML-like formatting requires suppressHtmlProcessing", @@ -260,13 +264,13 @@ describe("MarkdownEditor", () => { }); }); - it("keeps LLM wrapper tags in the rich editor instead of falling back to raw source", async () => { + it("keeps arbitrary HTML-like tags in the rich editor instead of falling back to raw source", async () => { const root = createRoot(container); await act(async () => { root.render( \n## My take\n\nBenchmark notes\n"} + value={'
\n## My take\n\n

Benchmark notes

\n
'} onChange={() => {}} placeholder="Markdown body" />,