From 3b1781022ffc0c85f1364c8bb46ffb6cc92439b6 Mon Sep 17 00:00:00 2001 From: fkukuck Date: Wed, 29 Jul 2026 14:36:37 +0200 Subject: [PATCH] feat(web): preview Markdown run files --- .../app/components/markdown.test.tsx | 27 +++++++++++ apps/fabro-web/app/components/markdown.tsx | 47 ++++++++++++++++++ .../components/stage-renderers/primitives.tsx | 48 +------------------ .../app/routes/run-files.render.test.tsx | 33 +++++++++++++ apps/fabro-web/app/routes/run-files.tsx | 38 +++++++++++++++ 5 files changed, 147 insertions(+), 46 deletions(-) create mode 100644 apps/fabro-web/app/components/markdown.test.tsx create mode 100644 apps/fabro-web/app/components/markdown.tsx diff --git a/apps/fabro-web/app/components/markdown.test.tsx b/apps/fabro-web/app/components/markdown.test.tsx new file mode 100644 index 000000000..722fd9a05 --- /dev/null +++ b/apps/fabro-web/app/components/markdown.test.tsx @@ -0,0 +1,27 @@ +import { describe, expect, test } from "bun:test"; +import { renderToStaticMarkup } from "react-dom/server"; + +import { Markdown } from "./markdown"; + +describe("Markdown", () => { + test("renders GitHub-flavored Markdown", () => { + const html = renderToStaticMarkup( + , + ); + + expect(html).toContain("

Plan

"); + expect(html).toContain('type="checkbox"'); + expect(html).toContain("Review this"); + }); + + test("strips raw HTML and unsafe URLs", () => { + const html = renderToStaticMarkup( + alert("no")\n\n[bad](javascript:alert("no"))'} + />, + ); + + expect(html).not.toContain("