mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
Own browser specs, desktop specs, and Electron-only app code by stable directories so PR routing does not depend on filename conventions. Keep desktop integration coverage inside the required desktop check.
74 lines
2.8 KiB
JavaScript
74 lines
2.8 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import { join } from "node:path";
|
|
import test from "node:test";
|
|
|
|
const repoRoot = join(import.meta.dirname, "..");
|
|
|
|
function assertNoDirectWorkerLaunch(label, command) {
|
|
for (const workerEntrypoint of [
|
|
"src/server/index.ts",
|
|
"dist/server/server/index.js",
|
|
"src/server/daemon-worker.ts",
|
|
"dist/server/server/daemon-worker.js",
|
|
]) {
|
|
assert.ok(
|
|
!command.includes(workerEntrypoint),
|
|
`${label} must not launch ${workerEntrypoint} directly: ${command}`,
|
|
);
|
|
}
|
|
}
|
|
|
|
function assertNoSpawnedWorkerEntrypoint(label, source) {
|
|
assertNoDirectWorkerLaunch(label, source);
|
|
assert.doesNotMatch(
|
|
source,
|
|
/spawn\([^)]*["'`][^"'`]*\.\.\/index\.ts["'`]/s,
|
|
`${label} must not spawn ../index.ts directly`,
|
|
);
|
|
}
|
|
|
|
test("every executable daemon entrypoint enters the supervisor", async () => {
|
|
const [
|
|
serverPackageSource,
|
|
appGlobalSetup,
|
|
serverConnectionOfferE2e,
|
|
desktopRuntimePaths,
|
|
nixPackage,
|
|
] = await Promise.all([
|
|
readFile(join(repoRoot, "packages/server/package.json"), "utf8"),
|
|
readFile(join(repoRoot, "packages/app/e2e/support/global-setup.ts"), "utf8"),
|
|
readFile(
|
|
join(repoRoot, "packages/server/src/server/daemon-e2e/connection-offer.e2e.test.ts"),
|
|
"utf8",
|
|
),
|
|
readFile(join(repoRoot, "packages/desktop/src/daemon/runtime-paths.ts"), "utf8"),
|
|
readFile(join(repoRoot, "nix/package.nix"), "utf8"),
|
|
]);
|
|
|
|
const serverPackage = JSON.parse(serverPackageSource);
|
|
const startScript = serverPackage.scripts?.start ?? "";
|
|
const devScript = serverPackage.scripts?.dev ?? "";
|
|
const devTsxScript = serverPackage.scripts?.["dev:tsx"] ?? "";
|
|
|
|
assert.match(startScript, /dist\/scripts\/supervisor-entrypoint\.js/);
|
|
assertNoDirectWorkerLaunch("server start script", startScript);
|
|
assert.match(devScript, /scripts\/dev-runner\.ts/);
|
|
assertNoDirectWorkerLaunch("server dev script", devScript);
|
|
assert.match(devTsxScript, /scripts\/dev-runner\.ts/);
|
|
assertNoDirectWorkerLaunch("server dev:tsx script", devTsxScript);
|
|
|
|
assert.match(appGlobalSetup, /spawn\(tsxBin, \["scripts\/supervisor-entrypoint\.ts", "--dev"\]/);
|
|
assertNoSpawnedWorkerEntrypoint("app e2e global setup", appGlobalSetup);
|
|
|
|
assert.match(serverConnectionOfferE2e, /scripts\/supervisor-entrypoint\.ts/);
|
|
assertNoSpawnedWorkerEntrypoint("server daemon e2e process launch", serverConnectionOfferE2e);
|
|
|
|
assert.match(desktopRuntimePaths, /"dist", "scripts", "supervisor-entrypoint\.js"/);
|
|
assert.match(desktopRuntimePaths, /"scripts", "supervisor-entrypoint\.ts"/);
|
|
assertNoDirectWorkerLaunch("desktop runtime paths", desktopRuntimePaths);
|
|
|
|
assert.match(nixPackage, /dist\/scripts\/supervisor-entrypoint\.js/);
|
|
assertNoDirectWorkerLaunch("Nix package wrapper", nixPackage);
|
|
});
|