Browse Source

Added linting

pull/136/head
james.cryer 7 years ago
parent
commit
75b22ecd88
  1. 14
      .editorconfig
  2. 3
      .eslintignore
  3. 27
      .eslintrc
  4. 191
      chai-tests/main_spec.js
  5. 20
      compareImages.js
  6. 602
      demoassets/main.js
  7. 41
      memory-leak-test.js
  8. 80
      nodejs-tests/compareImages.test.js
  9. 245
      nodejs-tests/resemble.test.js
  10. 8003
      package-lock.json
  11. 82
      package.json
  12. 1888
      resemble.js

14
.editorconfig

@ -0,0 +1,14 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
[*.md]
trim_trailing_whitespace = false
[{.travis.yml}]
indent_style = space
indent_size = 2

3
.eslintignore

@ -0,0 +1,3 @@
/node_modules
/libs
/demoassets

27
.eslintrc

@ -0,0 +1,27 @@
{
"extends": [
"eslint-config-es5",
"plugin:prettier/recommended"
],
"parserOptions": {
"ecmaVersion": 2017,
"sourceType": "module"
},
"rules": {
"prettier/prettier": [
"error",
{
"singleQuote": true,
"tabWidth": "4"
}
],
"no-console": "off",
"no-use-before-define": ["warn", { "functions": false, "classes": false, "variables": true }],
"func-names": ["warn", "as-needed"]
},
"env": {
"amd": true,
"es6": true
}
}

191
chai-tests/main_spec.js

File diff suppressed because one or more lines are too long

20
compareImages.js

