diff --git a/jest-setup.js b/jest-setup.js index 9d39428928190e952121d4179043ca9e4ba98842..499a5798249524c3024780d5a15cf775ce9f7e9d 100644 --- a/jest-setup.js +++ b/jest-setup.js @@ -1,176 +1,191 @@ const path = require("path"); const fs = require("fs"); - -const { configureToMatchImageSnapshot } = require("jest-image-snapshot"); - -const hbuilderx_version = process.env.HX_Version; -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}__`; +const { + configureToMatchImageSnapshot +} = require('jest-image-snapshot'); +let saveImageSnapshotDir = process.env.saveImageSnapshotDir || path.join(__dirname, '__snapshot__'); expect.extend({ - toMatchImageSnapshot: configureToMatchImageSnapshot({ - customSnapshotIdentifier(args) { - return args.currentTestName.replace(/\//g, "-").replace(" ", "-"); - }, - customSnapshotsDir: path.join(__dirname, baseFolderName), - customDiffDir: path.join(__dirname, `${folderName}/`, "diff"), - }), - toSaveSnapshot, - toSaveImageSnapshot, + toMatchImageSnapshot: configureToMatchImageSnapshot({ + customSnapshotIdentifier(args) { + return args.currentTestName.replace(/\//g, "-").replace(" ", "-"); + }, + customSnapshotsDir: process.env.saveImageSnapshotDir, + customDiffDir: path.join(saveImageSnapshotDir, "diff"), + }), + toSaveSnapshot, + toSaveImageSnapshot, }); const testCaseToSnapshotFilePath = - process.env.testCaseToSnapshotFilePath || "./testCaseToSnapshotFilePath.json"; + process.env.testCaseToSnapshotFilePath || "./testCaseToSnapshotFilePath.json"; if (!fs.existsSync(testCaseToSnapshotFilePath)) { - fs.writeFileSync(testCaseToSnapshotFilePath, "{}"); + fs.writeFileSync(testCaseToSnapshotFilePath, "{}"); } function writeTestCaseToSnapshotFile(testCaseName, snapshotFilePath) { - const data = JSON.parse(fs.readFileSync(testCaseToSnapshotFilePath)); - if (!data[testCaseName]) { - data[testCaseName] = [snapshotFilePath]; - } else { - data[testCaseName].push(snapshotFilePath); - } - fs.writeFileSync(testCaseToSnapshotFilePath, JSON.stringify(data, null, 2)); + 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]) { + data[testCaseName] = [snapshotFilePath]; + } else { + data[testCaseName].push(snapshotFilePath); + } + fs.writeFileSync(testCaseToSnapshotFilePath, JSON.stringify(data, null, 2)); } -function toSaveSnapshot(received, { customSnapshotsDir, fileName } = {}) { - const { - snapshotState: { _rootDir }, - testPath, - currentTestName, - } = this; - const SNAPSHOTS_DIR = "__file_snapshots__"; - const snapshotDir = - process.env.saveSnapshotDir || - createSnapshotDir({ - customSnapshotsDir, - testPath, - SNAPSHOTS_DIR, +function toSaveSnapshot(received, { + customSnapshotsDir, + fileName +} = {}) { + const { + snapshotState: { + _rootDir + }, + testPath, + currentTestName, + } = this; + const SNAPSHOTS_DIR = "__file_snapshots__"; + const snapshotDir = + process.env.saveSnapshotDir || + createSnapshotDir({ + customSnapshotsDir, + testPath, + SNAPSHOTS_DIR, + }); + const _fileName = createFileName({ + fileName, + testPath, + currentTestName, }); - const _fileName = createFileName({ - fileName, - testPath, - currentTestName, - }); - const filePath = path.join(snapshotDir, _fileName); - let message = () => `${currentTestName} toSaveSnapshot success`; - let pass = true; - - try { - checkSnapshotDir(snapshotDir); - fs.writeFileSync(filePath, received); - writeTestCaseToSnapshotFile(testPath.replace(`${_rootDir}/`, ""), filePath); - } catch (e) { - console.log("toSaveSnapshot fail", e); - message = () => e.message; - pass = false; - } - - return { - message, - pass, - }; + const filePath = path.join(snapshotDir, _fileName); + let message = () => `${currentTestName} toSaveSnapshot success`; + let pass = true; + + try { + checkSnapshotDir(snapshotDir); + fs.writeFileSync(filePath, received); + writeTestCaseToSnapshotFile(testPath.replace(`${_rootDir}/`, ""), filePath); + } catch (e) { + console.log("toSaveSnapshot fail", e); + message = () => e.message; + pass = false; + } + + return { + message, + pass, + }; } function toSaveImageSnapshot( - received, - { customSnapshotsDir, customSnapshotIdentifier } = {} + received, { + customSnapshotsDir, + customSnapshotIdentifier + } = {} ) { - const { - snapshotState: { _rootDir }, - testPath, - currentTestName, - } = this; - const SNAPSHOTS_DIR = "__image_snapshots__"; - const snapshotDir = - process.env.saveImageSnapshotDir || - createSnapshotDir({ - customSnapshotsDir, - testPath, - SNAPSHOTS_DIR, + const { + snapshotState: { + _rootDir + }, + testPath, + currentTestName, + } = this; + const SNAPSHOTS_DIR = "__image_snapshots__"; + const snapshotDir = + process.env.saveImageSnapshotDir || + createSnapshotDir({ + customSnapshotsDir, + testPath, + SNAPSHOTS_DIR, + }); + const _fileName = createFileName({ + fileName: customSnapshotIdentifier ? customSnapshotIdentifier() : "", + testPath, + currentTestName, + fileType: "png", }); - const _fileName = createFileName({ - fileName: customSnapshotIdentifier ? customSnapshotIdentifier() : "", - testPath, - currentTestName, - fileType: "png", - }); - const filePath = path.join(snapshotDir, _fileName); - let message = () => `${currentTestName} toSaveImageSnapshot success`; - let pass = true; - - try { - checkSnapshotDir(snapshotDir); - fs.writeFileSync(filePath, Buffer.from(received, "base64")); - writeTestCaseToSnapshotFile(testPath.replace(`${_rootDir}/`, ""), filePath); - } catch (e) { - console.log("toSaveImageSnapshot fail", e); - message = () => e.message; - pass = false; - } - - return { - message, - pass, - }; + const filePath = path.join(snapshotDir, _fileName); + let message = () => `${currentTestName} toSaveImageSnapshot success`; + let pass = true; + + try { + checkSnapshotDir(snapshotDir); + fs.writeFileSync(filePath, Buffer.from(received, "base64")); + writeTestCaseToSnapshotFile(testPath.replace(`${_rootDir}/`, ""), filePath); + } catch (e) { + console.log("toSaveImageSnapshot fail", e); + message = () => e.message; + pass = false; + } + + return { + message, + pass, + }; } -function createSnapshotDir({ customSnapshotsDir, testPath, SNAPSHOTS_DIR }) { - return customSnapshotsDir || path.join(path.dirname(testPath), SNAPSHOTS_DIR); +function createSnapshotDir({ + customSnapshotsDir, + testPath, + SNAPSHOTS_DIR +}) { + return customSnapshotsDir || path.join(path.dirname(testPath), SNAPSHOTS_DIR); } -function createFileName({ fileName, testPath, currentTestName, fileType }) { - return ( - fileName || - createSnapshotIdentifier({ - testPath, - currentTestName, - fileType, - }) - ); +function createFileName({ + fileName, + testPath, + currentTestName, + fileType +}) { + return ( + fileName || + createSnapshotIdentifier({ + testPath, + currentTestName, + fileType, + }) + ); } function createSnapshotIdentifier({ - testPath, - currentTestName, - fileType = "txt", + testPath, + currentTestName, + fileType = "txt", }) { - const snapshotIdentifier = kebabCase( - `${path.basename(testPath)}-${currentTestName}` - ); - const counter = timesCalled.get(`${snapshotIdentifier}-${fileType}`) || 1; - timesCalled.set(`${snapshotIdentifier}-${fileType}`, counter + 1); - return `${snapshotIdentifier}-${counter}.${fileType}`; + const snapshotIdentifier = kebabCase( + `${path.basename(testPath)}-${currentTestName}` + ); + const counter = timesCalled.get(`${snapshotIdentifier}-${fileType}`) || 1; + timesCalled.set(`${snapshotIdentifier}-${fileType}`, counter + 1); + return `${snapshotIdentifier}-${counter}.${fileType}`; } function kebabCase(str) { - return str - .replaceAll(/([a-z])([A-Z])/g, "$1-$2") - .replaceAll(/\s+/g, "-") - .replaceAll(/_+/g, "-") - .replaceAll(/\/+/g, "-") - .replaceAll(/\.+/g, "-") - .toLowerCase(); + return str + .replaceAll(/([a-z])([A-Z])/g, "$1-$2") + .replaceAll(/\s+/g, "-") + .replaceAll(/_+/g, "-") + .replaceAll(/\/+/g, "-") + .replaceAll(/\.+/g, "-") + .toLowerCase(); } function checkSnapshotDir(snapshotDir) { - if (!fs.existsSync(snapshotDir)) { - fs.mkdirSync(snapshotDir, { - recursive: true, - }); - } + if (!fs.existsSync(snapshotDir)) { + fs.mkdirSync(snapshotDir, { + recursive: true, + }); + } } const timesCalled = new Map();