diff --git a/nodejs-tests/pixelErrorColorTest.png b/nodejs-tests/pixelErrorColorTest.png new file mode 100644 index 0000000..fb055ac Binary files /dev/null and b/nodejs-tests/pixelErrorColorTest.png differ diff --git a/nodejs-tests/resemble.test.js b/nodejs-tests/resemble.test.js index fd802ac..8e20b74 100644 --- a/nodejs-tests/resemble.test.js +++ b/nodejs-tests/resemble.test.js @@ -121,7 +121,7 @@ describe("resemble", () => { }); }); - test("test partial diff with bounding box", () => { + test("partial diff with bounding box", () => { const people = fs.readFileSync("./demoassets/ghost1.png"); const people2 = fs.readFileSync("./demoassets/ghost2.png"); @@ -143,4 +143,35 @@ describe("resemble", () => { }); }); }); + + test("error pixel color", () => { + const people = fs.readFileSync("./demoassets/ghost1.png"); + const people2 = fs.readFileSync("./demoassets/ghost2.png"); + + return new Promise(resolve => { + resemble.outputSettings({ + errorColor: { + red: 0, + green: 255, + blue: 0 + } + }); + + resemble(people) + .compareTo(people2) + .onComplete(data => { + const buffer = data.getBuffer(); + + expect(buffer).toBeInstanceOf(Buffer); + expect(buffer.length).toBe(9429); + + const comparison = fs.readFileSync( + "./nodejs-tests/pixelErrorColorTest.png" + ); + + expect(buffer.equals(comparison)).toBe(true); + resolve(); + }); + }); + }); }); diff --git a/package-lock.json b/package-lock.json index 079660d..644b6da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "resemblejs", - "version": "2.10.1", + "version": "2.10.2", "lockfileVersion": 1, "dependencies": { "@babel/code-frame": { @@ -959,6 +959,38 @@ } } }, + "data-urls": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", + "integrity": + "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", + "dev": true, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + }, + "tr46": { + "version": "1.0.1", + "resolved": + "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true + }, + "whatwg-url": { + "version": "6.4.1", + "resolved": + "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", + "integrity": + "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", + "dev": true + } + } + }, "date-fns": { "version": "1.29.0", "resolved": @@ -1251,19 +1283,11 @@ "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", "dev": true }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": - "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": - "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", - "dev": true - }, "eslint-plugin-import": { - "version": "2.9.0", + "version": "2.11.0", "resolved": - "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", - "integrity": "sha1-JgAu+/ylmJtyiKwEdQi9JPIXsWk=", + "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.11.0.tgz", + "integrity": "sha1-Fa7qN6Z0mdhI6OmBgG1GJ7VQOBY=", "dev": true, "dependencies": { "doctrine": { @@ -1273,6 +1297,13 @@ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": + "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": @@ -1301,6 +1332,14 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true }, + "resolve": { + "version": "1.7.1", + "resolved": + "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": + "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true + }, "strip-bom": { "version": "3.0.0", "resolved": @@ -2817,11 +2856,11 @@ "dev": true }, "lint-staged": { - "version": "7.0.0", + "version": "7.1.0", "resolved": - "https://registry.npmjs.org/lint-staged/-/lint-staged-7.0.0.tgz", + "https://registry.npmjs.org/lint-staged/-/lint-staged-7.1.0.tgz", "integrity": - "sha512-6Z89we28Qy1Ez7ZxO8yYfPKqzdxkSjnURq1d3RS2gKkZrA135xN+ptF3EWHrcHyBMmgA20vA7dGCQGj+OMS22g==", + "sha512-0l+PRD21v2zBRcfEIxjFMo2DiQ94wykRXH/aEw3aTMYUmnpTRPS1rc3DryPWf+qtK1Pjd51pLigHGopxgDMK5A==", "dev": true, "dependencies": { "acorn": { @@ -2884,11 +2923,11 @@ "dev": true }, "chalk": { - "version": "2.3.2", + "version": "2.4.1", "resolved": - "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": - "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true }, "cryptiles": { @@ -3162,19 +3201,19 @@ "dev": true }, "jsdom": { - "version": "11.6.2", + "version": "11.10.0", "resolved": - "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", + "https://registry.npmjs.org/jsdom/-/jsdom-11.10.0.tgz", "integrity": - "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", + "sha512-x5No5FpJgBg3j5aBwA8ka6eGuS5IxbC8FOkmyccKvObtFT0bDMict/LOxINZsZGZSfGdNomLZ/qRV9Bpq/GIBA==", "dev": true }, "lodash": { - "version": "4.17.5", + "version": "4.17.10", "resolved": - "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", "integrity": - "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "micromatch": { @@ -3200,21 +3239,13 @@ "dev": true }, "braces": { - "version": "2.3.1", + "version": "2.3.2", "resolved": - "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": - "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": - "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": - "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true - }, "extend-shallow": { "version": "2.0.1", "resolved": @@ -3332,6 +3363,14 @@ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, + "please-upgrade-node": { + "version": "3.0.2", + "resolved": + "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.0.2.tgz", + "integrity": + "sha512-bslfSeW+ksUbB/sYZeEdKFyTG4YWU9YKRvqfSRvZKE675khAuBUPqV5RUwJZaGuWmVQLweK45Q+lPHFVnSlSug==", + "dev": true + }, "pretty-format": { "version": "22.4.3", "resolved": @@ -3348,10 +3387,10 @@ "dev": true }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": - "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "request": { @@ -3379,19 +3418,27 @@ "dev": true }, "source-map-support": { - "version": "0.5.4", + "version": "0.5.5", + "resolved": + "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": + "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", + "dev": true + }, + "staged-git-files": { + "version": "1.1.1", "resolved": - "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", "integrity": - "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", "dev": true }, "supports-color": { - "version": "5.3.0", + "version": "5.4.0", "resolved": - "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": - "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true }, "tr46": { @@ -3402,11 +3449,11 @@ "dev": true }, "whatwg-url": { - "version": "6.4.0", + "version": "6.4.1", "resolved": - "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", "integrity": - "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", "dev": true }, "xml-name-validator": { @@ -4196,13 +4243,6 @@ } } }, - "please-upgrade-node": { - "version": "3.0.1", - "resolved": - "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.0.1.tgz", - "integrity": "sha1-CmgfLBiRXlQzpcos2U4Lggangts=", - "dev": true - }, "pluralize": { "version": "7.0.0", "resolved": @@ -4240,11 +4280,10 @@ "dev": true }, "prettier": { - "version": "1.11.1", + "version": "1.12.1", "resolved": - "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": - "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", + "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", "dev": true }, "pretty-format": { @@ -4643,6 +4682,13 @@ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, + "semver-compare": { + "version": "1.0.0", + "resolved": + "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": @@ -4912,13 +4958,6 @@ "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, - "staged-git-files": { - "version": "1.1.0", - "resolved": - "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.0.tgz", - "integrity": "sha1-GpuxMcGIVgECPHqt3T1UwiFCxSY=", - "dev": true - }, "static-extend": { "version": "0.1.2", "resolved": @@ -5004,6 +5043,13 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==" }, + "string-argv": { + "version": "0.0.2", + "resolved": + "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, "string-length": { "version": "1.0.1", "resolved": @@ -5513,6 +5559,14 @@ "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", "dev": true }, + "whatwg-mimetype": { + "version": "2.1.0", + "resolved": + "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", + "integrity": + "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", + "dev": true + }, "whatwg-url": { "version": "4.8.0", "resolved": diff --git a/package.json b/package.json index 0b05fb8..2c1b5e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "resemblejs", - "version": "2.10.1", + "version": "2.10.2", "description": "Image analysis and comparison with HTML5", "main": "resemble.js", "repository": { @@ -34,13 +34,13 @@ "eslint": "^4.19.1", "eslint-config-es5": "^0.5.0", "eslint-config-prettier": "^2.9.0", - "eslint-plugin-import": "^2.9.0", + "eslint-plugin-import": "^2.11.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" + "lint-staged": "^7.1.0", + "prettier": "^1.12.1" }, "jest": { "testEnvironment": "node" diff --git a/resemble.js b/resemble.js index 80fbf3b..4b3a97a 100644 --- a/resemble.js +++ b/resemble.js @@ -718,7 +718,7 @@ URL: https://github.com/Huddle/Resemble.js if (options.errorColor) { for (key in options.errorColor) { - if (options.hasOwnProperty(key)) { + if (options.errorColor.hasOwnProperty(key)) { errorPixelColor[key] = options.errorColor[key] === void 0 ? errorPixelColor[key]