import { page, withRun } from "../../../lib/fixtures.mjs"; export default { id: "oopif-scrollbars", routes: ["/oopif-scrollbars", "/oopif-scrollbars/frame", "/oopif-scrollbars/nested"], render({ pathname, runId, query }) { const root = pathname === "/oopif-scrollbars"; const nested = pathname.endsWith("/nested"); const mode = query.get("scrollbars") ?? "both"; return page({ title: "OOPIF scrollbar geometry regression", body: ` ${!root ? '' : ""} ${!nested ? `` : ""} `, script: ` history.scrollRestoration = "manual"; const child = document.querySelector("iframe"); if (child) { const url = new URL(${JSON.stringify(withRun(root ? "/oopif-scrollbars/frame" : "/oopif-scrollbars/nested", runId, { scrollbars: mode }))}, location.href); url.hostname = location.hostname === "127.0.0.1" ? "localhost" : "127.0.0.1"; child.src = url.href; } document.addEventListener("click", event => { const probe = event.target.closest("[data-geometry-probe]"); if (probe) browserEval.send("geometry.clicked", { probe: probe.id }); }); window.addEventListener("load", () => { scrollTo(${root ? "80, 240" : nested ? "10, 20" : "40, 100"}); requestAnimationFrame(() => requestAnimationFrame(() => { document.documentElement.dataset.geometryReady = "true"; if (!${root}) browserEval.send("geometry.scrollbars", { vertical: innerWidth > document.documentElement.clientWidth, horizontal: innerHeight > document.documentElement.clientHeight, }); browserEval.send("geometry.ready", { root: ${root} }); })); }); `, }); }, };