Files
projectbrain-Public/scripts/smoke-release-operator.mjs
T

51 lines
1.5 KiB
JavaScript

import { spawnSync } from "node:child_process";
const steps = [
{
label: "Release evidence lane click-through",
script: "scripts/smoke-rc63-release-evidence-lane.mjs",
},
{
label: "Review decision receipt recovery",
script: "scripts/smoke-rc60-review-decision-loop.mjs",
},
{
label: "Release evidence capture assist",
script: "scripts/smoke-rc73-release-evidence-capture-assist.mjs",
},
{
label: "Release Center cockpit",
script: "scripts/smoke-rc88-release-center.mjs",
},
{
label: "Release checklist click-through",
script: "scripts/smoke-rc99-release-checklist-clickthrough.mjs",
},
];
const runStep = (step) => {
console.log(`\n[release-operator] ${step.label}`);
const result = spawnSync(process.execPath, [step.script], {
env: process.env,
shell: false,
detached: process.platform === "win32",
stdio: "inherit",
});
if (result.error) throw result.error;
if (result.status !== 0) throw new Error(`${step.label} failed with exit code ${result.status}`);
};
try {
console.log("ProjectBrain release operator smoke suite");
console.log(`Base URL: ${process.env.PROJECTBRAIN_SMOKE_URL ?? "default smoke URL"}`);
console.log(`Project: ${process.env.PROJECTBRAIN_SMOKE_PROJECT ?? "widefrog"}`);
for (const step of steps) {
runStep(step);
}
console.log("\nRelease operator smoke suite passed.");
} catch (error) {
console.error("\nRelease operator smoke suite failed:");
console.error(error.message);
process.exitCode = 1;
}