import { test, expect, beforeEach } from "bun:test"; import { Window } from "happy-dom"; import { NAV_RUNTIME } from "../src/nav-runtime.ts"; let win: any; let fetchCalls: { url: string; opts: any }[]; let nextHtml: string; function install(bodyHtml: string): void { win = new Window({ url: "https://example.test/" }); win.document.body.innerHTML = bodyHtml; fetchCalls = []; nextHtml = ""; const g = globalThis as any; g.window = win; g.document = win.document; g.history = win.history; g.location = win.location; g.DOMParser = win.DOMParser; g.CustomEvent = win.CustomEvent; g.fetch = win.fetch = (url: string, opts: any) => { fetchCalls.push({ url, opts }); return Promise.resolve({ redirected: false, url, headers: { get: (k: string) => k.toLowerCase() === "content-type" ? "text/html; charset=utf-8" : null, }, text: () => Promise.resolve(nextHtml), }); }; (0, eval)(NAV_RUNTIME); } const flush = () => new Promise((r) => setTimeout(r, 0)); beforeEach(() => { const g = globalThis as any; for (const k of [ "window", "document", "history", "location", "DOMParser", "CustomEvent", "fetch", ]) { delete g[k]; } }); test("intercepts an internal link click and swaps #app in place", async () => { install(`