@ -1,13 +1,13 @@
var resemble = require('./resemble');
const resemble = require("./resemble");
module.exports = function(image1, image2, options) {
return new Promise(function(resolve, reject) {
resemble.compare(image1, image2, options, function(err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
module.exports = function compareImages(image1, image2, options) {
return new Promise((resolve, reject) => {
resemble.compare(image1, image2, options, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
});
};

602
demoassets/main.js

@ -1,301 +1,303 @@
$(function(){
var $target = $('#drop-zone');
function dropZone($target, onDrop){
$target.
bind('dragover', function(){
$target.addClass( 'drag-over' );
return false;
}).
bind("dragend", function () {
$target.removeClass( 'drag-over' );
return false;
}).
bind("dragleave", function () {
$target.removeClass( 'drag-over' );
return false;
}).
bind("drop", function(event) {
var file = event.originalEvent.dataTransfer.files[0];
event.stopPropagation();
event.preventDefault();
$target.removeClass( 'drag-over' );
var droppedImage = new Image();
var fileReader = new FileReader();
fileReader.onload = function (event) {
droppedImage.src = event.target.result;
$target.html(droppedImage);
};
fileReader.readAsDataURL(file);
onDrop(file);
});
}
dropZone($target, function(file){
resemble(file).onComplete(function(data){
$('#image-data').show();
$('#red').css('width',data.red+'%');
$('#green').css('width',data.green+'%');
$('#blue').css('width',data.blue+'%');
$('#alpha').css('width',data.alpha+'%');
$('#brightness').css('width',data.brightness+'%');
$('#white').css('width',data.white+'%');
$('#black').css('width',data.black+'%');
});
});
function onComplete(data){
var time = Date.now();
var diffImage = new Image();
diffImage.src = data.getImageDataUrl();
$('#image-diff').html(diffImage);
$(diffImage).click(function(){
var w = window.open("about:blank", "_blank");
var html = w.document.documentElement;
var body = w.document.body;
html.style.margin = 0;
html.style.padding = 0;
body.style.margin = 0;
body.style.padding = 0;
var img = w.document.createElement("img");
img.src = diffImage.src;
img.alt = "image diff";
img.style.maxWidth = "100%";
img.addEventListener("click", function() {
this.style.maxWidth = this.style.maxWidth === "100%" ? "" : "100%";
});
body.appendChild(img);
});
$('.buttons').show();
if(data.misMatchPercentage == 0){
$('#thesame').show();
$('#diff-results').hide();
} else {
$('#mismatch').text(data.misMatchPercentage);
if(!data.isSameDimensions){
$('#differentdimensions').show();
} else {
$('#differentdimensions').hide();
}
$('#diff-results').show();
$('#thesame').hide();
}
}
var file1;
var file2;
var resembleControl;
dropZone($('#dropzone1'), function(file){
file1 = file;
if(file2){
resembleControl = resemble(file).compareTo(file2).onComplete(onComplete);
}
});
dropZone($('#dropzone2'), function(file){
file2 = file;
if(file1){
resembleControl = resemble(file).compareTo(file1).onComplete(onComplete);
}
});
var buttons = $('.buttons button');
buttons.click(function(){
var $this = $(this);
$this.parent('.buttons').find('button').removeClass('active');
$this.addClass('active');
if($this.is('#raw')){
resembleControl.ignoreNothing();
}
else
if($this.is('#less')){
resembleControl.ignoreLess();
}
if($this.is('#colors')){
resembleControl.ignoreColors();
}
else
if($this.is('#antialising')){
resembleControl.ignoreAntialiasing();
}
else
if($this.is('#alpha')){
resembleControl.ignoreAlpha();
}
else
if($this.is('#same-size')){
resembleControl.scaleToSameSize();
}
else
if($this.is('#original-size')){
resembleControl.useOriginalSize();
}
else
if($this.is('#pink')){
resembleControl.outputSettings({
errorColor: {
red: 255,
green: 0,
blue: 255
}
}).repaint();
}
else
if($this.is('#yellow')){
resembleControl.outputSettings({
errorColor: {
red: 255,
green: 255,
blue: 0
}
}).repaint();
}
else
if($this.is('#flat')){
resembleControl.outputSettings({
errorType: 'flat'
}).repaint();
}
else
if($this.is('#movement')){
resembleControl.outputSettings({
errorType: 'movement'
}).repaint();
}
else
if($this.is('#flatDifferenceIntensity')){
resembleControl.outputSettings({
errorType: 'flatDifferenceIntensity'
}).repaint();
}
else
if($this.is('#movementDifferenceIntensity')){
resembleControl.outputSettings({
errorType: 'movementDifferenceIntensity'
}).repaint();
}
else
if($this.is('#diffOnly')){
resembleControl.outputSettings({
errorType: 'diffOnly'
}).repaint();
}
else
if($this.is('#opaque')){
resembleControl.outputSettings({
transparency: 1
}).repaint();
}
else
if($this.is('#transparent')){
resembleControl.outputSettings({
transparency: 0.3
}).repaint();
}
else
if($this.is('#boundingBox')){
resembleControl.outputSettings({
boundingBox: {
left: $("#bounding-box-x1").val(),
top: $("#bounding-box-y1").val(),
right: $("#bounding-box-x2").val(),
bottom: $("#bounding-box-y2").val()
}
}).repaint();
$this.removeClass('active');
}
if($this.is('#ignoredBox')){
resembleControl.outputSettings({
ignoredBox: {
left: $("#ignored-box-x1").val(),
top: $("#ignored-box-y1").val(),
right: $("#ignored-box-x2").val(),
bottom: $("#ignored-box-y2").val()
}
}).repaint();
$this.removeClass('active');
}
});
(function(){
var xhr = new XMLHttpRequest();
var xhr2 = new XMLHttpRequest();
var xhr3 = new XMLHttpRequest();
var done = $.Deferred();
var dtwo = $.Deferred();
var dthree = $.Deferred();
xhr.open('GET', 'demoassets/People.jpg', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
done.resolve(this.response);
};
xhr.send();
xhr2.open('GET', 'demoassets/People2.jpg', true);
xhr2.responseType = 'blob';
xhr2.onload = function(e) {
dtwo.resolve(this.response);
};
xhr2.send();
xhr3.open('GET', 'demoassets/PeopleAlpha.png', true);
xhr3.responseType = 'blob';
xhr3.onload = function(e) {
dthree.resolve(this.response);
};
xhr3.send();
$('#example-images').click(function(){
$('#dropzone1').html('<img src="demoassets/People.jpg"/>');
$('#dropzone2').html('<img src="demoassets/People2.jpg"/>');
$.when(done, dtwo).done(function(file, file1){
if (typeof FileReader === 'undefined') {
resembleControl = resemble('demoassets/People.jpg').compareTo('demoassets/People2.jpg').onComplete(onComplete);
} else {
resembleControl = resemble(file).compareTo(file1).onComplete(onComplete);
}
});
return false;
});
$('#example-images-alpha').click(function(){
$('#dropzone1').html('<img src="demoassets/People.jpg"/>');
$('#dropzone2').html('<img src="demoassets/PeopleAlpha.png"/>');
$.when(done, dthree).done(function(file, file1){
if (typeof FileReader === 'undefined') {
resembleControl = resemble('demoassets/People.jpg').compareTo('demoassets/PeopleAlpha.png').onComplete(onComplete);
} else {
resembleControl = resemble(file).compareTo(file1).onComplete(onComplete);
}
});
return false;
});
}());
$(function() {
var $target = $("#drop-zone");
function dropZone($target, onDrop) {
$target
.bind("dragover", function() {
$target.addClass("drag-over");
return false;
})
.bind("dragend", function() {
$target.removeClass("drag-over");
return false;
})
.bind("dragleave", function() {
$target.removeClass("drag-over");
return false;
})
.bind("drop", function(event) {
var file = event.originalEvent.dataTransfer.files[0];
event.stopPropagation();
event.preventDefault();
$target.removeClass("drag-over");
var droppedImage = new Image();
var fileReader = new FileReader();
fileReader.onload = function(event) {
droppedImage.src = event.target.result;
$target.html(droppedImage);
};
fileReader.readAsDataURL(file);
onDrop(file);
});
}
dropZone($target, function(file) {
resemble(file).onComplete(function(data) {
$("#image-data").show();
$("#red").css("width", data.red + "%");
$("#green").css("width", data.green + "%");
$("#blue").css("width", data.blue + "%");
$("#alpha").css("width", data.alpha + "%");
$("#brightness").css("width", data.brightness + "%");
$("#white").css("width", data.white + "%");
$("#black").css("width", data.black + "%");
});
});
function onComplete(data) {
var time = Date.now();
var diffImage = new Image();
diffImage.src = data.getImageDataUrl();
$("#image-diff").html(diffImage);
$(diffImage).click(function() {
var w = window.open("about:blank", "_blank");
var html = w.document.documentElement;
var body = w.document.body;
html.style.margin = 0;
html.style.padding = 0;
body.style.margin = 0;
body.style.padding = 0;
var img = w.document.createElement("img");
img.src = diffImage.src;
img.alt = "image diff";
img.style.maxWidth = "100%";
img.addEventListener("click", function() {
this.style.maxWidth =
this.style.maxWidth === "100%" ? "" : "100%";
});
body.appendChild(img);
});
$(".buttons").show();
if (data.misMatchPercentage == 0) {
$("#thesame").show();
$("#diff-results").hide();
} else {
$("#mismatch").text(data.misMatchPercentage);
if (!data.isSameDimensions) {
$("#differentdimensions").show();
} else {
$("#differentdimensions").hide();
}
$("#diff-results").show();
$("#thesame").hide();
}
}
var file1;
var file2;
var resembleControl;
dropZone($("#dropzone1"), function(file) {
file1 = file;
if (file2) {
resembleControl = resemble(file)
.compareTo(file2)
.onComplete(onComplete);
}
});
dropZone($("#dropzone2"), function(file) {
file2 = file;
if (file1) {
resembleControl = resemble(file)
.compareTo(file1)
.onComplete(onComplete);
}
});
var buttons = $(".buttons button");
buttons.click(function() {
var $this = $(this);
$this
.parent(".buttons")
.find("button")
.removeClass("active");
$this.addClass("active");
if ($this.is("#raw")) {
resembleControl.ignoreNothing();
} else if ($this.is("#less")) {
resembleControl.ignoreLess();
}
if ($this.is("#colors")) {
resembleControl.ignoreColors();
} else if ($this.is("#antialising")) {
resembleControl.ignoreAntialiasing();
} else if ($this.is("#alpha")) {
resembleControl.ignoreAlpha();
} else if ($this.is("#same-size")) {
resembleControl.scaleToSameSize();
} else if ($this.is("#original-size")) {
resembleControl.useOriginalSize();
} else if ($this.is("#pink")) {
resembleControl
.outputSettings({
errorColor: {
red: 255,
green: 0,
blue: 255
}
})
.repaint();
} else if ($this.is("#yellow")) {
resembleControl
.outputSettings({
errorColor: {
red: 255,
green: 255,
blue: 0
}
})
.repaint();
} else if ($this.is("#flat")) {
resembleControl
.outputSettings({
errorType: "flat"
})
.repaint();
} else if ($this.is("#movement")) {
resembleControl
.outputSettings({
errorType: "movement"
})
.repaint();
} else if ($this.is("#flatDifferenceIntensity")) {
resembleControl
.outputSettings({
errorType: "flatDifferenceIntensity"
})
.repaint();
} else if ($this.is("#movementDifferenceIntensity")) {
resembleControl
.outputSettings({
errorType: "movementDifferenceIntensity"
})
.repaint();
} else if ($this.is("#diffOnly")) {
resembleControl
.outputSettings({
errorType: "diffOnly"
})
.repaint();
} else if ($this.is("#opaque")) {
resembleControl
.outputSettings({
transparency: 1
})
.repaint();
} else if ($this.is("#transparent")) {
resembleControl
.outputSettings({
transparency: 0.3
})
.repaint();
} else if ($this.is("#boundingBox")) {
resembleControl
.outputSettings({
boundingBox: {
left: $("#bounding-box-x1").val(),
top: $("#bounding-box-y1").val(),
right: $("#bounding-box-x2").val(),
bottom: $("#bounding-box-y2").val()
}
})
.repaint();
$this.removeClass("active");
}
if ($this.is("#ignoredBox")) {
resembleControl
.outputSettings({
ignoredBox: {
left: $("#ignored-box-x1").val(),
top: $("#ignored-box-y1").val(),
right: $("#ignored-box-x2").val(),
bottom: $("#ignored-box-y2").val()
}
})
.repaint();
$this.removeClass("active");
}
});
(function() {
var xhr = new XMLHttpRequest();
var xhr2 = new XMLHttpRequest();
var xhr3 = new XMLHttpRequest();
var done = $.Deferred();
var dtwo = $.Deferred();
var dthree = $.Deferred();
xhr.open("GET", "demoassets/People.jpg", true);
xhr.responseType = "blob";
xhr.onload = function(e) {
done.resolve(this.response);
};
xhr.send();
xhr2.open("GET", "demoassets/People2.jpg", true);
xhr2.responseType = "blob";
xhr2.onload = function(e) {
dtwo.resolve(this.response);
};
xhr2.send();
xhr3.open("GET", "demoassets/PeopleAlpha.png", true);
xhr3.responseType = "blob";
xhr3.onload = function(e) {
dthree.resolve(this.response);
};
xhr3.send();
$("#example-images").click(function() {
$("#dropzone1").html('<img src="demoassets/People.jpg"/>');
$("#dropzone2").html('<img src="demoassets/People2.jpg"/>');
$.when(done, dtwo).done(function(file, file1) {
if (typeof FileReader === "undefined") {
resembleControl = resemble("demoassets/People.jpg")
.compareTo("demoassets/People2.jpg")
.onComplete(onComplete);
} else {
resembleControl = resemble(file)
.compareTo(file1)
.onComplete(onComplete);
}
});
return false;
});
$("#example-images-alpha").click(function() {
$("#dropzone1").html('<img src="demoassets/People.jpg"/>');
$("#dropzone2").html('<img src="demoassets/PeopleAlpha.png"/>');
$.when(done, dthree).done(function(file, file1) {
if (typeof FileReader === "undefined") {
resembleControl = resemble("demoassets/People.jpg")
.compareTo("demoassets/PeopleAlpha.png")
.onComplete(onComplete);
} else {
resembleControl = resemble(file)
.compareTo(file1)
.onComplete(onComplete);
}
});
return false;
});
})();
});

41
memory-leak-test.js

@ -1,32 +1,37 @@
/* eslint no-process-exit: "warn"*/
// node --expose-gc memory-leak-test.js
const fs = require('fs');
const resemble = require('./resemble');
const fs = require("fs");
const resemble = require("./resemble");
let max = 2000;
const timerLabel = "2000 compare";
console.time(timerLabel);
compare();
function compare(){
const people = fs.readFileSync('./demoassets/ghost1.png');
const people2 = fs.readFileSync('./demoassets/ghost2.png');
function compare() {
const people = fs.readFileSync("./demoassets/ghost1.png");
const people2 = fs.readFileSync("./demoassets/ghost2.png");
resemble(people).compareTo(people2).onComplete(function() {
if (--max >= 0) {
process.nextTick(compare);
} else {
process.nextTick(log);
}
global.gc();
if (max % 100 === 0) {
var mem = process.memoryUsage();
console.log(max, mem.rss, mem.heapUsed, mem.external);
}
});
resemble(people)
.compareTo(people2)
.onComplete(() => {
if (--max >= 0) {
process.nextTick(compare);
} else {
process.nextTick(log);
}
global.gc();
if (max % 100 === 0) {
const mem = process.memoryUsage();
console.log(max, mem.rss, mem.heapUsed, mem.external);
}
});
}
function log(){
function log() {
console.timeEnd(timerLabel);
process.exit(0);
}

80
nodejs-tests/compareImages.test.js

@ -1,39 +1,43 @@
const compareImages = require('../compareImages');
const fs = require('fs');
describe('compareImages', () => {
test('works with buffers', async () => {
const data = await compareImages(
fs.readFileSync('./demoassets/People.jpg'),
fs.readFileSync('./demoassets/People2.jpg')
);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual('8.66');
const buffer = data.getBuffer();
expect(buffer).toBeInstanceOf(Buffer);
expect(buffer.length).toBe(91876);
const comparison = fs.readFileSync(
'./nodejs-tests/PeopleComparedToPeople2.png'
);
expect(buffer.equals(comparison)).toBe(true);
const buffer2 = data.getBuffer(true);
const comparison2 = fs.readFileSync(
'./nodejs-tests/PeopleComparedToPeople2WithOriginal.png'
);
expect(buffer2.equals(comparison2)).toBe(true);
});
test('throws when failed', async () => {
const promise = compareImages(
fs.readFileSync('./demoassets/People.jpg'),
'bogus data'
);
await expect(promise).rejects.toMatch('Error: error while reading from input stream');
});
/* eslint-env jest*/
const compareImages = require("../compareImages");
const fs = require("fs");
describe("compareImages", () => {
test("works with buffers", async () => {
const data = await compareImages(
fs.readFileSync("./demoassets/People.jpg"),
fs.readFileSync("./demoassets/People2.jpg")
);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual("8.66");
const buffer = data.getBuffer();
expect(buffer).toBeInstanceOf(Buffer);
expect(buffer.length).toBe(91876);
const comparison = fs.readFileSync(
"./nodejs-tests/PeopleComparedToPeople2.png"
);
expect(buffer.equals(comparison)).toBe(true);
const buffer2 = data.getBuffer(true);
const comparison2 = fs.readFileSync(
"./nodejs-tests/PeopleComparedToPeople2WithOriginal.png"
);
expect(buffer2.equals(comparison2)).toBe(true);
});
test("throws when failed", async () => {
const promise = compareImages(
fs.readFileSync("./demoassets/People.jpg"),
"bogus data"
);
await expect(promise).rejects.toMatch(
"Error: error while reading from input stream"
);
});
});

245
nodejs-tests/resemble.test.js

@ -1,123 +1,131 @@
const resemble = require('../resemble');
const fs = require('fs');
describe('resemble', () => {
test('base64', () => {
const people_src =
'data:image/jpeg;base64,' +
fs.readFileSync('./demoassets/People.jpg', 'base64');
const people2_src =
'data:image/jpeg;base64,' +
fs.readFileSync('./demoassets/People2.jpg', 'base64');
return new Promise(function(resolve, reject) {
resemble(people_src).compareTo(people2_src).onComplete(function(data) {
// console.info('Reached oncomplete for base64_string');
expect(data.diffBounds.bottom).toEqual(431);
expect(data.diffBounds.left).toEqual(22);
expect(data.diffBounds.right).toEqual(450);
expect(data.diffBounds.top).toEqual(58);
expect(data.dimensionDifference.height).toEqual(0);
expect(data.dimensionDifference.width).toEqual(0);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual('8.66');
resolve();
});
});
});
// this doesn't work on windows
// test('files', () => {
// return new Promise(function(resolve, reject) {
// console.log('hello there how are you');
// resemble('demoassets/People.jpg')
// .compareTo('demoassets/People2.jpg')
// .onComplete(function(data) {
// // console.info('Reached oncomplete for request_success');
// expect(data.diffBounds).toEqual(
// expect.objectContaining({
// bottom: expect.any(Number),
// left: expect.any(Number),
// top: expect.any(Number),
// right: expect.any(Number)
// })
// );
//
// expect(data.diffBounds.bottom).toEqual(431);
// expect(data.diffBounds.left).toEqual(22);
// expect(data.diffBounds.right).toEqual(450);
// expect(data.diffBounds.top).toEqual(58);
// expect(data.dimensionDifference.height).toEqual(0);
// expect(data.dimensionDifference.width).toEqual(0);
// expect(data.isSameDimensions).toBe(true);
// expect(data.misMatchPercentage).toEqual('8.66');
// resolve();
// });
// });
// });
test('file not found', () => {
return new Promise(function(resolve, reject) {
resemble('../demoassets/People.jpg')
.compareTo('../demoassets/404-image.jpg')
.onComplete(function(data) {
// console.info('Reached oncomplete for request_404');
// console.log(data);
expect(data.error).toEqual('Error: error while reading from input stream');
resolve();
/* eslint-env jest*/
const resemble = require("../resemble");
const fs = require("fs");
describe("resemble", () => {
test("base64", () => {
const peopleSrc = `data:image/jpeg;base64,${fs.readFileSync(
"./demoassets/People.jpg",
"base64"
)}`;
const people2Src = `data:image/jpeg;base64,${fs.readFileSync(
"./demoassets/People2.jpg",
"base64"
)}`;
return new Promise(resolve => {
resemble(peopleSrc)
.compareTo(people2Src)
.onComplete(data => {
// console.info('Reached oncomplete for base64String');
expect(data.diffBounds.bottom).toEqual(431);
expect(data.diffBounds.left).toEqual(22);
expect(data.diffBounds.right).toEqual(450);
expect(data.diffBounds.top).toEqual(58);
expect(data.dimensionDifference.height).toEqual(0);
expect(data.dimensionDifference.width).toEqual(0);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual("8.66");
resolve();
});
});
});
});
test('node buffers jpg', () => {
const people = fs.readFileSync('./demoassets/People.jpg');
const people2 = fs.readFileSync('./demoassets/People2.jpg');
return new Promise(function(resolve, reject) {
resemble(people).compareTo(people2).onComplete(function(data) {
// console.info('Reached oncomplete for base64_string');
expect(data.diffBounds.bottom).toEqual(431);
expect(data.diffBounds.left).toEqual(22);
expect(data.diffBounds.right).toEqual(450);
expect(data.diffBounds.top).toEqual(58);
expect(data.dimensionDifference.height).toEqual(0);
expect(data.dimensionDifference.width).toEqual(0);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual('8.66');
resolve();
});
// this doesn't work on windows
// test('files', () => {
// return new Promise(function(resolve) {
// console.log('hello there how are you');
// resemble('demoassets/People.jpg')
// .compareTo('demoassets/People2.jpg')
// .onComplete(function(data) {
// // console.info('Reached oncomplete for request_success');
// expect(data.diffBounds).toEqual(
// expect.objectContaining({
// bottom: expect.any(Number),
// left: expect.any(Number),
// top: expect.any(Number),
// right: expect.any(Number)
// })
// );
//
// expect(data.diffBounds.bottom).toEqual(431);
// expect(data.diffBounds.left).toEqual(22);
// expect(data.diffBounds.right).toEqual(450);
// expect(data.diffBounds.top).toEqual(58);
// expect(data.dimensionDifference.height).toEqual(0);
// expect(data.dimensionDifference.width).toEqual(0);
// expect(data.isSameDimensions).toBe(true);
// expect(data.misMatchPercentage).toEqual('8.66');
// resolve();
// });
// });
// });
test("file not found", () =>
new Promise(resolve => {
resemble("../demoassets/People.jpg")
.compareTo("../demoassets/404-image.jpg")
.onComplete(data => {
// console.info('Reached oncomplete for request404');
// console.log(data);
expect(data.error).toEqual(
"Error: error while reading from input stream"
);
resolve();
});
}));
test("node buffers jpg", () => {
const people = fs.readFileSync("./demoassets/People.jpg");
const people2 = fs.readFileSync("./demoassets/People2.jpg");
return new Promise(resolve => {
resemble(people)
.compareTo(people2)
.onComplete(data => {
// console.info('Reached oncomplete for base64String');
expect(data.diffBounds.bottom).toEqual(431);
expect(data.diffBounds.left).toEqual(22);
expect(data.diffBounds.right).toEqual(450);
expect(data.diffBounds.top).toEqual(58);
expect(data.dimensionDifference.height).toEqual(0);
expect(data.dimensionDifference.width).toEqual(0);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual("8.66");
resolve();
});
});
});
});
test('node buffers png', () => {
const people = fs.readFileSync('./demoassets/ghost1.png');
const people2 = fs.readFileSync('./demoassets/ghost2.png');
return new Promise(function(resolve, reject) {
resemble(people).compareTo(people2).onComplete(function(data) {
// console.info('Reached oncomplete for base64_string');
expect(data.diffBounds.bottom).toEqual(138);
expect(data.diffBounds.left).toEqual(90);
expect(data.diffBounds.right).toEqual(157);
expect(data.diffBounds.top).toEqual(107);
expect(data.dimensionDifference.height).toEqual(0);
expect(data.dimensionDifference.width).toEqual(0);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual('0.27');
resolve();
});
});
test("node buffers png", () => {
const people = fs.readFileSync("./demoassets/ghost1.png");
const people2 = fs.readFileSync("./demoassets/ghost2.png");
return new Promise(resolve => {
resemble(people)
.compareTo(people2)
.onComplete(data => {
// console.info('Reached oncomplete for base64String');
expect(data.diffBounds.bottom).toEqual(138);
expect(data.diffBounds.left).toEqual(90);
expect(data.diffBounds.right).toEqual(157);
expect(data.diffBounds.top).toEqual(107);
expect(data.dimensionDifference.height).toEqual(0);
expect(data.dimensionDifference.width).toEqual(0);
expect(data.isSameDimensions).toBe(true);
expect(data.misMatchPercentage).toEqual("0.27");
resolve();
});
});
});
test("test partial diff with bounding box", () => {
const people = fs.readFileSync("./demoassets/ghost1.png");
const people2 = fs.readFileSync("./demoassets/ghost2.png");
test('test partial diff with bounding box', () => {
const people = fs.readFileSync('./demoassets/ghost1.png');
const people2 = fs.readFileSync('./demoassets/ghost2.png');
return new Promise(function(resolve, reject) {
return new Promise(resolve => {
resemble.outputSettings({
boundingBox: {
left: 80,
@ -127,13 +135,12 @@ describe('resemble', () => {
}
});
resemble(people).compareTo(people2).onComplete(function(data) {
expect(data.misMatchPercentage).toEqual('0.04');
resolve();
});
resemble(people)
.compareTo(people2)
.onComplete(data => {
expect(data.misMatchPercentage).toEqual("0.04");
resolve();
});
});
});
});

8003
package-lock.json generated

File diff suppressed because it is too large Load Diff

82
package.json

@ -1,40 +1,46 @@
{
"name": "resemblejs",
"version": "2.10.0",
"description": "Image analysis and comparison with HTML5",
"main": "resemble.js",
"repository": {
"type": "git",
"url": "https://github.com/Huddle/Resemble.js.git"
},
"keywords": [
"comparison",
"visual",
"image",
"diff",
"compare",
"html5"
],
"author": "James Cryer",
"license": "MIT",
"bugs": {
"url": "https://github.com/Huddle/Resemble.js/issues"
},
"homepage": "https://github.com/Huddle/Resemble.js",
"scripts": {
"test": "jest nodejs-tests",
"test-watch": "jest --watch nodejs-tests"
},
"dependencies": {
"canvas-prebuilt": "^1.6.5-prerelease.1"
},
"devDependencies": {
"chai": "^3.4.1",
"jest": "^20.0.4",
"jest-cli": "^20.0.4",
"color-convert": "^1.9.0"
},
"jest": {
"testEnvironment": "node"
}
"name": "resemblejs",
"version": "2.10.0",
"description": "Image analysis and comparison with HTML5",
"main": "resemble.js",
"repository": {
"type": "git",
"url": "https://github.com/Huddle/Resemble.js.git"
},
"keywords": ["comparison", "visual", "image", "diff", "compare", "html5"],
"author": "James Cryer",
"license": "MIT",
"bugs": {
"url": "https://github.com/Huddle/Resemble.js/issues"
},
"homepage": "https://github.com/Huddle/Resemble.js",
"scripts": {
"test": "jest nodejs-tests",
"test-watch": "jest --watch nodejs-tests",
"precommit": "lint-staged",
"lint": "eslint **/*.js --fix"
},
"lint-staged": {
"*.{js,json,css,md}": ["prettier --write", "git add"]
},
"dependencies": {
"canvas-prebuilt": "^1.6.5-prerelease.1"
},
"devDependencies": {
"chai": "^3.4.1",
"color-convert": "^1.9.0",
"eslint": "^4.19.1",
"eslint-config-es5": "^0.5.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.9.0",
"eslint-plugin-prettier": "^2.6.0",
"husky": "^0.14.3",
"jest": "^20.0.4",
"jest-cli": "^20.0.4",
"lint-staged": "^7.0.0",
"prettier": "^1.11.1"
},
"jest": {
"testEnvironment": "node"
}
}

1888
resemble.js

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save