Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/scripts/precompress-web-assets.test.mjs
T

63 lines
3.2 KiB
JavaScript

import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { brotliDecompressSync, gunzipSync } from "node:zlib";
import { afterEach, describe, expect, test } from "vitest";
import { precompressWebAssets, pruneUnreferencedDuplicateCss } from "./precompress-web-assets.mjs";
const temporaryDirectories = [];
afterEach(async () => {
await Promise.all(temporaryDirectories.splice(0).map((directory) => rm(directory, { force: true, recursive: true })));
});
describe("precompressWebAssets", () => {
test("writes deterministic sidecars only for worthwhile static text assets", async () => {
const directory = await mkdtemp(path.join(os.tmpdir(), "hivegrid-precompress-"));
temporaryDirectories.push(directory);
const source = Buffer.from("const message = 'compressible';\n".repeat(500));
const jsPath = path.join(directory, "app.js");
await Promise.all([writeFile(jsPath, source), writeFile(path.join(directory, "small.json"), "{}")]);
const report = await precompressWebAssets(directory);
expect(report).toEqual({ considered: 1, brotliWritten: 1, gzipWritten: 1 });
expect(brotliDecompressSync(await readFile(`${jsPath}.br`))).toEqual(source);
expect(gunzipSync(await readFile(`${jsPath}.gz`))).toEqual(source);
await expect(readFile(path.join(directory, "small.json.br"))).rejects.toMatchObject({ code: "ENOENT" });
});
test("removes only byte-identical unreferenced React Router server CSS duplicates", async () => {
const directory = await mkdtemp(path.join(os.tmpdir(), "hivegrid-css-prune-"));
temporaryDirectories.push(directory);
const duplicateCss = Buffer.from(".root { color: green; }".repeat(100));
await Promise.all([
writeFile(path.join(directory, "root-hash.css"), duplicateCss),
writeFile(path.join(directory, "server-build-hash.css"), duplicateCss),
writeFile(path.join(directory, "manifest.js"), 'window.assets=["root-hash.css"];'),
]);
await expect(pruneUnreferencedDuplicateCss(directory)).resolves.toEqual({
removed: 1,
bytesRemoved: duplicateCss.length,
});
await expect(readFile(path.join(directory, "server-build-hash.css"))).rejects.toMatchObject({ code: "ENOENT" });
await expect(readFile(path.join(directory, "root-hash.css"))).resolves.toEqual(duplicateCss);
});
test("keeps referenced or non-identical server CSS assets", async () => {
const directory = await mkdtemp(path.join(os.tmpdir(), "hivegrid-css-prune-"));
temporaryDirectories.push(directory);
await Promise.all([
writeFile(path.join(directory, "root-hash.css"), ".root { color: green; }"),
writeFile(path.join(directory, "server-build-referenced.css"), ".root { color: green; }"),
writeFile(path.join(directory, "server-build-distinct.css"), ".root { color: red; }"),
writeFile(path.join(directory, "manifest.js"), 'window.assets=["server-build-referenced.css"];'),
]);
await expect(pruneUnreferencedDuplicateCss(directory)).resolves.toEqual({ removed: 0, bytesRemoved: 0 });
await expect(readFile(path.join(directory, "server-build-referenced.css"))).resolves.toBeTruthy();
await expect(readFile(path.join(directory, "server-build-distinct.css"))).resolves.toBeTruthy();
});
});