@lewiswright/vitest-plugin-vis
Version:
Vitest visual testing plugin
38 lines (37 loc) • 1.12 kB
JavaScript
import { NAME } from "../shared/constants.js";
import { ctx } from "./ctx.js";
export function enableAuto() {
ctx.autoEnabled = true;
}
export function setAutoSnapshotOptions(...args) {
const [task, meta] = parseArgs(args);
if (task)
task.meta[NAME] = {
...task.meta[NAME],
...meta,
};
}
function parseArgs(args) {
return args.length === 1
? [ctx.getCurrentTest() ?? ctx.getCurrentSuite()?.tasks?.[0]?.file, parseMeta(args[0])]
: [args[0], parseMeta(args[1])];
}
function parseMeta(meta) {
return typeof meta === 'boolean' ? { enable: meta } : { enable: true, ...meta };
}
export function extractAutoSnapshotOptions(task) {
if (!task)
return;
const list = [];
let current = task;
while (current?.suite) {
list.unshift(current.suite.meta);
current = current.suite;
}
list.unshift(task.file?.meta);
list.push(task.meta);
return list.reduce((acc, cur) => {
const meta = cur?.[NAME];
return meta ? Object.assign({}, acc, meta) : acc;
}, { enable: ctx.autoEnabled });
}