icebear0828
test: add electron package tests (33 cases)
325c8ea
raw
history blame
1.86 kB
/**
* Smoke test for esbuild bundling.
*
* Verifies that electron/build.mjs produces valid output files
* with the expected exports.
*/
import { describe, it, expect, afterAll } from "vitest";
import { existsSync, rmSync, statSync } from "fs";
import { resolve } from "path";
import { execFileSync } from "child_process";
const PKG_DIR = resolve(import.meta.dirname, "..");
const DIST = resolve(PKG_DIR, "dist-electron");
describe("electron build (esbuild)", () => {
// Build once for all tests in this suite
const buildOnce = (() => {
let built = false;
return () => {
if (built) return;
execFileSync("node", ["electron/build.mjs"], {
cwd: PKG_DIR,
timeout: 30_000,
});
built = true;
};
})();
afterAll(() => {
// Clean up build output
if (existsSync(DIST)) {
rmSync(DIST, { recursive: true });
}
});
it("produces main.cjs (Electron main process)", () => {
buildOnce();
const mainCjs = resolve(DIST, "main.cjs");
expect(existsSync(mainCjs)).toBe(true);
expect(statSync(mainCjs).size).toBeGreaterThan(1000);
});
it("produces server.mjs (backend server bundle)", () => {
buildOnce();
const serverMjs = resolve(DIST, "server.mjs");
expect(existsSync(serverMjs)).toBe(true);
expect(statSync(serverMjs).size).toBeGreaterThan(1000);
});
it("produces sourcemaps for both bundles", () => {
buildOnce();
expect(existsSync(resolve(DIST, "main.cjs.map"))).toBe(true);
expect(existsSync(resolve(DIST, "server.mjs.map"))).toBe(true);
});
it("server.mjs exports setPaths and startServer", async () => {
buildOnce();
const serverMjs = resolve(DIST, "server.mjs");
const mod = await import(serverMjs);
expect(typeof mod.setPaths).toBe("function");
expect(typeof mod.startServer).toBe("function");
});
});