/home/techb158/trello.abdallabala.com/scripts
Edit: /home/techb158/trello.abdallabala.com/scripts/smoke-test.mjs (1315B)
import fs from 'node:fs/promises';
const base = process.env.API_BASE || 'http://localhost:3000';
const samplePath = new URL('../samples/risk-assessment.json', import.meta.url);
const payload = JSON.parse(await fs.readFile(samplePath, 'utf8'));
async function request(path, options = {}) {
const response = await fetch(`${base}${path}`, {
headers: { 'Content-Type': 'application/json', ...(options.headers || {}) },
...options
});
const body = await response.text();
if (!response.ok) throw new Error(`${response.status} ${response.statusText}: ${body}`);
return body ? JSON.parse(body) : null;
}
const health = await request('/api/health');
console.log('health:', health);
const scored = await request('/api/risks/score', {
method: 'POST',
body: JSON.stringify(payload)
});
console.log('score:', scored.score, scored.status, scored.gate.deploymentReady ? 'gate-ready' : 'gate-blocked');
const saved = await request('/api/boards/demo-board/cards/demo-card/assessments', {
method: 'POST',
body: JSON.stringify(payload)
});
console.log('saved assessment:', saved.id);
const summary = await request('/api/boards/demo-board/summary');
console.log('board summary:', {
cardCount: summary.cardCount,
averageScore: summary.averageScore,
deploymentBlocked: summary.deploymentBlocked
});