Files
buzz-sheet/tests/public-performance.test.ts
gunshiz 910afdeb71
CI / Build immutable images and deploy (push) Successful in 1m52s
feat : dev on prod
2026-09-16 20:19:27 +07:00

80 lines
2.8 KiB
TypeScript

import { readFile } from "node:fs/promises";
import { describe, expect, it, vi } from "vitest";
vi.hoisted(() => {
vi.stubEnv("BASE_URL", "https://guide.example.test");
});
import robots from "@/app/robots";
async function repositoryFile(path: string): Promise<string> {
return readFile(new URL(`../${path}`, import.meta.url), "utf8");
}
describe("public rendering performance", () => {
it("keeps the directory eligible for a populated static shell", async () => {
const [layout, page] = await Promise.all([
repositoryFile("app/layout.tsx"),
repositoryFile("app/page.tsx"),
]);
expect(layout).not.toContain("export const instant = false");
expect(page).not.toContain("export const instant = false");
expect(page).toContain("async function DirectoryContent()");
expect(page).toContain("await connection()");
expect(page).toContain('fallback={<div className="min-h-svh"');
});
it("isolates request-time header authentication", async () => {
const header = await repositoryFile("components/public/site-header.tsx");
expect(header).toContain("<Suspense fallback={null}>");
expect(header).toContain("<AdminEditLink");
});
it("gives only the first directory cover high fetch priority", async () => {
const directory = await repositoryFile(
"components/public/structured-directory.tsx",
);
expect(directory).toContain(
'fetchPriority={index === 0 ? "high" : undefined}',
);
expect(directory).not.toContain("preload={index === 0}");
expect(directory).toContain("prefetch={false}");
});
it("publishes a public-only crawler policy", () => {
expect(robots()).toEqual({
rules: {
userAgent: "*",
allow: "/",
disallow: ["/admin", "/api", "/register"],
},
sitemap: "https://guide.example.test/sitemap.xml",
});
});
it("loads AdSense only after confirming the visitor is signed out", async () => {
const [adsense, home, guide, guideSection, adsTxt] = await Promise.all([
repositoryFile("components/public/google-adsense.tsx"),
repositoryFile("app/page.tsx"),
repositoryFile("app/[character]/page.tsx"),
repositoryFile("app/[character]/[page]/page.tsx"),
repositoryFile("public/ads.txt"),
]);
expect(adsense).toContain("authClient.useSession()");
expect(adsense).toContain('process.env.NODE_ENV !== "production"');
expect(adsense).toMatch(/isPending \|\|\s+error \|\|\s+session/u);
expect(adsense).toContain("pagead2.googlesyndication.com");
expect(home).toContain("<GoogleAdsense />");
expect(guide).toContain("<GoogleAdsense />");
expect(guideSection).toContain("<GoogleAdsense />");
expect(adsTxt.trim()).toBe(
"google.com, pub-9687404323559597, DIRECT, f08c47fec0942fa0",
);
});
});