const { test } = require("node:test");
const assert = require("node:assert");
const { renderTreeToHtml, renderMenu, esc } = require("../lib/renderTree");
const { getPreset } = require("../lib/layoutTree");
const CTX = {
title: "T",
body: "
BODY
",
brand: { name: "Acme", logo: null },
menu: [{ items: [{ label: "Home", link: "/" }, { label: "Views", link: "/viewedit", subitems: [{ label: "New", link: "/viewedit/new" }] }] }],
alerts: [{ type: "success", msg: "saved" }],
currentUrl: "/",
};
function balanced(html) {
// crude tag-name-agnostic sanity: angle brackets balance
return (html.match(//g) || []).length;
}
test("topnav preset renders navbar + body slot + footer", () => {
const html = renderTreeToHtml(getPreset("topnav"), CTX);
assert.match(html, /