import { describe, expect, it } from "vite-plus/test"; import { BRAND_ASSET_PATHS, DEVELOPMENT_ICON_OVERRIDES, DEVELOPMENT_PUBLIC_ICON_OVERRIDES, PUBLISH_ICON_OVERRIDES, resolveWebAssetBrandForChannel, resolveWebIconOverrides,} from "./brand-assets.ts"; describe("brand-assets", () => { it("maps server publish web assets to production icons", () => { expect(PUBLISH_ICON_OVERRIDES).toEqual([ { sourceRelativePath: BRAND_ASSET_PATHS.productionWebFaviconIco, targetRelativePath: "dist/client/favicon.ico", }, { sourceRelativePath: BRAND_ASSET_PATHS.productionWebFavicon16Png, targetRelativePath: "dist/client/favicon-16x16.png", }, { sourceRelativePath: BRAND_ASSET_PATHS.productionWebFavicon32Png, targetRelativePath: "dist/client/favicon-32x32.png", }, { sourceRelativePath: BRAND_ASSET_PATHS.productionWebAppleTouchIconPng, targetRelativePath: "dist/client/apple-touch-icon.png", }, ]); }); it("maps server build web assets to development icons", () => { expect(DEVELOPMENT_ICON_OVERRIDES[0]).toEqual({ sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFaviconIco, targetRelativePath: "dist/client/favicon.ico", }); }); it("maps development web assets to the public splash and favicon files", () => { expect(DEVELOPMENT_PUBLIC_ICON_OVERRIDES).toEqual([ { sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFaviconIco, targetRelativePath: "apps/web/public/favicon.ico", }, { sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFavicon16Png, targetRelativePath: "apps/web/public/favicon-16x16.png", }, { sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFavicon32Png, targetRelativePath: "apps/web/public/favicon-32x32.png", }, { sourceRelativePath: BRAND_ASSET_PATHS.developmentWebAppleTouchIconPng, targetRelativePath: "apps/web/public/apple-touch-icon.png", }, ]); }); it("can target hosted web dist directly", () => { expect(resolveWebIconOverrides("production", "apps/web/dist")).toContainEqual({ sourceRelativePath: BRAND_ASSET_PATHS.productionWebAppleTouchIconPng, targetRelativePath: "apps/web/dist/apple-touch-icon.png", }); }); it("maps hosted nightly web assets to nightly icons", () => { expect(resolveWebIconOverrides("nightly", "apps/web/dist")).toContainEqual({ sourceRelativePath: BRAND_ASSET_PATHS.nightlyWebFaviconIco, targetRelativePath: "apps/web/dist/favicon.ico", }); }); it("maps hosted release channels to web asset brands", () => { expect(resolveWebAssetBrandForChannel("latest")).toBe("production"); expect(resolveWebAssetBrandForChannel("nightly")).toBe("nightly"); }); it("keeps development, nightly, and production icon families separate", () => { expect([ BRAND_ASSET_PATHS.developmentIconComposerProject, BRAND_ASSET_PATHS.nightlyIconComposerProject, BRAND_ASSET_PATHS.productionIconComposerProject, ]).toEqual([ "assets/dev/app-icon.icon", "assets/nightly/app-icon.icon", "assets/prod/app-icon.icon", ]); expect(BRAND_ASSET_PATHS.developmentDesktopIconPng).toMatch(/^assets\/dev\/blueprint-/); expect(BRAND_ASSET_PATHS.nightlyMacIconPng).toMatch(/^assets\/nightly\/nightly-/); expect(BRAND_ASSET_PATHS.productionMacIconPng).toMatch(/^assets\/prod\/black-/); });});
import { describe, expect, it } from "vite-plus/test";
import {
BRAND_ASSET_PATHS,
DEVELOPMENT_ICON_OVERRIDES,
DEVELOPMENT_PUBLIC_ICON_OVERRIDES,
PUBLISH_ICON_OVERRIDES,
resolveWebAssetBrandForChannel,
resolveWebIconOverrides,
} from "./brand-assets.ts";
describe("brand-assets", () => {
it("maps server publish web assets to production icons", () => {
expect(PUBLISH_ICON_OVERRIDES).toEqual([
{
sourceRelativePath: BRAND_ASSET_PATHS.productionWebFaviconIco,
targetRelativePath: "dist/client/favicon.ico",
},
{
sourceRelativePath: BRAND_ASSET_PATHS.productionWebFavicon16Png,
targetRelativePath: "dist/client/favicon-16x16.png",
},
{
sourceRelativePath: BRAND_ASSET_PATHS.productionWebFavicon32Png,
targetRelativePath: "dist/client/favicon-32x32.png",
},
{
sourceRelativePath: BRAND_ASSET_PATHS.productionWebAppleTouchIconPng,
targetRelativePath: "dist/client/apple-touch-icon.png",
},
]);
});
it("maps server build web assets to development icons", () => {
expect(DEVELOPMENT_ICON_OVERRIDES[0]).toEqual({
sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFaviconIco,
targetRelativePath: "dist/client/favicon.ico",
});
});
it("maps development web assets to the public splash and favicon files", () => {
expect(DEVELOPMENT_PUBLIC_ICON_OVERRIDES).toEqual([
{
sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFaviconIco,
targetRelativePath: "apps/web/public/favicon.ico",
},
{
sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFavicon16Png,
targetRelativePath: "apps/web/public/favicon-16x16.png",
},
{
sourceRelativePath: BRAND_ASSET_PATHS.developmentWebFavicon32Png,
targetRelativePath: "apps/web/public/favicon-32x32.png",
},
{
sourceRelativePath: BRAND_ASSET_PATHS.developmentWebAppleTouchIconPng,
targetRelativePath: "apps/web/public/apple-touch-icon.png",
},
]);
});
it("can target hosted web dist directly", () => {
expect(resolveWebIconOverrides("production", "apps/web/dist")).toContainEqual({
sourceRelativePath: BRAND_ASSET_PATHS.productionWebAppleTouchIconPng,
targetRelativePath: "apps/web/dist/apple-touch-icon.png",
});
});
it("maps hosted nightly web assets to nightly icons", () => {
expect(resolveWebIconOverrides("nightly", "apps/web/dist")).toContainEqual({
sourceRelativePath: BRAND_ASSET_PATHS.nightlyWebFaviconIco,
targetRelativePath: "apps/web/dist/favicon.ico",
});
});
it("maps hosted release channels to web asset brands", () => {
expect(resolveWebAssetBrandForChannel("latest")).toBe("production");
expect(resolveWebAssetBrandForChannel("nightly")).toBe("nightly");
});
it("keeps development, nightly, and production icon families separate", () => {
expect([
BRAND_ASSET_PATHS.developmentIconComposerProject,
BRAND_ASSET_PATHS.nightlyIconComposerProject,
BRAND_ASSET_PATHS.productionIconComposerProject,
]).toEqual([
"assets/dev/app-icon.icon",
"assets/nightly/app-icon.icon",
"assets/prod/app-icon.icon",
]);
expect(BRAND_ASSET_PATHS.developmentDesktopIconPng).toMatch(/^assets\/dev\/blueprint-/);
expect(BRAND_ASSET_PATHS.nightlyMacIconPng).toMatch(/^assets\/nightly\/nightly-/);
expect(BRAND_ASSET_PATHS.productionMacIconPng).toMatch(/^assets\/prod\/black-/);
});
});