import { readFileSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; import { createTestWorkspace } from "@colineapp/sdk/testing"; import app from "./app.config"; import { listWritten, publicDir, render } from "./scripts/agent-docs"; // Run with `npm test`. describe("Liquid Glass site", () => { it("looks up an option for agents", async () => { const workspace = createTestWorkspace(app); const { output } = await workspace.invokeSiteTool("liquid-glass.reference", { name: "swell" }, { visitorId: "vis_agent" }); const result = output as { matches: { name: string; group: string }[]; names: string[] }; expect(result.matches).toEqual([expect.objectContaining({ name: "swell", group: "Glass options" })]); expect(result.names).toContain("handle.magnify(factor)"); }); it("finds methods and tabs options by their bare names", async () => { const workspace = createTestWorkspace(app); const lookup = async (name: string) => ((await workspace.invokeSiteTool("liquid-glass.reference", { name }, { visitorId: "vis_agent" })).output as { matches: { name: string }[] }).matches.map( (match) => match.name, ); expect(await lookup("magnify")).toEqual(["magnify(factor)"]); expect(await lookup("tabs.orientation")).toEqual(["orientation"]); expect(await lookup("LiquidGlass")).toEqual([""]); }); it("writes a snippet for a set of options", async () => { const workspace = createTestWorkspace(app); const { output } = await workspace.invokeSiteTool( "liquid-glass.snippet", { floating: "dialog", swell: true, samples: 4, geometry: { maxFall: 0.5 } }, { visitorId: "vis_agent" }, ); const code = (output as { code: string }).code; expect(code).toContain('floating="dialog"'); expect(code).toContain("swell"); expect(code).toContain("samples={4}"); expect(code).toContain("geometry={{ maxFall: 0.5 }}"); }); it("serves agent docs that match site/api.ts (run `npm run docs` if this fails)", () => { const files = render(); for (const [path, content] of files) { expect(readFileSync(join(publicDir, path), "utf8"), path).toBe(content); } expect(listWritten().sort()).toEqual([...files.keys()].filter((path) => path.startsWith("docs/")).sort()); }); });