Jest-Vue-Serializer-TJW
This commit is contained in:
commit
be3c9e17bc
@ -16,6 +16,7 @@ NW.js + Vue-CLI 4 example
|
|||||||
* A11Y Linting
|
* A11Y Linting
|
||||||
* Jest Linting
|
* Jest Linting
|
||||||
* Jest (100% test coverage)
|
* Jest (100% test coverage)
|
||||||
|
* Jest Serializer Vue (TJW)
|
||||||
|
|
||||||
*Why not include Vue-Router or Vuex?*
|
*Why not include Vue-Router or Vuex?*
|
||||||
|
|
||||||
@ -83,7 +84,9 @@ This will download the source code for the latest version of Vue-DevTools and do
|
|||||||
This is not for those *using* this repo, but for those *maintaining* it.
|
This is not for those *using* this repo, but for those *maintaining* it.
|
||||||
|
|
||||||
1. When updating the version of NW.js devDependency, also update these:
|
1. When updating the version of NW.js devDependency, also update these:
|
||||||
|
* `package.json` devDeps, build nwVersion
|
||||||
* `tests/unit/setup.js`
|
* `tests/unit/setup.js`
|
||||||
* `tests/unit/components/__snapshots__/HelloWorld.test.js.snap`
|
* `tests/unit/components/__snapshots__/HelloWorld.test.js.snap`
|
||||||
* `.browserslistrc`
|
* `.browserslistrc`
|
||||||
|
1. Bump the version number, and all the npm scripts that reference the version number
|
||||||
1. Run `npm run regression` after updating dependencies or other major changes to verify builds still work correctly
|
1. Run `npm run regression` after updating dependencies or other major changes to verify builds still work correctly
|
||||||
|
@ -21,7 +21,7 @@ module.exports = {
|
|||||||
'<rootDir>/tests/unit/setup.js'
|
'<rootDir>/tests/unit/setup.js'
|
||||||
],
|
],
|
||||||
snapshotSerializers: [
|
snapshotSerializers: [
|
||||||
'<rootDir>/tests/unit/serializer.js'
|
'<rootDir>/node_modules/jest-serializer-vue-tjw'
|
||||||
],
|
],
|
||||||
testEnvironment: 'jest-environment-jsdom-global',
|
testEnvironment: 'jest-environment-jsdom-global',
|
||||||
testMatch: [
|
testMatch: [
|
||||||
|
3297
package-lock.json
generated
3297
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
35
package.json
35
package.json
@ -6,7 +6,7 @@
|
|||||||
"To turn spell checking off, remove it from the chromium-args in this file"
|
"To turn spell checking off, remove it from the chromium-args in this file"
|
||||||
],
|
],
|
||||||
"name": "nw-vue",
|
"name": "nw-vue",
|
||||||
"version": "1.3.0",
|
"version": "1.4.0",
|
||||||
"main": "http://localhost:8964",
|
"main": "http://localhost:8964",
|
||||||
"node-remote": "http://localhost:8964",
|
"node-remote": "http://localhost:8964",
|
||||||
"node-main": "",
|
"node-main": "",
|
||||||
@ -27,10 +27,10 @@
|
|||||||
"build:nw": "build --concurrent --tasks win-x86,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ .",
|
"build:nw": "build --concurrent --tasks win-x86,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ .",
|
||||||
"build:win": "npm run build:win:clean && npm run build:vue && build --tasks win-x86 --mirror https://dl.nwjs.io/ .",
|
"build:win": "npm run build:win:clean && npm run build:vue && build --tasks win-x86 --mirror https://dl.nwjs.io/ .",
|
||||||
"build:lin": "npm run build:lin:clean && npm run build:vue && build --tasks linux-x64 --mirror https://dl.nwjs.io/ .",
|
"build:lin": "npm run build:lin:clean && npm run build:vue && build --tasks linux-x64 --mirror https://dl.nwjs.io/ .",
|
||||||
"build:win:clean": "rimraf ./dist-vue ./dist/nw-vue-1.3.0-win-x86 ./dist/nw-vue-1.3.0-win-x86.zip ./dist/nw-vue-1.3.0-win-x86.7z ./dist/nw-vue-1.3.0-win-x86-Setup.exe",
|
"build:win:clean": "rimraf ./dist-vue ./dist/nw-vue-1.4.0-win-x86 ./dist/nw-vue-1.4.0-win-x86.zip ./dist/nw-vue-1.4.0-win-x86.7z ./dist/nw-vue-1.4.0-win-x86-Setup.exe",
|
||||||
"build:lin:clean": "rimraf ./dist-vue ./dist/nw-vue-1.3.0-linux-x64 ./dist/nw-vue-1.3.0-linux-x64.zip",
|
"build:lin:clean": "rimraf ./dist-vue ./dist/nw-vue-1.4.0-linux-x64 ./dist/nw-vue-1.4.0-linux-x64.zip",
|
||||||
"run:win": "dist\\nw-vue-1.3.0-win-x86\\nw-vue.exe",
|
"run:win": "dist\\nw-vue-1.4.0-win-x86\\nw-vue.exe",
|
||||||
"run:lin": "./dist/nw-vue-1.3.0-linux-x64/nw-vue",
|
"run:lin": "./dist/nw-vue-1.4.0-linux-x64/nw-vue",
|
||||||
"regression": "rd /s /q node_modules & rd /s /q node_modules & rd /s /q node_modules & npm install && npm run lint && npm test && npm run build:win && npm run run:win",
|
"regression": "rd /s /q node_modules & rd /s /q node_modules & rd /s /q node_modules & npm install && npm run lint && npm test && npm run build:win && npm run run:win",
|
||||||
"lint": "vue-cli-service lint --no-fix",
|
"lint": "vue-cli-service lint --no-fix",
|
||||||
"fix": "vue-cli-service lint --fix",
|
"fix": "vue-cli-service lint --fix",
|
||||||
@ -44,11 +44,11 @@
|
|||||||
"express": "^4.17.1"
|
"express": "^4.17.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "^4.1.1",
|
"@vue/cli-plugin-babel": "^4.1.2",
|
||||||
"@vue/cli-plugin-e2e-nightwatch": "^4.1.1",
|
"@vue/cli-plugin-e2e-nightwatch": "^4.1.2",
|
||||||
"@vue/cli-plugin-eslint": "^4.1.1",
|
"@vue/cli-plugin-eslint": "^4.1.2",
|
||||||
"@vue/cli-plugin-unit-jest": "^4.1.1",
|
"@vue/cli-plugin-unit-jest": "^4.1.2",
|
||||||
"@vue/cli-service": "^4.1.1",
|
"@vue/cli-service": "^4.1.2",
|
||||||
"@vue/test-utils": "1.0.0-beta.29",
|
"@vue/test-utils": "1.0.0-beta.29",
|
||||||
"babel-core": "7.0.0-bridge.0",
|
"babel-core": "7.0.0-bridge.0",
|
||||||
"babel-eslint": "^10.0.3",
|
"babel-eslint": "^10.0.3",
|
||||||
@ -59,18 +59,19 @@
|
|||||||
"babel-preset-stage-2": "^6.24.1",
|
"babel-preset-stage-2": "^6.24.1",
|
||||||
"babel-preset-vue-app": "^2.0.0",
|
"babel-preset-vue-app": "^2.0.0",
|
||||||
"concurrently": "^5.0.2",
|
"concurrently": "^5.0.2",
|
||||||
"core-js": "^3.6.1",
|
"core-js": "^3.6.4",
|
||||||
"eslint": "^6.8.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-config-tjw-base": "^1.0.0",
|
"eslint-config-tjw-base": "^1.0.0",
|
||||||
"eslint-config-tjw-vue": "^1.0.0",
|
"eslint-config-tjw-vue": "^1.0.0",
|
||||||
"eslint-plugin-jest": "^23.1.1",
|
"eslint-plugin-jest": "^23.6.0",
|
||||||
"eslint-plugin-vue": "^6.0.2",
|
"eslint-plugin-vue": "^6.1.2",
|
||||||
"eslint-plugin-vue-a11y": "^0.0.31",
|
"eslint-plugin-vue-a11y": "^0.0.31",
|
||||||
"jest": "^24.9.0",
|
"jest": "^24.9.0",
|
||||||
"jest-environment-jsdom": "^24.9.0",
|
"jest-environment-jsdom": "^24.9.0",
|
||||||
"jest-environment-jsdom-global": "^1.2.0",
|
"jest-environment-jsdom-global": "^1.2.0",
|
||||||
|
"jest-serializer-vue-tjw": "^3.3.0",
|
||||||
"jest-transform-stub": "^2.0.0",
|
"jest-transform-stub": "^2.0.0",
|
||||||
"nw": "0.43.2-sdk",
|
"nw": "0.43.6-sdk",
|
||||||
"nw-vue-devtools-prebuilt": "^0.0.10",
|
"nw-vue-devtools-prebuilt": "^0.0.10",
|
||||||
"nwjs-builder-phoenix": "^1.15.0",
|
"nwjs-builder-phoenix": "^1.15.0",
|
||||||
"nwjs-types": "^1.0.0",
|
"nwjs-types": "^1.0.0",
|
||||||
@ -78,11 +79,11 @@
|
|||||||
"vue": "^2.6.11",
|
"vue": "^2.6.11",
|
||||||
"vue-jest": "^3.0.5",
|
"vue-jest": "^3.0.5",
|
||||||
"vue-template-compiler": "^2.6.11",
|
"vue-template-compiler": "^2.6.11",
|
||||||
"wait-on": "^3.3.0"
|
"wait-on": "^4.0.0"
|
||||||
},
|
},
|
||||||
"chromium-args": "--enable-spell-checking --load-extension='./node_modules/nw-vue-devtools-prebuilt/extension'",
|
"chromium-args": "--enable-spell-checking --load-extension='./node_modules/nw-vue-devtools-prebuilt/extension'",
|
||||||
"build": {
|
"build": {
|
||||||
"nwVersion": "v0.43.2",
|
"nwVersion": "v0.43.6",
|
||||||
"nwFlavor": "normal",
|
"nwFlavor": "normal",
|
||||||
"targets": [
|
"targets": [
|
||||||
"zip",
|
"zip",
|
||||||
@ -131,7 +132,7 @@
|
|||||||
"height": 600,
|
"height": 600,
|
||||||
"min_width": 700,
|
"min_width": 700,
|
||||||
"min_height": 500,
|
"min_height": 500,
|
||||||
"icon": "dist-vue/vue.png"
|
"icon": "dist-vue/icon.png"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"win": {
|
"win": {
|
||||||
|
@ -24,10 +24,10 @@ exports[`HelloWorld.vue Render default contents 1`] = `
|
|||||||
<h3>
|
<h3>
|
||||||
You are using
|
You are using
|
||||||
Vue.js (v2.6.11),
|
Vue.js (v2.6.11),
|
||||||
NW.js (v0.43.2-sdk),
|
NW.js (v0.43.6-sdk),
|
||||||
Node.js (v13.5.0),
|
Node.js (v13.6.0),
|
||||||
and
|
and
|
||||||
Chromium (v79.0.3945.88).
|
Chromium (v79.0.3945.130).
|
||||||
</h3>
|
</h3>
|
||||||
<button>
|
<button>
|
||||||
Show
|
Show
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
// Based on jest-serializer-vue
|
|
||||||
|
|
||||||
const beautify = require('pretty');
|
|
||||||
|
|
||||||
function isHtmlString (received) {
|
|
||||||
return received && typeof(received) === 'string' && received.startsWith('<');
|
|
||||||
}
|
|
||||||
|
|
||||||
function isVueWrapper (received) {
|
|
||||||
return received && typeof(received) === 'object' && typeof(received.isVueInstance) === 'function';
|
|
||||||
}
|
|
||||||
|
|
||||||
// This removes data-test="whatever" from your snapshots
|
|
||||||
// If you also want to remove them from your production builds, see:
|
|
||||||
// https://forum.vuejs.org/t/how-to-remove-attributes-from-tags-inside-vue-components/24138
|
|
||||||
function removeDataTestAttributes (html) {
|
|
||||||
// [-\w]+ will catch 1 or more instaces of a-z, A-Z, 0-9, hyphen (-), or underscore (_)
|
|
||||||
return html.replace(/ data-test="[-\w]+"/g, '');
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
test: function (received) {
|
|
||||||
return isHtmlString(received) || isVueWrapper(received);
|
|
||||||
},
|
|
||||||
print: function (received) {
|
|
||||||
let html = received || '';
|
|
||||||
if (isVueWrapper(received)) {
|
|
||||||
html = received.html();
|
|
||||||
}
|
|
||||||
html = removeDataTestAttributes(html);
|
|
||||||
// To see available options: https://github.com/beautify-web/js-beautify/blob/master/js/src/html/options.js
|
|
||||||
const options = {
|
|
||||||
indent_size: 2,
|
|
||||||
unformatted: ['code', 'pre'],
|
|
||||||
inline: [],
|
|
||||||
indent_inner_html: true,
|
|
||||||
indent_char: ' ',
|
|
||||||
sep: '\n'
|
|
||||||
};
|
|
||||||
return beautify(html, options);
|
|
||||||
}
|
|
||||||
};
|
|
@ -22,14 +22,15 @@ window.getComputedStyle = function getComputedStyleStub (el) {
|
|||||||
|
|
||||||
global.beforeEach(() => {
|
global.beforeEach(() => {
|
||||||
window.process = {
|
window.process = {
|
||||||
|
cwd: process.cwd,
|
||||||
env: {
|
env: {
|
||||||
NODE_ENV: 'development'
|
NODE_ENV: 'development'
|
||||||
},
|
},
|
||||||
versions: {
|
versions: {
|
||||||
chromium: '79.0.3945.88',
|
chromium: '79.0.3945.130',
|
||||||
nw: '0.43.2',
|
nw: '0.43.6',
|
||||||
'nw-flavor': 'sdk',
|
'nw-flavor': 'sdk',
|
||||||
node: '13.5.0'
|
node: '13.6.0'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
window.nw = {
|
window.nw = {
|
||||||
|
Loading…
Reference in New Issue
Block a user