test(FN-1245): harden bundle-output tests for hermetic behavior
- Only require dist/bin.js in setup so tests do not depend on dashboard client artifacts being prebuilt - Gate dashboard client asset assertion behind a presence check to avoid flaky environment-specific failures - Add tsup.config.ts assertions to verify dashboard/dist/client is copied into cli dist/client during build
This commit is contained in:
@@ -6,10 +6,12 @@ import { join } from "node:path";
|
||||
const cliRoot = join(__dirname, "..", "..");
|
||||
const bundlePath = join(cliRoot, "dist", "bin.js");
|
||||
const clientIndexPath = join(cliRoot, "dist", "client", "index.html");
|
||||
const tsupConfigPath = join(cliRoot, "tsup.config.ts");
|
||||
const clientDirExists = existsSync(clientIndexPath);
|
||||
|
||||
describe("CLI bundle output", () => {
|
||||
beforeAll(() => {
|
||||
if (existsSync(bundlePath) && existsSync(clientIndexPath)) {
|
||||
if (existsSync(bundlePath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -44,10 +46,19 @@ describe("CLI bundle output", () => {
|
||||
expect(content).toContain("createServer");
|
||||
});
|
||||
|
||||
it("dashboard client assets are included", () => {
|
||||
it.skipIf(!clientDirExists)("dashboard client assets are included", () => {
|
||||
expect(existsSync(clientIndexPath)).toBe(true);
|
||||
});
|
||||
|
||||
it("tsup config copies dashboard assets from dashboard/dist/client to dist/client", () => {
|
||||
const tsupConfig = readFileSync(tsupConfigPath, "utf-8");
|
||||
|
||||
expect(tsupConfig).toContain("onSuccess");
|
||||
expect(tsupConfig).toContain('join(__dirname, "..", "dashboard", "dist", "client")');
|
||||
expect(tsupConfig).toContain('join(__dirname, "dist", "client")');
|
||||
expect(tsupConfig).toContain("cpSync(dashboardClientSrc, dashboardClientDest, { recursive: true });");
|
||||
});
|
||||
|
||||
it("runtime native assets are staged after build:exe", () => {
|
||||
const runtimeDir = join(cliRoot, "dist", "runtime");
|
||||
if (!existsSync(runtimeDir)) return;
|
||||
|
||||
Reference in New Issue
Block a user