{"_id":"@currys-co-uk/codeceptjs-resemblehelper","_rev":"5-33ce595b8b51866466d4b472062b9466","name":"@currys-co-uk/codeceptjs-resemblehelper","dist-tags":{"latest":"4.2.1"},"versions":{"4.0.0":{"name":"@currys-co-uk/codeceptjs-resemblehelper","version":"4.0.0","publishConfig":{"access":"public"},"description":"Forked Resemble JS helper for CodeceptJS, with Support for Playwright, Webdriver, TestCafe, Puppeteer & Appium","main":"index.js","types":"index.d.ts","homepage":"https://github.com/currys-co-uk/codeceptjs-resemblehelper#readme","scripts":{"def":"npx codeceptjs def --output .","ts:types":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js","tsc:build":"npx tsc","test":"echo \"test OK\"","lint:prettier":"eslint index.ts ./tools ./configs ./tests && prettier --check .","lint:prettier-fix":"eslint index.ts ./tools ./configs ./tests --fix && prettier --write .","conf:prepareBaseImage_undefined":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js && codeceptjs run --config=./configs/prepareBaseImage-undefined.conf.js  --debug","conf:prepareBaseImage_true":"npm run def -- --config ./configs/prepareBaseImage-true.conf.js && codeceptjs run --config=./configs/prepareBaseImage-true.conf.js  --debug","conf:prepareBaseImage_false":"npm run def -- --config ./configs/prepareBaseImage-false.conf.js && codeceptjs run --config=./configs/prepareBaseImage-false.conf.js  --debug","ignoredElement_x":"npm run def -- --config ./configs/ignored.conf.js && codeceptjs run --config=./configs/ignored.conf.js --debug","createSubFoldersInBaseFolder":"npm run def -- --config ./configs/createSubFoldersInBaseFolder.conf.js && codeceptjs run --config=./configs/createSubFoldersInBaseFolder.conf.js --debug","updateMismatchedBaseImage":"npm run def -- --config ./configs/updateMismatchedBaseImage.conf.js && codeceptjs run --config=./configs/updateMismatchedBaseImage.conf.js --debug"},"repository":{"type":"git","url":"git+https://github.com/currys-co-uk/codeceptjs-resemblehelper.git"},"dependencies":{"@types/mkdirp":"^1.0.1","@types/mocha":"^8.2.2","@types/node":"^15.6.2","@types/resemblejs":"^3.2.0","aws-sdk":"^2.662.0","canvas":"^2.6.1","chalk":"^4.1.0","image-size":"^1.0.0","mkdirp":"^1.0.4","mz":"^2.7.0","path":"^0.12.7","resemblejs":"^3.2.4","ts-node":"^10.0.0"},"devDependencies":{"@semantic-release/changelog":"^5.0.1","@typescript-eslint/eslint-plugin":"^4.26.1","@typescript-eslint/parser":"^4.26.1","@wdio/cli":"^6.12.0","allure-commandline":"^2.13.0","codeceptjs":"^3.0.4","codeceptjs-assert":"0.0.5","eslint":"^7.28.0","eslint-plugin-import":"^2.22.1","mocha":"^6.2.2","mochawesome":"^4.1.0","prettier":"^2.3.2","semantic-release":"^17.3.7","typescript":"^4.3.2","webdriverio":"^6.12.0"},"keywords":["codeceptJS","codeceptjs","resemblejs","codeceptjs-resemble"],"license":"MIT","gitHead":"f06f22390b579358079c19d83ea0a876bf9f334d","bugs":{"url":"https://github.com/currys-co-uk/codeceptjs-resemblehelper/issues"},"_id":"@currys-co-uk/codeceptjs-resemblehelper@4.0.0","_nodeVersion":"14.18.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-xJobfdjwiKq87FgFyU0lXKen6NXUD8S+hWJWoh1gEhMML2QypgvlCIapv03+aYzGT9A2evkWvYsBmdRpNNtEtw==","shasum":"96148cbeba0efbab6fcef96cb6bc4943c5684188","tarball":"https://registry.npmjs.org/@currys-co-uk/codeceptjs-resemblehelper/-/codeceptjs-resemblehelper-4.0.0.tgz","fileCount":7,"unpackedSize":62094,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlpuODatVGwXBdvr8rpGQUmBV2EE2QnuXDL+GAW1qh8gIgHz3ij04Sp8wEvjs4/eOgmDpHQP4yzWuZ14Kbu23ZycM="}]},"_npmUser":{"name":"patrjam","email":"patrjam@gmail.com"},"directories":{},"maintainers":[{"name":"stan.bures","email":"stan.bures@gmail.com"},{"name":"jan_travnicek","email":"trawais002@gmail.com"},{"name":"patrjam","email":"patrjam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codeceptjs-resemblehelper_4.0.0_1634040263377_0.09673111887613728"},"_hasShrinkwrap":false},"4.1.0":{"name":"@currys-co-uk/codeceptjs-resemblehelper","version":"4.1.0","publishConfig":{"access":"public"},"description":"Forked Resemble JS helper for CodeceptJS, with Support for Playwright, Webdriver, TestCafe, Puppeteer & Appium","main":"index.js","types":"index.d.ts","homepage":"https://github.com/currys-co-uk/codeceptjs-resemblehelper#readme","scripts":{"def":"npx codeceptjs def --output .","ts:types":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js","tsc:build":"npx tsc","test":"echo \"test OK\"","semantic:release":"npx semantic-release --debug","lint:prettier":"eslint index.ts ./tools ./configs ./tests && prettier --check .","lint:prettier-fix":"eslint index.ts ./tools ./configs ./tests --fix && prettier --write .","conf:prepareBaseImage_undefined":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js && codeceptjs run --config=./configs/prepareBaseImage-undefined.conf.js  --debug","conf:prepareBaseImage_true":"npm run def -- --config ./configs/prepareBaseImage-true.conf.js && codeceptjs run --config=./configs/prepareBaseImage-true.conf.js  --debug","conf:prepareBaseImage_false":"npm run def -- --config ./configs/prepareBaseImage-false.conf.js && codeceptjs run --config=./configs/prepareBaseImage-false.conf.js  --debug","ignoredElement_x":"npm run def -- --config ./configs/ignored.conf.js && codeceptjs run --config=./configs/ignored.conf.js --debug","createSubFoldersInBaseFolder":"npm run def -- --config ./configs/createSubFoldersInBaseFolder.conf.js && codeceptjs run --config=./configs/createSubFoldersInBaseFolder.conf.js --debug","updateMismatchedBaseImage":"npm run def -- --config ./configs/updateMismatchedBaseImage.conf.js && codeceptjs run --config=./configs/updateMismatchedBaseImage.conf.js --debug","ignoreNothing":"npm run def -- --config ./configs/ignoreNothing.conf.js && codeceptjs run --config=./configs/ignoreNothing.conf.js --debug"},"repository":{"type":"git","url":"git+https://github.com/currys-co-uk/codeceptjs-resemblehelper.git"},"dependencies":{"@types/mkdirp":"^1.0.1","@types/mocha":"^8.2.2","@types/node":"^15.6.2","@types/resemblejs":"^3.2.0","aws-sdk":"^2.662.0","canvas":"^2.6.1","chalk":"^4.1.0","image-size":"^1.0.0","mkdirp":"^1.0.4","mz":"^2.7.0","path":"^0.12.7","resemblejs":"^4.0.0","ts-node":"^10.0.0"},"devDependencies":{"@semantic-release/changelog":"^5.0.1","@typescript-eslint/eslint-plugin":"^4.26.1","@typescript-eslint/parser":"^4.26.1","@wdio/cli":"^6.12.0","allure-commandline":"^2.13.0","codeceptjs":"^3.0.4","codeceptjs-assert":"0.0.5","eslint":"^7.28.0","eslint-plugin-import":"^2.22.1","mocha":"^6.2.2","mochawesome":"^4.1.0","prettier":"^2.4.1","semantic-release":"^17.3.7","typescript":"^4.3.2","webdriverio":"^6.12.0"},"keywords":["codeceptJS","codeceptjs","resemblejs","codeceptjs-resemble"],"license":"MIT","gitHead":"c5dd19946c295d1afaf3b2f90a11c10594776c9d","bugs":{"url":"https://github.com/currys-co-uk/codeceptjs-resemblehelper/issues"},"_id":"@currys-co-uk/codeceptjs-resemblehelper@4.1.0","_nodeVersion":"16.13.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-yCT4/60xwSbpHJi5DAjkycZMn8rYnyUkNYcNAkujEApX63fwJLlYm9uHLHlirhYxdBF4lXnBhuc040PlEqd6WA==","shasum":"300d98750a1eb7249ee2b515c269b6e73f24490b","tarball":"https://registry.npmjs.org/@currys-co-uk/codeceptjs-resemblehelper/-/codeceptjs-resemblehelper-4.1.0.tgz","fileCount":7,"unpackedSize":63094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlncHCRA9TVsSAnZWagAAIhoP/2KtFsTNfSoSI+4WIVGM\ns5jptvzCSUcQgNPpraws1Skpo6JdZFVzk/WBf6/WBLvnNRWO4DGpDHI/cHjd\nJ+wYsKvG3BhWFIdXcrRBYeTlnObEPkT5LhH3kBcPf3TsrgcBaJxkLASE7AMC\n2aJhVZeYUQhzrgqWU9z3muRUbjJjqMBGG2KSzWbWhfolJs4Jbpb2BRHCUEjp\n8UdgUtd1W04yrTv8FhFyNmoBflTKTqc/rByW7FzepgCGG6zewCS8yf5o4pAj\nvuh6m3szIsv5bnDqOl0U2n6bDOPdkZoYZ2VWIeCvIU89eVlGvK6wmgSU4tAD\nho55uVtwm3S830VAW0Qojj9LVD40bVVWuVIF8/JrJnBfhm0rWhxydp+5hImI\n3s/MZJeTkraQTqV9thyg+fxHBF99+fsHdIQuOUuYHCtdufpCye3DAO6/ejsh\nGTz2HIjWMzqWIMSK50+523Mh9Z1vXJb5YqISLZge3EgNlPX3frVX3BQaC7Sg\nxBrW4IKkgHO0yabhpvg4iGU7TXQEsiX9Rgu5wLX/DIPS1MCHQYZEduDrgEuZ\nq4qVRGubRkUSY4lr/xbba2os6mNxyEP8clkV1JgyH3cgZ3moY5hqsMB21bQq\nBpZBPrue9fytWGrawgQh8hIVyRZYNmotxDQvSqffTI0/QgtIGU1PW3mCgYPM\nWQf0\r\n=A8HH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFYwtiBj7EiHA9fcXT6qAZ3Wk71CIQg8h8/iodiJinmJAiBXEE9TXcFRxG2SFRVpriiOl28uGs2Zn4zotOUcAKttNw=="}]},"_npmUser":{"name":"patrjam","email":"patrjam@gmail.com"},"directories":{},"maintainers":[{"name":"stan.bures","email":"stan.bures@gmail.com"},{"name":"jan_travnicek","email":"trawais002@gmail.com"},{"name":"patrjam","email":"patrjam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codeceptjs-resemblehelper_4.1.0_1637250823360_0.5235823614767636"},"_hasShrinkwrap":false},"4.2.0":{"name":"@currys-co-uk/codeceptjs-resemblehelper","version":"4.2.0","publishConfig":{"access":"public"},"description":"Forked Resemble JS helper for CodeceptJS, with Support for Playwright, Webdriver, TestCafe, Puppeteer & Appium","main":"index.js","types":"index.d.ts","homepage":"https://github.com/currys-co-uk/codeceptjs-resemblehelper#readme","scripts":{"def":"npx codeceptjs def --output .","ts:types":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js","tsc:build":"npx tsc","test":"echo \"test OK\"","semantic:release":"npx semantic-release --debug","lint:prettier":"eslint index.ts ./tools ./configs ./tests && prettier --check .","lint:prettier-fix":"eslint index.ts ./tools ./configs ./tests --fix && prettier --write .","conf:prepareBaseImage_undefined":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js && codeceptjs run --config=./configs/prepareBaseImage-undefined.conf.js  --debug","conf:prepareBaseImage_true":"npm run def -- --config ./configs/prepareBaseImage-true.conf.js && codeceptjs run --config=./configs/prepareBaseImage-true.conf.js  --debug","conf:prepareBaseImage_false":"npm run def -- --config ./configs/prepareBaseImage-false.conf.js && codeceptjs run --config=./configs/prepareBaseImage-false.conf.js  --debug","ignoredElement_x":"npm run def -- --config ./configs/ignored.conf.js && codeceptjs run --config=./configs/ignored.conf.js --debug","createSubFoldersInBaseFolder":"npm run def -- --config ./configs/createSubFoldersInBaseFolder.conf.js && codeceptjs run --config=./configs/createSubFoldersInBaseFolder.conf.js --debug","updateMismatchedBaseImage":"npm run def -- --config ./configs/updateMismatchedBaseImage.conf.js && codeceptjs run --config=./configs/updateMismatchedBaseImage.conf.js --debug","ignoreNothing":"npm run def -- --config ./configs/ignoreNothing.conf.js && codeceptjs run --config=./configs/ignoreNothing.conf.js --debug"},"repository":{"type":"git","url":"git+https://github.com/currys-co-uk/codeceptjs-resemblehelper.git"},"dependencies":{"@types/mkdirp":"^1.0.1","@types/mocha":"^8.2.2","@types/node":"^15.6.2","@types/resemblejs":"^3.2.0","aws-sdk":"^2.662.0","canvas":"^2.6.1","chalk":"^4.1.0","image-size":"^1.0.0","mkdirp":"^1.0.4","mz":"^2.7.0","path":"^0.12.7","resemblejs":"^4.0.0","ts-node":"^10.0.0"},"devDependencies":{"@semantic-release/changelog":"^5.0.1","@typescript-eslint/eslint-plugin":"^4.26.1","@typescript-eslint/parser":"^4.26.1","@wdio/cli":"^6.12.0","allure-commandline":"^2.13.0","codeceptjs":"^3.0.4","codeceptjs-assert":"0.0.5","eslint":"^7.28.0","eslint-plugin-import":"^2.22.1","mocha":"^6.2.2","mochawesome":"^4.1.0","prettier":"^2.4.1","semantic-release":"^17.3.7","typescript":"^4.3.2","webdriverio":"^6.12.0"},"keywords":["codeceptJS","codeceptjs","resemblejs","codeceptjs-resemble"],"license":"MIT","gitHead":"8410fddee2783c31b7030961ed2474001d8948e1","bugs":{"url":"https://github.com/currys-co-uk/codeceptjs-resemblehelper/issues"},"_id":"@currys-co-uk/codeceptjs-resemblehelper@4.2.0","_nodeVersion":"16.13.0","_npmVersion":"7.15.1","dist":{"integrity":"sha512-Mz+klgQJP1mVuGMpiPR9OQJVdQ+6CNwCwLQWvHL2zJ+xbkMirlm9zayllJTX6ZE8OPraUK9dc0Y/xDuEn9AC9A==","shasum":"f05d3081a4577343dcfe931e967ea76c67319552","tarball":"https://registry.npmjs.org/@currys-co-uk/codeceptjs-resemblehelper/-/codeceptjs-resemblehelper-4.2.0.tgz","fileCount":7,"unpackedSize":63672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm6bWCRA9TVsSAnZWagAAOUgQAIHdLFXLmyNoHJ7i7sG9\nTVRfTOliYDmf+mWos3bOT26Y2lxJP1dhtrVzrS+UqVRZyPBf1u8vKjQH44Zg\nPR2xn+tnNpPOvRHAOJWk+FpFAcgr306mSr3GuZ9RagohMabAeYZh3GeRGH/M\nM/Tz4oUGRbt6uARJ42T5veB5QWIIFznxvvZSpdtHn+cqntveBx5z/71xFu2/\nP8tp4YsLzbRjneCzvc6scHErFo07aYp341DFo6lbLAnV4wkboZLZX3OdhoK2\nzlFLk+Bycn+6WRAxeuf0IPjtlw63coDdoNb2TiLMXAZxuuq+ieTiJTV6RJQg\nJMeMve5XNxXLFialk8QYU5eXDvj2oswvACzwvS2LvDZk87uYYEbUNcKCyuIv\n+nAF/Wfb3qOSNp0SCRaAJMHJQxnl3FiggHtnNIGDMWoQEAX2ZGUb5BHltMRi\n22mlnCpsSCbyHoDMF+bUZX1QQh6JeduA8V8Vk6CtKymeMnXsS4iP3drrZRec\nWlnYY5WlScx7Ll0ReItrmF0fJ2f0GNeeRux9hlaGn7gOUBE3Gso7kWK9wuhs\nh77UtlRfAodVjrJadKFm0x5/ZSUo/H55tKH9zN62HRJ325wBOkkFe9pIvTxl\ndDYYNaFwcllWnVR0lVLlEqgrap6Dz5O1yRfaGsgQVSYTkvKSnniXKrGgAC+j\nEBf3\r\n=GZY8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFjFxaGRczVg8Iq9/ABpj4B8UQklhesAhtpUNkmvplugIgLE2kiFPu/cu1Lc1bQ4SW5j4zHxHe1aLiybBrd78k9y4="}]},"_npmUser":{"name":"patrjam","email":"patrjam@gmail.com"},"directories":{},"maintainers":[{"name":"stan.bures","email":"stan.bures@gmail.com"},{"name":"jan_travnicek","email":"trawais002@gmail.com"},{"name":"patrjam","email":"patrjam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codeceptjs-resemblehelper_4.2.0_1637590742739_0.6856172450403628"},"_hasShrinkwrap":false},"4.2.1":{"name":"@currys-co-uk/codeceptjs-resemblehelper","version":"4.2.1","publishConfig":{"access":"public"},"description":"Forked Resemble JS helper for CodeceptJS, with Support for Playwright, Webdriver, TestCafe, Puppeteer & Appium","main":"index.js","types":"index.d.ts","homepage":"https://github.com/currys-co-uk/codeceptjs-resemblehelper#readme","scripts":{"def":"npx codeceptjs def --output .","ts:types":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js","tsc:build":"npx tsc","test":"echo \"test OK\"","semantic:release":"npx semantic-release --debug","lint:prettier":"eslint index.ts ./tools ./configs ./tests && prettier --check .","lint:prettier-fix":"eslint index.ts ./tools ./configs ./tests --fix && prettier --write .","conf:prepareBaseImage_undefined":"npm run def -- --config ./configs/prepareBaseImage-undefined.conf.js && codeceptjs run --config=./configs/prepareBaseImage-undefined.conf.js  --debug","conf:prepareBaseImage_true":"npm run def -- --config ./configs/prepareBaseImage-true.conf.js && codeceptjs run --config=./configs/prepareBaseImage-true.conf.js  --debug","conf:prepareBaseImage_false":"npm run def -- --config ./configs/prepareBaseImage-false.conf.js && codeceptjs run --config=./configs/prepareBaseImage-false.conf.js  --debug","ignoredElement_x":"npm run def -- --config ./configs/ignored.conf.js && codeceptjs run --config=./configs/ignored.conf.js --debug","createSubFoldersInBaseFolder":"npm run def -- --config ./configs/createSubFoldersInBaseFolder.conf.js && codeceptjs run --config=./configs/createSubFoldersInBaseFolder.conf.js --debug","updateMismatchedBaseImage":"npm run def -- --config ./configs/updateMismatchedBaseImage.conf.js && codeceptjs run --config=./configs/updateMismatchedBaseImage.conf.js --debug","ignoreNothing":"npm run def -- --config ./configs/ignoreNothing.conf.js && codeceptjs run --config=./configs/ignoreNothing.conf.js --debug"},"repository":{"type":"git","url":"git+https://github.com/currys-co-uk/codeceptjs-resemblehelper.git"},"dependencies":{"@types/mkdirp":"^1.0.1","@types/mocha":"^8.2.2","@types/node":"^15.6.2","@types/resemblejs":"^3.2.0","aws-sdk":"^2.662.0","canvas":"^2.8.0","chalk":"^4.1.0","image-size":"^1.0.0","mkdirp":"^1.0.4","mz":"^2.7.0","path":"^0.12.7","resemblejs":"^4.0.0","ts-node":"^10.0.0"},"devDependencies":{"@semantic-release/changelog":"^5.0.1","@typescript-eslint/eslint-plugin":"^4.26.1","@typescript-eslint/parser":"^4.26.1","@wdio/cli":"^6.12.0","allure-commandline":"^2.13.0","codeceptjs":"^3.0.4","codeceptjs-assert":"0.0.5","eslint":"^7.28.0","eslint-plugin-import":"^2.22.1","mocha":"^6.2.2","mochawesome":"^4.1.0","prettier":"^2.4.1","semantic-release":"^17.3.7","typescript":"^4.3.2","webdriverio":"^6.12.0"},"keywords":["codeceptJS","codeceptjs","resemblejs","codeceptjs-resemble"],"license":"MIT","gitHead":"039fa528919c7c8dbc97bd2b49238d531a686936","bugs":{"url":"https://github.com/currys-co-uk/codeceptjs-resemblehelper/issues"},"_id":"@currys-co-uk/codeceptjs-resemblehelper@4.2.1","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-gc02UM2kvLAs6v4kkwh4199VLrBcwoxkYdOwGIKTEXICYROyn578077Ou0TLYgtnmx1U7+U5KDQkkjrdTvUNIg==","shasum":"b67ed210f63da7241cf84ce230d74d4046eac568","tarball":"https://registry.npmjs.org/@currys-co-uk/codeceptjs-resemblehelper/-/codeceptjs-resemblehelper-4.2.1.tgz","fileCount":7,"unpackedSize":63834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0t6dCRA9TVsSAnZWagAAbwoQAJGhgulzv5mmnVqZj+x3\nd1l+48+dJ8z4Rs3Rbkuq0jonhB3/fupKN2ZRGJvyrFl2+eV8NAlA3WTmQOzl\ngpKDKdFt3FSyF0kh82bHtX2XWft3XeXmT5f3AyylF+UA0wXV/cmDjAJ5yc6g\nxSBE9Uww7A+IKp5N0hMUWUTqsIlYb8W6pm9z9ql1QxQmMLGsaguP2boDAWur\nSsdZWd5/AaW9JOwsSbp96TK3xlJJ58oWRu6g6uEGpT8ag6plZ56KppTfCq8x\nOmzmKBPefATNl99agYBFw6TlT0VEeofPjMVsGf+AAJ/optJe2lvMFlb/3D3X\n0nT3KS8uRu1RoBvYGNnoRmh19fhcety9cKG3hU2T4fGUaWzEzg74j79TPSPu\n553I/sb+VuAz3HyRftb5+BmwLxF2aQjU1XvH0eZu/szY1dFXpw/3dnU0SIw7\nnD6Zdc4oWVN8+WDYvREM0RnKc/8TQKxaoJzGzAkozcJHx+QavuITjgSmwzuy\n1DPKavXSoDbrhGnk7U/htHILSNHZ/mq2FxrDEgTmpYKtXWrzYDS7ZFakxRer\neCKSBdfrR2aRgUtcGWZ9LacSV6t/Y8qsG+mt29k2hUjd6TEsNKJ9LUODkSE5\nUXaNgdm9v4JmlhjBmBcKzaImnHYtM4vRVJSJJAH05TMDte9DlNwTugN4PjKb\nZJn8\r\n=eeRA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDF3nXHX92vVEsoI/W8sH05G6ctkqR7clzIYuhHLTsbiAiEA1l9TSAJhRnd6DtbXnuhQ7J3hzyYz1W1RND2D0KMXPpE="}]},"_npmUser":{"name":"patrjam","email":"patrjam@gmail.com"},"directories":{},"maintainers":[{"name":"stan.bures","email":"stan.bures@gmail.com"},{"name":"jan_travnicek","email":"trawais002@gmail.com"},{"name":"patrjam","email":"patrjam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/codeceptjs-resemblehelper_4.2.1_1641209501442_0.9983754457836496"},"_hasShrinkwrap":false}},"time":{"created":"2021-10-12T12:04:23.330Z","4.0.0":"2021-10-12T12:04:23.548Z","modified":"2022-04-05T02:20:37.003Z","4.1.0":"2021-11-18T15:53:43.525Z","4.2.0":"2021-11-22T14:19:02.879Z","4.2.1":"2022-01-03T11:31:41.793Z"},"maintainers":[{"email":"cd.jojn@gmail.com","name":"cdjojn"},{"email":"stan.bures@gmail.com","name":"stan.bures"},{"email":"trawais002@gmail.com","name":"jan_travnicek"},{"email":"patrjam@gmail.com","name":"patrjam"}],"description":"Forked Resemble JS helper for CodeceptJS, with Support for Playwright, Webdriver, TestCafe, Puppeteer & Appium","homepage":"https://github.com/currys-co-uk/codeceptjs-resemblehelper#readme","keywords":["codeceptJS","codeceptjs","resemblejs","codeceptjs-resemble"],"repository":{"type":"git","url":"git+https://github.com/currys-co-uk/codeceptjs-resemblehelper.git"},"bugs":{"url":"https://github.com/currys-co-uk/codeceptjs-resemblehelper/issues"},"license":"MIT","readme":"# @currys-co-uk/codeceptjs-resemblehelper\n\nHelper for resemble.js, used for image comparison in tests with Playwright, Webdriver, Puppeteer, Appium, TestCafe!\n\n@currys-co-uk/codeceptjs-resemblehelper is a [CodeceptJS](https://codecept.io/) helper which can be used to compare screenshots and make the tests fail/pass based on the tolerance allowed.\n\nIf two screenshot comparisons have difference greater then the tolerance provided, the test will fail.\n\nNPM package: https://www.npmjs.com/package/@currys-co-uk/codeceptjs-resemblehelper\n\nTo install the package, just run `npm install @currys-co-uk/codeceptjs-resemblehelper`.\n\n### Configuration\n\nThis helper should be added in codecept.json/codecept.conf.js\n\nExample:\n\n```js\n{\n  helpers: {\n    ResembleHelper: {\n      require: \"@currys-co-uk/codeceptjs-resemblehelper\",\n      baseFolder: \"./tests/screenshots/base/\",\n      diffFolder: \"./tests/screenshots/diff/\",\n      prepareBaseImage: true,\n      tolerance: 10,\n      skipFailure: true,\n      createDiffInToleranceRange: true,\n      alwaysSaveDiff: true,\n      createSubFoldersInBaseFolder: true,\n      updateMismatchedBaseImage: true,\n      ignoreNothing: true,\n      scaleToSameSize: true\n    }\n  }\n}\n```\n\nTo use the Helper, users may provide the parameters:\n\n`baseFolder`: Mandatory. This is the folder for base images, which will be used with screenshot for comparison.\n\n`diffFolder`: Mandatory. This will the folder where resemble would try to store the difference image, which can be viewed later.\n\n`prepareBaseImage`: Optional. When `true` then the system replaces all of the baselines related to the test case(s) you ran. This is equivalent of setting the option `prepareBaseImage: true` in all verifications of the test file.\nIf this parameter is missing in `.conf` file, value is `undefined`.\n\n`tolerance`: Optional. When value is present, system sets tolerance for all tests, which does not have it set. Set tolerance in tests has always higher priority, than global tolerance in config.\n\n`skipFailure`: Optional. When `true` is set, Resemble helper continue in test run even in the case of detected mismatch and returns warning to console.\n\n`createDiffInToleranceRange`: Optional, when `true` is set, diff is created only if mismatch is in range of set tolerance (mismatch is not 0 but is less than tolerance).\n\n`alwaysSaveDiff`: Optional. When set as `true` diff image is created in every case.\n\n`createSubFoldersInBaseFolder`: Optional. When `true` is set, for every base image is created sub folder in `/base` folder. Sub folder is named as first 50 chars of test `Scenario` title.\n\n`updateMismatchedBaseImage`: Optional. When `true`, existing base images, which meet condition `mismatch > tolerance`, are updated with actual screenshot of web site, tolerance is then set to `0` and diff with mismatch is not saved to folder.\nUse only if base images exists. Parameter is not compatible with `prepareBaseImage`.\n\n`ignoreNothing`: Optional. When `true`, resemblejs covers 100% comparison of compared images and ignores nothing (e.g. similar colors) in found mismatch - every small change, every difficult pixel is resolved as a mismatch.\n\n`scaleToSameSize`: Optional. When `true`, resemblejs compares different sizes of the same image.\n\n### Usage\n\nThese are the major functions that help in visual testing:\n\nFirst one is the `seeVisualDiff` which basically takes two parameters\n\n1. `baseImage` Name of the base image, this will be the image used for comparison with the screenshot image. It is mandatory to have the same image file names for base and screenshot image.\n2. `options` options can be passed which include `prepareBaseImage` and `tolerance`.\n\n```js\n    /**\n     * Check Visual Difference for Base and Screenshot Image\n     * @param baseImage         Name of the Base Image (Base Image path is taken from Configuration)\n     * @param options           Options ex {prepareBaseImage: true, tolerance: 5} along with Resemble JS Options, read more here: https://github.com/rsmbl/Resemble.js\n     * @returns {Promise<void>}\n     */\n    async seeVisualDiff(baseImage, options) {}\n```\n\nSecond one is the `seeVisualDiffForElement` which basically compares elements on the screenshot, selector for element must be provided.\n\nIt is exactly same as `seeVisualDiff` function, only an additional `selector` CSS|XPath|ID locators is provided\n\n```js\n    /**\n     * See Visual Diff for an Element on a Page\n     *\n     * @param selector   Selector which has to be compared, CSS|XPath|ID\n     * @param baseImage  Base Image for comparison\n     * @param options    Options ex {prepareBaseImage: true, tolerance: 5} along with Resemble JS Options, read more here: https://github.com/rsmbl/Resemble.js\n     * @returns {Promise<void>}\n     */\n    async seeVisualDiffForElement(selector, baseImage, options){}\n```\n\n> Note:\n> `seeVisualDiffForElement` only works when the page for baseImage is open in the browser, so that WebdriverIO can fetch coordinates of the provided selector.\n\nThird one is the `screenshotElement` which basically takes screenshot of the element. Selector for the element must be provided. It saves the image in the output directory as mentioned in the config folder.\n\n```js\nI.screenshotElement('selectorForElement', 'nameForImage');\n```\n\nFinally to use the helper in your test, you can write something like this:\n\n```js\nFeature('to verify monitoried Remote Db instances');\n\nScenario('Open the System Overview Dashboard', async (I, adminPage, loginPage) => {\n  adminPage.navigateToDashboard('OS', 'System Overview');\n  I.saveScreenshot('Complete_Dashboard_Image.png');\n  adminPage.applyTimer('1m');\n  adminPage.viewMetric('CPU Usage');\n  I.saveScreenshot('Complete_Metric_Image.png');\n});\n\nScenario('Compare CPU Usage Images', async (I) => {\n  // setting tolerance and prepareBaseImage in the options object\n  I.seeVisualDiff('Complete_Metric_Image.png', { prepareBaseImage: false, tolerance: 5 });\n\n  // passing a selector, to only compare that element on both the images now\n\n  // We need to navigate to that page first, so that webdriver can fetch coordinates for the selector\n  adminPage.navigateToDashboard('OS', 'System Overview');\n  I.seeVisualDiffForElement(\"//div[@class='panel-container']\", 'Complete_Dashboard_Image.png', { prepareBaseImage: false, tolerance: 3 });\n});\n```\n\n> Note: `seeVisualDiff` and `seeVisualDiffElement` work only when the dimensions of the screenshot as well as the base image are same so as to avoid unexpected results.\n\n### Prepare base images behavior states\n\nIs it needed to have prepared base image before and only compare it, or create new base image? It depends how for every test is set:\n\n- `prepareBaseImage` parameter in config\n- `options` in test (e.g. `I.seeVisualDiff(\"image.png\", {prepareBaseImage: true})`)\n- does base image already exists, or is missing?\n  **Note**: Every state(rule/condition) is valid for every one instance of base image\n\n```js\n| state |   config   |  options  | base image already exists? |       behavior         |\n| ----- | ---------- | --------- | -------------------------- | ---------------------- |\n|   1   |  undefined | undefined |           yes              |        compare         |\n|   2   |  undefined | undefined |           no               | create new base image  |\n|   3   |  undefined |    true   |           yes              | create new base image  |\n|   4   |  undefined |    true   |           no               | create new base image  |\n|   5   |  undefined |   false   |           yes              |        compare         |\n|   6   |  undefined |   false   |           no               |          Error         |\n| ----- | ---------- | --------- | -------------------------- | ---------------------- |\n|   7   |    true    | undefined |           yes              | create new base image  |\n|   8   |    true    | undefined |           no               | create new base image  |\n|   9   |    true    |    true   |           yes              | create new base image  |\n|  10   |    true    |    true   |           no               | create new base image  |\n|  11   |    true    |   false   |           yes              |        compare         |\n|  12   |    true    |   false   |           no               |          Error         |\n| ----- | ---------- | --------- | -------------------------- | ---------------------- |\n|  13   |    false   | undefined |           yes              |        compare         |\n|  14   |    false   | undefined |           no               |          Error         |\n|  15   |    false   |    true   |           yes              | create new base image  |\n|  16   |    false   |    true   |           no               | create new base image  |\n|  17   |    false   |   false   |           yes              |        compare         |\n|  18   |    false   |   false   |           no               |          Error         |\n| ----- | ---------- | --------- | -------------------------- | ---------------------- |\n```\n\n### Ignored Box\n\nYou can also exclude part of the image from comparison, by specifying the excluded area in pixels from the top left.\nJust declare an object and pass it in options as `ignoredBox`:\n\n```js\nconst box = {\n  left: 0,\n  top: 10,\n  right: 0,\n  bottom: 10,\n};\n\nI.seeVisualDiff('image.png', { prepareBaseImage: true, tolerance: 1, ignoredBox: box });\n```\n\nAfter this, that specific mentioned part will be ignored while comparison.\nThis works for `seeVisualDiff` and `seeVisualDiffForElement`.\n\n### Ignored Element\n\nSimilar as ignored box, when specific element is excluded from image comparison. You need to pass it in options as `ignoredElement`.\n\n```js\nScenario('Ignore element for screenshot visual diff', async ({ I }) => {\n  // I.amOnPage('https://the-internet.herokuapp.com/context_menu');\n  // I.saveScreenshot('IGNORED.png');\n  await I.seeVisualDiff('IGNORED.png', { ignoredElement: '#hot-spot' });\n});\n```\n\nAfter this, specific element will be ignored while comparison.\nThis works for `seeVisualDiff` & `seeVisualDiffForElement`.\n\n### Ignored Boxes\n\nSimilar as Ignored Box, but with more excluded parts of the image comparison specifying the excluded area in pixels from top left.\n\n```js\nconst box1 = {\n  left: 100,\n  top: 200,\n  right: 300,\n  bottom: 600,\n};\n\nconst box2 = {\n  left: 400,\n  top: 100,\n  right: 500,\n  bottom: 600,\n};\n\nawait I.seeVisualDiff('image.png', { ignoredBoxes: [box1, box2] });\n```\n\nAfter this, that specific mentioned parts will be ignored while comparison.\nThis works for `seeVisualDiff`.\n\n### Ignored elements\n\nSimilar as Ignored element, but it possible to specific more elements, which should be excluded from image comparison.\n\n```js\nScenario('Ignore 2 elements for screenshot visual diff', async ({ I }) => {\n  //I.amOnPage('https://the-internet.herokuapp.com/context_menu');\n  //I.saveScreenshot('image.png');\n  await I.seeVisualDiff('image.png', { ignoredElements: ['#hot-spot', '#page-footer'] });\n});\n```\n\nAfter this, that specific mentioned parts will be ignored while comparison.\nThis works for `seeVisualDiff` & `seeVisualDiffForElement`.\n\n**Note**: DON'T use combination of `ignored box/boxes/element/elements` together, ALWAYS use only one of them as options !!!\n\n### Ignored queryElementAll\n\nFunctionality element selection is similar as `querySelectorAll` in `DOM`, `ignoredQueryElementAll` will find all identical/query suitable elements on the page and ignore them.\n\n```js\nScenario('Ignore all same elements', async ({ I }) => {\n  //I.amOnPage('https://the-internet.herokuapp.com');\n  //await I.saveScreenshot('image.png');\n  await I.seeVisualDiff('image.png', { ignoredQueryElementAll: '//ul/li/a' });\n});\n```\n\nThis works for `seeVisualDiff` & `seeVisualDiffForElement`.\n\n### createDiffInToleranceRange flag for generating diff images\n\nDefault logic of creating diff images need to have greater mismatch, than tolerance.\nWith set `createDiffInToleranceRange` as true in config you can affect generating diff images, if mismatch is in range of set tolerance (mismatch is not 0 but is less than tolerance).\n`createDiffInToleranceRange` cover only this condition.\nE.g.\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       ...\n       createDiffInToleranceRange: true\n       ...\n     }\n   }\n}\n```\n\nOptions tolerance is 5, and test result mismatch was 2,4. -> diff image is created.\n\n### alwaysSaveDiff flag for always generating diff images\n\nWith set `alwaysSaveDiff` as `true` in config you can affect generating diff images, it covers all conditions and always returns generated diff image, doesn't matter if test passed or failed.\nE.g.\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       ...\n       alwaysSaveDiff: true\n       ...\n     }\n   }\n}\n```\n\n### createSubFoldersInBaseFolder flag for creating sub folders\n\nWith set `createSubFoldersInBaseFolder` as `true` in the config you can affect creating sub folders for base images. This flag is helpful if you have a lot of base images (e.g. more than 200) and `/baseFolder` is not providing an easy survey for your eyes.\nFor sub folder name in `/baseFolder` is used the first 50 chars of test `Scenario` title. Sub folder name is also correctly parsed for disallowed chars in Windows/Mac.\nE.g.\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       //...\n       baseFolder: \"./tests/screenshots/base/\",\n       //...\n       createSubFoldersInBaseFolder: true\n       //...\n     }\n   }\n}\n```\n\nIn test should look like this:\n\n```js\nScenario('creates my first base image for first visual testing', async ({ I }) => {\n  //I.amOnPage('https://the-internet.herokuapp.com');\n  //await I.saveScreenshot('image.png');\n  await I.seeVisualDiff('image.png');\n});\n```\n\nSo, what happened? In base folder (`\"./tests/screenshots/base/\"`) is created sub folder with name `/creates_my_first_base_image_for_first_v` (with max 50 first chars) and into them is saved file `image.png`.\n\n### updateMismatchedBaseImage flag for updating existing base images with mismatch\n\nWith `updateMismatchedBaseImage` as `true` in config you can update existing base images with mismatch. It is needed to meet condition `mismatch > tolerance`, then existing base image is updated with actual screenshot of web site.\nTolerance is then set to `0` and diff with mismatch is not saved to folder. Use only if base images exists.\n\n> Note: Parameter is not compatible with `prepareBaseImage` and doesn't replace it.\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       ...\n       updateMismatchedBaseImage: true\n       ...\n     }\n   }\n}\n```\n\n### ignoreNothing flag for 100% mismatch covering\n\nWith `ignoreNothing` as a `true`, resemblejs covers 100% comparison of compared images and ignores nothing (e.g. similar colors) in found mismatch - every small change, every difficult pixel is resolved as a mismatch.\nIf flag is not set, or has `false` value, resemblejs uses `ignore less` as default, that means `red`, `blue`, `green`, `alpha`, `minBrightness` have 16 tolerance intensity of the color and `maxBrightness` has 240 tolerance intensity.\nThat covers very similar colors but in specific range.\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       ...\n       ignoreNothing: true\n       ...\n     }\n   }\n}\n```\n\n### scaleToSameSize flag for compare different images size\n\nWith `scaleToSameSize` as a `true` resemblejs compares images even in the case of different images size. If you don't use this flag, it compares only images with the same size as a standard way.\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       ...\n       scaleToSameSize: true\n       ...\n     }\n   }\n}\n```\n\n### resemble.js Output Settings\n\nYou can set further output settings used by resemble.js. Declare an object specifying them and pass it in the options as `outputSettings`:\n\n```js\nconst outputSettings = {\n  ignoreAreasColoredWith: { r: 250, g: 250, b: 250, a: 0 },\n  // read more here: https://github.com/rsmbl/Resemble.js\n};\nI.seeVisualDiff('image.png', { prepareBaseImage: true, tolerance: 1, outputSettings: outputSettings });\n```\n\nRefer to the [resemble.js](https://github.com/rsmbl/Resemble.js) documentation for available output settings.\n\n### Skip Failure\n\nYou can avoid the test fails for a given threshold but yet generates the difference image.\nJust declare an object and pass it in options as `skipFailure`:\n\n```\nI.seeVisualDiff(\"image.png\", {prepareBaseImage: true, tolerance: 1, skipFailure: true});\n```\n\nor as global in config:\n\n```js\n{\n   helpers: {\n     ResembleHelper : {\n       ...\n       skipFailure: true\n       ...\n     }\n   }\n}\n```\n\nAfter this, the system generates the difference image but does not fail the test.\nThis works for `seeVisualDiff` and `seeVisualDiffForElement`.\n\n### Allure Reporter\n\nAllure reports may also be generated directly from the tool. To do so, add\n\n```\n\"plugins\": {\n\t  \"allure\": {}\n}\n```\n\nin the config file.\nThe attachments will be added to the report only when the calulated mismatch is greater than the given tolerance.\nSet `output` to where the generated report is to be stored. Default is the output directory of the project.\n\n### AWS Support\n\nAWS S3 support to upload and download various images is also provided.\nIt can be used by adding the _aws_ code inside `\"ResembleHelper\"` in the `\"helpers\"` section in config file. The final result should look like:\n\n```js\n{\n  helpers: {\n    ResembleHelper: {\n      require: \"@currys-co-uk/codeceptjs-resemblehelper\",\n      baseFolder: \"<location of base folder>\",\n      diffFolder: \"<location of diff folder>\",\n      aws: {\n        accessKeyId: \"<Your AccessKeyId>\",\n        secretAccessKey: \"<Your secretAccessKey>\",\n        region: \"<Region of Bucket>\",\n        bucketName: \"<Bucket Name>\"\n      }\n    }\n  }\n}\n```\n\nWhen this option has been provided, the helper will download the base image from the S3 bucket.\nThis base image has to be located inside a folder named \"_base_\".\nThe resultant output image will be uploaded in a folder named \"_output_\" and diff image will be uploaded to a folder named \"_diff_\" in the S3 bucket.\nIf the `prepareBaseImage` option is marked `true`, then the generated base image will be uploaded to a folder named \"_base_\" in the S3 bucket.\n\n> Note: The tests may take a bit longer to run when the AWS configuration is provided as determined by the internet speed to upload/download images.\n\n### Known Issues:\n\n> Issue in Windows where the image comparison is not carried out, and therefore no Mismatch Percentage is shown. See 'loadImageData' function in resemble.js\n","readmeFilename":"README.md"}