// @vitest-environment jsdom import { describe, expect, it } from "vitest"; import { parseTimelineFromDOM, createImplicitTimelineLayersFromDOM } from "./timelineDOM"; function makeDoc(html: string): Document { const d = document.implementation.createHTMLDocument(); d.body.innerHTML = html; return d; } describe("parseTimelineFromDOM — hfId from data-hf-id", () => { it("harvests hfId from a data-start element that has data-hf-id", () => { const doc = makeDoc(`
`); const elements = parseTimelineFromDOM(doc, 10); const hero = elements.find((el) => el.domId === "hero"); expect(hero).toBeDefined(); expect(hero?.hfId).toBe("hf-abc123"); }); it("leaves hfId undefined when element has no data-hf-id", () => { const doc = makeDoc(`
`); const elements = parseTimelineFromDOM(doc, 10); const plain = elements.find((el) => el.domId === "plain"); expect(plain).toBeDefined(); expect(plain?.hfId).toBeUndefined(); }); it("ignores runtime-owned color grading canvases with timing attributes", () => { const doc = makeDoc(`
`); const elements = parseTimelineFromDOM(doc, 10); expect(elements.map((el) => el.tag)).toEqual(["img"]); }); }); describe("createImplicitTimelineLayersFromDOM — hfId from data-hf-id", () => { it("harvests hfId from an implicit layer child that has data-hf-id", () => { const doc = makeDoc(`
`); const layers = createImplicitTimelineLayersFromDOM(doc, 10); const layer = layers.find((el) => el.domId === "layer"); expect(layer).toBeDefined(); expect(layer?.hfId).toBe("hf-xyz789"); }); it("ignores runtime-owned color grading canvases as implicit layers", () => { const doc = makeDoc(`
`); const layers = createImplicitTimelineLayersFromDOM(doc, 5); expect(layers).toEqual([]); }); });