53 lines
2.0 KiB
JavaScript
53 lines
2.0 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Visual regression routes — /api/visual
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.createVisualRouter = createVisualRouter;
|
|
const express_1 = require("express");
|
|
function createVisualRouter(repo) {
|
|
const router = (0, express_1.Router)();
|
|
// GET /api/visual/comparisons
|
|
router.get('/comparisons', (req, res) => {
|
|
const sessionId = req.query['sessionId'];
|
|
const status = req.query['status'];
|
|
const comparisons = repo.findComparisons({ sessionId, status });
|
|
res.json(comparisons);
|
|
});
|
|
// POST /api/visual/baselines/:comparisonId/approve
|
|
router.post('/baselines/:comparisonId/approve', (req, res) => {
|
|
const comparisonId = String(req.params['comparisonId']);
|
|
const comparison = repo.findComparisonById(comparisonId);
|
|
if (!comparison) {
|
|
res.status(404).json({ error: 'Comparison not found' });
|
|
return;
|
|
}
|
|
const baselineId = repo.promoteToBaseline(comparisonId);
|
|
res.json({ baselineId, status: 'approved' });
|
|
});
|
|
// POST /api/visual/baselines/:comparisonId/reject
|
|
router.post('/baselines/:comparisonId/reject', (req, res) => {
|
|
const comparisonId = String(req.params['comparisonId']);
|
|
const comparison = repo.findComparisonById(comparisonId);
|
|
if (!comparison) {
|
|
res.status(404).json({ error: 'Comparison not found' });
|
|
return;
|
|
}
|
|
repo.updateComparisonStatus(comparisonId, 'failed');
|
|
res.json({ status: 'rejected' });
|
|
});
|
|
// POST /api/visual/baselines/approve-all
|
|
router.post('/baselines/approve-all', (req, res) => {
|
|
const { sessionId } = req.body;
|
|
const pending = repo.findComparisons({ sessionId, status: 'new_state' });
|
|
const approved = [];
|
|
for (const comp of pending) {
|
|
const id = repo.promoteToBaseline(comp.id);
|
|
if (id)
|
|
approved.push(id);
|
|
}
|
|
res.json({ approved: approved.length });
|
|
});
|
|
return router;
|
|
}
|