@lewiswright/vitest-plugin-vis
Version:
Vitest visual testing plugin
29 lines (28 loc) • 1.13 kB
JavaScript
import { mkdirp } from 'mkdirp';
import { dirname } from 'pathe';
import { isBase64String } from "../shared/base64.js";
import { browserApi } from "./browser_provider/browser_api.js";
import { file } from './file.js';
export async function takeSnapshot(context, filePath, subject, options) {
if (isBase64String(subject)) {
await writeSnapshot(filePath, subject);
return Buffer.from(subject, 'base64');
}
return takeSnapshotByBrowser(context, filePath, subject, options);
}
export async function takeSnapshotByBrowser(context, filePath, subject, options) {
await mkdirp(dirname(filePath));
const browser = browserApi(context);
return browser.takeScreenshot(filePath, subject ?? 'body', {
timeout: options?.timeout,
animations: options?.animations,
});
}
export async function writeSnapshot(filePath, subject) {
await mkdirp(dirname(filePath));
await file.writeFile(filePath, subject, { encoding: 'base64' });
}
export async function writeSnapshotBuffer(filePath, subject) {
await mkdirp(dirname(filePath));
await file.writeFile(filePath, subject);
}