51 lines
1.5 KiB
JavaScript
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;
|
|
}
|