提交 36a23a84 编写于 作者: dcloud_wdl's avatar dcloud_wdl

update jest-setup.js 适配新版截图对比方案

上级 76b14049
const path = require("path"); const path = require("path");
const fs = require("fs"); const fs = require("fs");
const {
const { configureToMatchImageSnapshot } = require("jest-image-snapshot"); configureToMatchImageSnapshot
} = require('jest-image-snapshot');
const hbuilderx_version = process.env.HX_Version; let saveImageSnapshotDir = process.env.saveImageSnapshotDir || path.join(__dirname, '__snapshot__');
const uniTestPlatformInfo = process.env.uniTestPlatformInfo
? process.env.uniTestPlatformInfo.replace(/\s/g, "_")
: "";
const folderName = `__image_snapshots__/${hbuilderx_version}/__${uniTestPlatformInfo}__`;
let environment = "official";
if (hbuilderx_version.includes("dev")) {
environment = "dev";
} else if (hbuilderx_version.includes("alpha")) {
environment = "alpha";
}
const baseFolderName = `__image_snapshots__/base/${environment}/__${uniTestPlatformInfo}__`;
expect.extend({ expect.extend({
toMatchImageSnapshot: configureToMatchImageSnapshot({ toMatchImageSnapshot: configureToMatchImageSnapshot({
customSnapshotIdentifier(args) { customSnapshotIdentifier(args) {
return args.currentTestName.replace(/\//g, "-").replace(" ", "-"); return args.currentTestName.replace(/\//g, "-").replace(" ", "-");
}, },
customSnapshotsDir: path.join(__dirname, baseFolderName), customSnapshotsDir: process.env.saveImageSnapshotDir,
customDiffDir: path.join(__dirname, `${folderName}/`, "diff"), customDiffDir: path.join(saveImageSnapshotDir, "diff"),
}), }),
toSaveSnapshot, toSaveSnapshot,
toSaveImageSnapshot, toSaveImageSnapshot,
...@@ -37,6 +26,14 @@ if (!fs.existsSync(testCaseToSnapshotFilePath)) { ...@@ -37,6 +26,14 @@ if (!fs.existsSync(testCaseToSnapshotFilePath)) {
function writeTestCaseToSnapshotFile(testCaseName, snapshotFilePath) { function writeTestCaseToSnapshotFile(testCaseName, snapshotFilePath) {
const data = JSON.parse(fs.readFileSync(testCaseToSnapshotFilePath)); const data = JSON.parse(fs.readFileSync(testCaseToSnapshotFilePath));
if (testCaseName.includes(__dirname)) {
testCaseName = testCaseName.substring(`${__dirname}`.length);
if (testCaseName[0] == '/' || testCaseName[0] == '\\') {
testCaseName = testCaseName.substring(1);
};
};
if (!data[testCaseName]) { if (!data[testCaseName]) {
data[testCaseName] = [snapshotFilePath]; data[testCaseName] = [snapshotFilePath];
} else { } else {
...@@ -45,9 +42,14 @@ function writeTestCaseToSnapshotFile(testCaseName, snapshotFilePath) { ...@@ -45,9 +42,14 @@ function writeTestCaseToSnapshotFile(testCaseName, snapshotFilePath) {
fs.writeFileSync(testCaseToSnapshotFilePath, JSON.stringify(data, null, 2)); fs.writeFileSync(testCaseToSnapshotFilePath, JSON.stringify(data, null, 2));
} }
function toSaveSnapshot(received, { customSnapshotsDir, fileName } = {}) { function toSaveSnapshot(received, {
customSnapshotsDir,
fileName
} = {}) {
const { const {
snapshotState: { _rootDir }, snapshotState: {
_rootDir
},
testPath, testPath,
currentTestName, currentTestName,
} = this; } = this;
...@@ -85,11 +87,15 @@ function toSaveSnapshot(received, { customSnapshotsDir, fileName } = {}) { ...@@ -85,11 +87,15 @@ function toSaveSnapshot(received, { customSnapshotsDir, fileName } = {}) {
} }
function toSaveImageSnapshot( function toSaveImageSnapshot(
received, received, {
{ customSnapshotsDir, customSnapshotIdentifier } = {} customSnapshotsDir,
customSnapshotIdentifier
} = {}
) { ) {
const { const {
snapshotState: { _rootDir }, snapshotState: {
_rootDir
},
testPath, testPath,
currentTestName, currentTestName,
} = this; } = this;
...@@ -127,11 +133,20 @@ function toSaveImageSnapshot( ...@@ -127,11 +133,20 @@ function toSaveImageSnapshot(
}; };
} }
function createSnapshotDir({ customSnapshotsDir, testPath, SNAPSHOTS_DIR }) { function createSnapshotDir({
customSnapshotsDir,
testPath,
SNAPSHOTS_DIR
}) {
return customSnapshotsDir || path.join(path.dirname(testPath), SNAPSHOTS_DIR); return customSnapshotsDir || path.join(path.dirname(testPath), SNAPSHOTS_DIR);
} }
function createFileName({ fileName, testPath, currentTestName, fileType }) { function createFileName({
fileName,
testPath,
currentTestName,
fileType
}) {
return ( return (
fileName || fileName ||
createSnapshotIdentifier({ createSnapshotIdentifier({
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册