Add Jest-Serializer-Vue-TJW
This commit is contained in:
		
							parent
							
								
									3db2da197c
								
							
						
					
					
						commit
						446b730430
					
				@ -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: [
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -15616,6 +15616,16 @@
 | 
				
			|||||||
        "pretty": "2.0.0"
 | 
					        "pretty": "2.0.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "jest-serializer-vue-tjw": {
 | 
				
			||||||
 | 
					      "version": "3.3.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/jest-serializer-vue-tjw/-/jest-serializer-vue-tjw-3.3.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-pvUqkwTYqmlHRuE6KtzNitBD5LRuuXgBt83cfSMabM9+QJEetm87nhIIAi4drDZeSOdkuVthBrcWE5E9AfUokw==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "requires": {
 | 
				
			||||||
 | 
					        "lodash.clonedeep": "^4.5.0",
 | 
				
			||||||
 | 
					        "pretty": "^2.0.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "jest-transform-stub": {
 | 
					    "jest-transform-stub": {
 | 
				
			||||||
      "version": "2.0.0",
 | 
					      "version": "2.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz",
 | 
				
			||||||
 | 
				
			|||||||
@ -69,6 +69,7 @@
 | 
				
			|||||||
    "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.6-sdk",
 | 
					    "nw": "0.43.6-sdk",
 | 
				
			||||||
    "nw-vue-devtools-prebuilt": "^0.0.10",
 | 
					    "nw-vue-devtools-prebuilt": "^0.0.10",
 | 
				
			||||||
 | 
				
			|||||||
@ -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,6 +22,7 @@ window.getComputedStyle = function getComputedStyleStub (el) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
global.beforeEach(() => {
 | 
					global.beforeEach(() => {
 | 
				
			||||||
  window.process = {
 | 
					  window.process = {
 | 
				
			||||||
 | 
					    cwd: process.cwd,
 | 
				
			||||||
    env: {
 | 
					    env: {
 | 
				
			||||||
      NODE_ENV: 'development'
 | 
					      NODE_ENV: 'development'
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user