import { describe, expect, test } from "bun:test"; import { readFileSync } from "node:fs"; const readProjectFile = (relative: string) => readFileSync(new URL(`../${relative}`, import.meta.url), "utf8"); // 首屏必须品牌中性:静态的 /logo.svg 会让自定义品牌部署在标签页上先闪一下内置 logo, // 而 favicon 本来就由 use-appearance-store 在解析出外观后写入。空 data URL 只是占位, // 避免浏览器去请求 /favicon.ico(那是一条 404)。 describe("app icon bootstrap", () => { const indexHtml = readProjectFile("index.html"); const appearanceStore = readProjectFile("src/stores/use-appearance-store.ts"); test("index.html declares a neutral placeholder icon instead of the built-in brand", () => { expect(indexHtml).toContain(''); expect(indexHtml).not.toContain(' { expect(appearanceStore).toContain('link[rel~="icon"]'); expect(appearanceStore).toContain("favicon.href = appearanceLogoURL("); }); });