Files
Autonomous-Bug-Explorer/dist/modules/visual-regression/infrastructure/http/VisualRegressionController.js
debian 94defee1f8 fase(20): visual regression refactor
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 06:02:37 -04:00

83 lines
3.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createVisualRegressionRouter = createVisualRegressionRouter;
const express_1 = require("express");
const Result_1 = require("../../../../shared/domain/Result");
function createVisualRegressionRouter(deps) {
const router = (0, express_1.Router)();
// GET /api/visual/comparisons
router.get('/comparisons', async (req, res, next) => {
try {
const sessionId = req.query['sessionId'];
const status = req.query['status'];
const result = await deps.listComparisons.execute({ sessionId, status });
if ((0, Result_1.isErr)(result)) {
res.status(500).json({ error: result.error });
return;
}
const comparisons = result.value.map((c) => ({
id: c.id.toString(),
session_id: c.sessionId,
state_id: c.stateId,
baseline_id: c.baselineId,
current_screenshot_path: c.currentScreenshotPath,
diff_screenshot_path: c.diffScreenshotPath,
diff_pixels: c.diffPixels,
diff_percent: c.diffPercent,
status: c.status.value,
created_at: c.createdAt.getTime(),
}));
res.json(comparisons);
}
catch (err) {
next(err);
}
});
// POST /api/visual/baselines/:comparisonId/approve
router.post('/baselines/:comparisonId/approve', async (req, res, next) => {
try {
const comparisonId = String(req.params['comparisonId']);
const result = await deps.approveBaseline.execute({ comparisonId });
if ((0, Result_1.isErr)(result)) {
res.status(404).json({ error: result.error });
return;
}
res.json({ baselineId: result.value.baselineId, status: 'approved' });
}
catch (err) {
next(err);
}
});
// POST /api/visual/baselines/:comparisonId/reject
router.post('/baselines/:comparisonId/reject', async (req, res, next) => {
try {
const comparisonId = String(req.params['comparisonId']);
const result = await deps.rejectComparison.execute({ comparisonId });
if ((0, Result_1.isErr)(result)) {
res.status(404).json({ error: result.error });
return;
}
res.json({ status: 'rejected' });
}
catch (err) {
next(err);
}
});
// POST /api/visual/baselines/approve-all
router.post('/baselines/approve-all', async (req, res, next) => {
try {
const { sessionId } = req.body;
const result = await deps.approveAllNewStates.execute({ sessionId });
if ((0, Result_1.isErr)(result)) {
res.status(500).json({ error: result.error });
return;
}
res.json({ approved: result.value.approved });
}
catch (err) {
next(err);
}
});
return router;
}