83 lines
3.1 KiB
JavaScript
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;
|
|
}
|