import { describe, expect, it } from "vitest" import { EMAIL_PREVIEW_HEIGHT_BUFFER, EMAIL_PREVIEW_MIN_IFRAME_HEIGHT, measureEmailPreviewIframeHeight, } from "@/lib/email-preview-iframe-height" function makeDoc(html: string) { const doc = document.implementation.createHTMLDocument("preview") doc.body.innerHTML = `
${html}
` return doc } describe("measureEmailPreviewIframeHeight", () => { it("returns stable rounded height for short content", () => { const doc = makeDoc('

Hello

') const first = measureEmailPreviewIframeHeight(doc) const second = measureEmailPreviewIframeHeight(doc) expect(first).toBe(second) expect(first).toBeGreaterThanOrEqual(EMAIL_PREVIEW_MIN_IFRAME_HEIGHT) }) it("prefers visible bounds over inflated scrollHeight", () => { const doc = makeDoc(`
Visible block
Hidden tail
`) const height = measureEmailPreviewIframeHeight(doc) expect(height).toBeLessThan(200 + EMAIL_PREVIEW_HEIGHT_BUFFER) }) it("does not flip between bound and scroll estimates on repeat measure", () => { const doc = makeDoc(`

Line one

Line two

Line three

`) const readings = Array.from({ length: 6 }, () => measureEmailPreviewIframeHeight(doc) ) expect(new Set(readings).size).toBe(1) }) })