From aa7c6b4e630010a9b893ab0b887b8b00cb698e08 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Wed, 3 Oct 2018 16:39:45 -0700 Subject: [PATCH 1/3] feat(jest-transformer): generate jest tests sourcemaps Generate component sourcemaps in jest tests. --- packages/lwc-jest-transformer/src/index.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/lwc-jest-transformer/src/index.js b/packages/lwc-jest-transformer/src/index.js index c93f4bb4e7..05b17bbb5e 100644 --- a/packages/lwc-jest-transformer/src/index.js +++ b/packages/lwc-jest-transformer/src/index.js @@ -3,6 +3,7 @@ const babelCommonJs = require('@babel/plugin-transform-modules-commonjs'); const jestPreset = require('babel-preset-jest'); const lwcCompiler = require('lwc-compiler'); const crypto = require('crypto'); +const path = require('path'); const engineVersion = require('lwc-engine/package.json').version; const compilerVersion = require('lwc-compiler/package.json').version; const { waitForPromise } = require('./utils'); @@ -14,6 +15,7 @@ const schemaScopedImport = require('./transforms/schema-scoped-import'); const userScopedImport = require('./transforms/user-scoped-import'); const BABEL_CONFIG = { + sourceMaps: 'both', "presets": [ jestPreset, ], @@ -33,14 +35,20 @@ module.exports = { // Set default module name and namespace value for the namespace because it can't be properly guessed from the path const transform = lwcCompiler.transform(src, filePath, { moduleName: 'test', - moduleNamespace: 'x' + moduleNamespace: 'x', + outputConfig: { + sourcemap: true + } }); - const { code } = waitForPromise(transform); + const { code, map } = waitForPromise(transform); - const generated = babelCore.transform(code, BABEL_CONFIG); + // if is not .js, we add the .compiled extension in the sourcemap + const filename = path.extname(filePath) === '.js' ? filePath : filePath + '.compiled'; + // **Note: .html and .css don't return valid sourcemaps cause they are used for rollup + const config = map && map.version ? { inputSourceMap: map } : {}; - return generated.code; + return babelCore.transform(code, { ...BABEL_CONFIG, ...{ filename }, ...config }); }, getCacheKey(fileData, filePath, configStr, options) { const { NODE_ENV } = process.env; From ea6a734655789261308372c80576461cb603482a Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Thu, 4 Oct 2018 17:48:58 -0700 Subject: [PATCH 2/3] feat(jest-preset): update jest preset to exclude .html and .css from being included in the jest coverage report. --- packages/lwc-jest-preset/jest-preset.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/lwc-jest-preset/jest-preset.js b/packages/lwc-jest-preset/jest-preset.js index 5b945829de..6f0e4e53d2 100644 --- a/packages/lwc-jest-preset/jest-preset.js +++ b/packages/lwc-jest-preset/jest-preset.js @@ -26,4 +26,8 @@ module.exports = { // temp workaround until this is released - https://github.com/facebook/jest/pull/6792 testURL: "http://localhost/", + coveragePathIgnorePatterns: [ + '\.css$', + '\.html$', + ], }; From 0b2cd3d38e7f864ac1d8b4d36d2a8aacdba3ca33 Mon Sep 17 00:00:00 2001 From: Jose David Rodriguez Velasco Date: Fri, 5 Oct 2018 06:44:41 -0700 Subject: [PATCH 3/3] wip: code simplification --- packages/lwc-jest-transformer/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lwc-jest-transformer/src/index.js b/packages/lwc-jest-transformer/src/index.js index 05b17bbb5e..6db7833499 100644 --- a/packages/lwc-jest-transformer/src/index.js +++ b/packages/lwc-jest-transformer/src/index.js @@ -48,7 +48,7 @@ module.exports = { // **Note: .html and .css don't return valid sourcemaps cause they are used for rollup const config = map && map.version ? { inputSourceMap: map } : {}; - return babelCore.transform(code, { ...BABEL_CONFIG, ...{ filename }, ...config }); + return babelCore.transform(code, { ...BABEL_CONFIG, ...config, filename }); }, getCacheKey(fileData, filePath, configStr, options) { const { NODE_ENV } = process.env;