From 57b8a69a420392513d9353e18db5889864d18b07 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Thu, 15 Oct 2026 21:21:50 +0200 Subject: [PATCH] test(markdown): check large HTML table output without observing built-ins --- .../src/components/markdown/renderer.test.ts | 36 ++++--------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/packages/app/src/components/markdown/renderer.test.ts b/packages/app/src/components/markdown/renderer.test.ts index 4f4dcccf2a..45e6bc5e41 100644 --- a/packages/app/src/components/markdown/renderer.test.ts +++ b/packages/app/src/components/markdown/renderer.test.ts @@ -403,34 +403,12 @@ it("reserves pending image geometry until decode succeeds and collapses only con ); }); -it("normalizes a large HTML table with linear bounded-source slicing", () => { +it("normalizes a large HTML table into one block per row", () => { const cell = "cell".repeat(8); - const measure = (rows: number) => { - const source = `${``.repeat(rows)}
${cell}${cell}
`; - const originalSlice = String.prototype.slice; - let inspectedCharacters = 0; - // Observe real slices without changing their results. Repeated source.slice(0, offset) - // prefix scans grow quadratically; inspecting only each new gap grows linearly. - // eslint-disable-next-line no-extend-native -- Test-only observation, restored in finally. - String.prototype.slice = function (start, end) { - const result = originalSlice.call(this, start, end); - if (String(this) === source && end !== undefined) { - inspectedCharacters += result.length; - } - return result; - }; - let rendered: string; - try { - rendered = normalizeMarkdownHtml(source); - } finally { - // eslint-disable-next-line no-extend-native -- Restore the observed built-in unchanged. - String.prototype.slice = originalSlice; - } - expect(rendered.split("\n\n")).toHaveLength(rows); - expect(rendered.startsWith(`${cell} ${cell}`)).toBe(true); - return inspectedCharacters; - }; - const baseline = measure(200); - expect(baseline).toBeGreaterThan(0); - expect(measure(800)).toBeLessThanOrEqual(baseline * 4); + const rows = 8000; + const source = `${``.repeat(rows)}
${cell}${cell}
`; + const rendered = normalizeMarkdownHtml(source); + expect(rendered.split("\n\n")).toHaveLength(rows); + expect(rendered.startsWith(`${cell} ${cell}`)).toBe(true); + expect(rendered.endsWith(`${cell} ${cell}`)).toBe(true); });