Skip to content

Commit ea92ab5

Browse files
committed
test: Replace resemblejs with looks-same
resemblejs hasn't had updates in a while and now depends on packages with security issues. looks-same was a close drop-in replacement.
1 parent ff83a18 commit ea92ab5

4 files changed

Lines changed: 544 additions & 932 deletions

File tree

karma-base.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,33 +72,30 @@ function getScreenImage(name, left, top, width, height) {
7272
}
7373

7474
/* Compare an image to a base image. If it violates a threshold, save the
75-
* image and a diff between it and the base image. Returns the resemble
76-
* results.
75+
* image.
7776
*
7877
* @param {string} name: base name for the image.
7978
* @param {string} image: a base64 encoded png image.
8079
* @param {number} threshold: allowed difference between this image and the
8180
* base image.
82-
* @param {Function} callback: a function to call when complete.
81+
* @param {Function} callback: a function to call when complete with the
82+
* direct comparison results.
8383
*/
8484
function compareImage(name, image, threshold, callback) {
85-
var resemble = require('resemblejs');
86-
var src = path.resolve('dist/data/base-images', name + '.png');
85+
const looksSame = require('looks-same');
86+
let src = path.resolve('dist/data/base-images', name + '.png');
8787
if (!fs.existsSync(src)) {
8888
src = path.resolve(image_path, name + '.png');
8989
}
90-
var refImage = Buffer.from(fs.readFileSync(src)).toString('base64');
91-
refImage = 'data:image/png;base64,' + refImage;
92-
resemble(image)
93-
.compareTo(refImage)
94-
.ignoreAntialiasing()
95-
.onComplete(function (results) {
96-
console.log('Image comparison: ' + name + ', delta: ' +
97-
Number(results.misMatchPercentage) * 0.01);
98-
var passed = (Number(results.misMatchPercentage) <= threshold * 100);
90+
const refImageBuf = Buffer.from(fs.readFileSync(src));
91+
const refImage = 'data:image/png;base64,' + refImageBuf.toString('base64');
92+
const imageBuf = Buffer.from(image.replace(/^data:image\/png;base64,/, ''), 'base64');
93+
looksSame(imageBuf, refImageBuf, {ignoreAntialiasing: true, threshold: threshold})
94+
.then(function (results) {
95+
console.log('Image comparison: ' + name + ', equal: ' + results.equal);
96+
var passed = results.equal;
9997
saveImage(name + '-base', refImage, !passed);
10098
saveImage(name + '-test', image, !passed);
101-
saveImage(name + '-diff', results.getImageDataUrl(), !passed);
10299
results.passed = passed;
103100
if (callback) {
104101
callback(results);

0 commit comments

Comments
 (0)