import { readFile } from "node:fs/promises"; import vm from "node:vm"; const read = (path) => readFile(path, "utf8"); const hookUtilsModule = { exports: {} }; vm.runInNewContext(await read("apps/workshop/pb_hooks/workshop-utils.js"), { module: hookUtilsModule }); const socialHtml = hookUtilsModule.exports.renderWorkshopSocialHtml( 'Homarr documentation', { title: "Ocean · Homarr Workshop", description: "Custom CSS for Homarr. Calm & readable.", url: "https://preview.example/workshop/abc", image: "https://preview.example/api/files/submissions/abc/preview.png", section: "Custom CSS", submissionTitle: "Ocean ", }, ); for (const expected of [ "Ocean <Glow> · Homarr Workshop", 'property="og:description" content="Custom CSS for Homarr. Calm & readable."', 'rel="canonical" href="https://preview.example/workshop/abc"', 'property="og:image" content="https://preview.example/api/files/submissions/abc/preview.png"', 'name="twitter:card" content="summary_large_image"', 'property="article:section" content="Custom CSS"', ]) { if (!socialHtml.includes(expected)) throw new Error(`Workshop social metadata is missing: ${expected}`); } if (socialHtml.includes("Homarr documentation")) throw new Error("Workshop social metadata must replace generic tags"); console.log("Workshop social metadata rendering passed");