diff --git a/package-lock.json b/package-lock.json index 9b56e0d24..500715e8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9679,6 +9679,7 @@ "jpeg-js": "^0.2.0", "load-bmfont": "^1.2.3", "mime": "^1.3.4", + "mkdirp": "0.5.1", "pixelmatch": "^4.0.0", "pngjs": "^3.0.0", "read-chunk": "^1.0.1", @@ -9720,6 +9721,21 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "pixelmatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", diff --git a/package.json b/package.json index fe0e54d4e..db9f0a733 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "hex64": "^0.4.0", "html-webpack-plugin": "^4.3.0", "imghash": "0.0.7", + "leven": "^3.1.0", "mocha": "^7.1.2", "moment": "^2.25.0", "node-fetch": "^2.6.0", diff --git a/test/rendering-test.js b/test/rendering-test.js index a7d12fa19..93f5d061b 100644 --- a/test/rendering-test.js +++ b/test/rendering-test.js @@ -10,6 +10,7 @@ const chrome = require("selenium-webdriver/chrome"); const chromedriver = require("chromedriver"); const imghash = require("imghash"); const hex64 = require("hex64"); +const leven = require("leven"); const pixelmatch = require("pixelmatch"); const PNG = require("pngjs").PNG; @@ -48,6 +49,12 @@ describe("Layout Rendering Tests", function() { await driver.sleep(500); } + const hashToBinary = (hash) => { + const buffer = Buffer.from(hash, "base64"); + const values = Array.from(buffer.values()); + return values.map((value) => value.toString(2).padStart(8, "0")).join(""); + }; + before(async () => { console.log('Starting server...'); @@ -111,7 +118,11 @@ describe("Layout Rendering Tests", function() { fs.renameSync(tempFilePath, actualScreenshotPath); - if (actualHash !== expectedHash) { + const actualBinary = hashToBinary(actualHash); + const expectedBinary = hashToBinary(expectedHash); + const distance = leven(actualBinary, expectedBinary); + + if (distance <= 1) { let showWarning = false; try { if (fs.existsSync(expectedScreenshotPath)) {