import { readFileSync } from "node:fs"; import { resolve } from "node:path"; import { describe, expect, it } from "vitest"; describe("index.html", () => { it("keeps browser zoom available", () => { const html = readFileSync(resolve(process.cwd(), "index.html"), "utf8"); const viewport = html.match(/ { const html = readFileSync(resolve(process.cwd(), "index.html"), "utf8"); const viewport = html.match(/ { const html = readFileSync(resolve(process.cwd(), "index.html"), "utf8"); const manifest = JSON.parse( readFileSync(resolve(process.cwd(), "public/manifest.json"), "utf8"), ) as { background_color?: string; theme_color?: string; color_scheme_dark?: { background_color?: string; theme_color?: string }; }; const document = new DOMParser().parseFromString(html, "text/html"); const themeColor = document.querySelector('meta[name="theme-color"]'); const lightBodyBackground = html.match(/body\s*{[^}]*background:\s*([^;]+);/s)?.[1]?.trim(); const darkBodyBackground = html.match( /html\.dark body\s*{[^}]*background:\s*([^;]+);/s, )?.[1]?.trim(); expect(themeColor?.content).toBe("#ffffff"); expect(themeColor?.dataset.themeColorLight).toBe("#ffffff"); expect(themeColor?.dataset.themeColorDark).toBe("#303030"); expect(lightBodyBackground).toBe("#ffffff"); expect(darkBodyBackground).toBe("#303030"); expect(manifest.background_color).toBe("#ffffff"); expect(manifest.theme_color).toBe("#ffffff"); expect(manifest.color_scheme_dark?.background_color).toBe("#303030"); expect(manifest.color_scheme_dark?.theme_color).toBe("#303030"); }); });