From 08fd3b60ceb71d918adef023c83c756886d4df67 Mon Sep 17 00:00:00 2001 From: Serhii Kulykov Date: Sat, 12 Sep 2020 16:11:36 +0300 Subject: [PATCH] test: add visual regression tests (#6) --- .travis.yml | 1 + package-lock.json | 101 ++++++++++++++++++ package.json | 9 +- .../screenshots/Chrome/baseline/hex.png | Bin 0 -> 9832 bytes .../Chrome/baseline/hsl-string.png | Bin 0 -> 9832 bytes .../screenshots/Chrome/baseline/hsl.png | Bin 0 -> 9859 bytes .../screenshots/Chrome/baseline/hsv.png | Bin 0 -> 9859 bytes .../Chrome/baseline/rgb-string.png | Bin 0 -> 9859 bytes .../screenshots/Chrome/baseline/rgb.png | Bin 0 -> 9832 bytes src/test/visual/visual.test.ts | 28 +++++ web-test-runner.config.js | 10 +- 11 files changed, 144 insertions(+), 5 deletions(-) create mode 100644 src/test/visual/screenshots/Chrome/baseline/hex.png create mode 100644 src/test/visual/screenshots/Chrome/baseline/hsl-string.png create mode 100644 src/test/visual/screenshots/Chrome/baseline/hsl.png create mode 100644 src/test/visual/screenshots/Chrome/baseline/hsv.png create mode 100644 src/test/visual/screenshots/Chrome/baseline/rgb-string.png create mode 100644 src/test/visual/screenshots/Chrome/baseline/rgb.png create mode 100644 src/test/visual/visual.test.ts diff --git a/.travis.yml b/.travis.yml index 02d8106..a0840c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,3 +13,4 @@ script: - npm run size - npm run lint - npm test +- npm run test:visual diff --git a/package-lock.json b/package-lock.json index 5c1a312..4126b6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -656,6 +656,15 @@ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", "dev": true }, + "@types/mkdirp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-1.0.1.tgz", + "integrity": "sha512-HkGSK7CGAXncr8Qn/0VqNtExEE+PHMWb+qlR1faHMao7ng6P3tAaoWWBMdva0gL5h4zprjIO89GJOLXsMcDm1Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/mocha": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.3.tgz", @@ -680,6 +689,24 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/pixelmatch": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.2.tgz", + "integrity": "sha512-ndpfW/H8+SAiI3wt+f8DlHGgB7OeBdgFgBJ6v/1l3SpJ0MCn9wtXFb4mUccMujN5S4DMmAh7MVy1O3WcXrHUKw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/pngjs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/pngjs/-/pngjs-3.4.2.tgz", + "integrity": "sha512-LJVPDraJ5YFEnMHnzxTN4psdWz1M61MtaAAWPn3qnDk5fvs7BAmmQ9pd3KPlrdrvozMyne4ktanD4pg0L7x1Pw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/puppeteer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-3.0.1.tgz", @@ -1093,6 +1120,57 @@ "mocha": "^8.1.1" } }, + "@web/test-runner-visual-regression": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@web/test-runner-visual-regression/-/test-runner-visual-regression-0.1.5.tgz", + "integrity": "sha512-P8hyt3sS016gsfmRijBfWrcupQtX3YACuE2Cn6BZWo+vE0J9X+CsxmaUAQLObEmxzTk13WPmZjtdu3btDkRngA==", + "dev": true, + "requires": { + "@types/mkdirp": "^1.0.1", + "@types/pixelmatch": "^5.2.1", + "@types/pngjs": "^3.4.2", + "@web/test-runner-commands": "^0.1.4", + "@web/test-runner-core": "^0.7.4", + "mkdirp": "^1.0.4", + "pixelmatch": "^5.2.1", + "pngjs": "^5.0.0" + }, + "dependencies": { + "@web/test-runner-commands": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.1.5.tgz", + "integrity": "sha512-Y9P8aXkMj4NwVdaJWn37vdrJBfc3R3lJDvevzD7XJ9YDdnxxCpEDKQZ1/v7c3QFxaKfmiA5XC9luQfp2EnJLJQ==", + "dev": true, + "requires": { + "@web/test-runner-core": "^0.7.9" + }, + "dependencies": { + "@web/test-runner-core": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.7.10.tgz", + "integrity": "sha512-lVY8Xu2fb1jZab3fBh8rdsJpu7lyCOUxFjiV/l33ZVomj/Oi8gtr/kMqxhLaBJpBBiq9l3VjTt2D3N/ST+xwcQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@web/dev-server-core": "^0.2.7", + "co-body": "^6.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.9.0", + "istanbul-lib-coverage": "^3.0.0", + "picomatch": "^2.2.2", + "uuid": "^8.1.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -8280,6 +8358,23 @@ "pinkie": "^2.0.0" } }, + "pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "requires": { + "pngjs": "^4.0.1" + }, + "dependencies": { + "pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true + } + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -8298,6 +8393,12 @@ "semver-compare": "^1.0.0" } }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "dev": true + }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", diff --git a/package.json b/package.json index dc4b2e2..5841d15 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,9 @@ "size": "npm run build && size-limit", "start": "web-dev-server --app-index dist/index.html --open", "styles": "node ./scripts/build-styles.js", - "test": "wtr src/test/*.ts", + "test": "wtr src/test/*.ts --coverage", + "test:visual": "wtr src/test/visual/*.ts", + "test:update": "UPDATE_REFS=true wtr src/test/visual/*.ts", "watch": "tsc-watch" }, "husky": { @@ -101,13 +103,14 @@ "@open-wc/testing-helpers": "~1.7.2", "@rollup/plugin-node-resolve": "^9.0.0", "@size-limit/preset-small-lib": "^4.5.7", + "@types/sinon": "^9.0.5", "@typescript-eslint/eslint-plugin": "^4.0.1", "@typescript-eslint/parser": "^4.0.1", - "@types/sinon": "^9.0.5", - "@web/dev-server-esbuild": "^0.2.4", "@web/dev-server": "^0.0.5", + "@web/dev-server-esbuild": "^0.2.4", "@web/rollup-plugin-copy": "^0.1.1", "@web/test-runner": "^0.7.17", + "@web/test-runner-visual-regression": "^0.1.5", "eslint": "^7.8.1", "eslint-config-prettier": "^6.11.0", "eslint-plugin-prettier": "^3.1.4", diff --git a/src/test/visual/screenshots/Chrome/baseline/hex.png b/src/test/visual/screenshots/Chrome/baseline/hex.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfbbefb368ac286bb8a21e8abd3b413a9f17552 GIT binary patch literal 9832 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 aMfRP$32$P03&>l?0GevLs^!XWKm8w61fh%o literal 0 HcmV?d00001 diff --git a/src/test/visual/screenshots/Chrome/baseline/hsl-string.png b/src/test/visual/screenshots/Chrome/baseline/hsl-string.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfbbefb368ac286bb8a21e8abd3b413a9f17552 GIT binary patch literal 9832 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 aMfRP$32$P03&>l?0GevLs^!XWKm8w61fh%o literal 0 HcmV?d00001 diff --git a/src/test/visual/screenshots/Chrome/baseline/hsl.png b/src/test/visual/screenshots/Chrome/baseline/hsl.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0ac3c2eaf29ba6100a3436427194954b3e80f8 GIT binary patch literal 9859 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 literal 0 HcmV?d00001 diff --git a/src/test/visual/screenshots/Chrome/baseline/hsv.png b/src/test/visual/screenshots/Chrome/baseline/hsv.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0ac3c2eaf29ba6100a3436427194954b3e80f8 GIT binary patch literal 9859 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 literal 0 HcmV?d00001 diff --git a/src/test/visual/screenshots/Chrome/baseline/rgb-string.png b/src/test/visual/screenshots/Chrome/baseline/rgb-string.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0ac3c2eaf29ba6100a3436427194954b3e80f8 GIT binary patch literal 9859 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 literal 0 HcmV?d00001 diff --git a/src/test/visual/screenshots/Chrome/baseline/rgb.png b/src/test/visual/screenshots/Chrome/baseline/rgb.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfbbefb368ac286bb8a21e8abd3b413a9f17552 GIT binary patch literal 9832 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 aMfRP$32$P03&>l?0GevLs^!XWKm8w61fh%o literal 0 HcmV?d00001 diff --git a/src/test/visual/visual.test.ts b/src/test/visual/visual.test.ts new file mode 100644 index 0000000..b4fe9c2 --- /dev/null +++ b/src/test/visual/visual.test.ts @@ -0,0 +1,28 @@ +import { visualDiff } from '@web/test-runner-visual-regression'; +import { fixture } from '@open-wc/testing-helpers'; +import '../../hex-color-picker.js'; +import '../../hsl-color-picker.js'; +import '../../hsl-string-color-picker.js'; +import '../../hsv-color-picker.js'; +import '../../rgb-color-picker.js'; +import '../../rgb-string-color-picker.js'; + +describe('visual tests', () => { + let picker: HTMLElement; + + ['hex', 'hsl', 'hsl-string', 'hsv', 'rgb', 'rgb-string'].forEach((type) => { + describe(`${type}-color-picker`, () => { + beforeEach(async () => { + picker = await fixture(` +
+ <${type}-color-picker> +
+ `); + }); + + it('should match screenshot', async () => { + await visualDiff(picker, type); + }); + }); + }); +}); diff --git a/web-test-runner.config.js b/web-test-runner.config.js index e3d9821..0a79b31 100644 --- a/web-test-runner.config.js +++ b/web-test-runner.config.js @@ -1,9 +1,15 @@ const { esbuildPlugin } = require('@web/dev-server-esbuild'); +const { visualRegressionPlugin } = require('@web/test-runner-visual-regression/plugin'); module.exports = { nodeResolve: true, - plugins: [esbuildPlugin({ ts: true })], - coverage: true, + plugins: [ + esbuildPlugin({ ts: true }), + visualRegressionPlugin({ + baseDir: 'src/test/visual/screenshots', + update: process.env.UPDATE_REFS === 'true' + }) + ], coverageConfig: { threshold: { statements: 99,