@syngrisi/syngrisi
Version:
Syngrisi - Visual Testing Tool
61 lines (54 loc) • 2.03 kB
JavaScript
const resemble = require('@syngrisi/node-resemble.js');
async function streamToBuffer(stream) {
return new Promise((resolve, reject) => {
const data = [];
stream.on('data', (chunk) => {
data.push(chunk);
});
stream.on('end', () => {
resolve(Buffer.concat(data));
});
stream.on('error', (err) => {
reject(err);
});
});
}
module.exports = function compareImages(image1, image2, options) {
return new Promise(
(resolve, reject) => {
try {
const ignoreTransform = {
antialiasing: 'ignoreAntialiasing',
colors: 'ignoreColors',
nothing: 'ignoreNothing',
};
const ignoreMethod = ignoreTransform[options.ignore] ? ignoreTransform[options.ignore] : 'ignoreAntialiasing';
const outputOpts = options.output;
resemble.outputSettings(
outputOpts
);
let ignoredRect;
if (options.ignoreRectangles) {
ignoredRect = options.ignoreRectangles.map((it) => {
delete it.name;
return [it.left, it.top, it.right - it.left, it.bottom - it.top];
});
}
resemble(image1)
.compareTo(image2)[ignoreMethod]()
.ignoreRectangles(ignoredRect)
.onComplete(async (data) => {
console.log(data);
const stream = await data.getDiffImage();
const buffer = await streamToBuffer(stream.pack());
data.getBuffer = function () {
return buffer;
};
return resolve(data);
});
} catch (e) {
return reject(e);
}
}
);
};