From d45e248ea9d0b9665ba19a020483db493219b481 Mon Sep 17 00:00:00 2001 From: dobromir-hristov Date: Tue, 7 Jan 2020 23:27:50 +0200 Subject: [PATCH] feat: allow testing src code directly --- package.json | 1 + packages/server-test-utils/src/config.js | 2 +- packages/server-test-utils/src/index.js | 2 +- packages/test-utils/src/index.js | 2 +- test/setup/webpack.test.config.js | 27 +++++++++++++++++++----- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index bb9e21642..5c5be65f5 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "test:compat": "scripts/test-compat.sh", "test:unit": "npm run build:test && npm run test:unit:only", "test:unit:only": "mocha-webpack --webpack-config test/setup/webpack.test.config.js test/specs --recursive --require test/setup/mocha.setup.js", + "test:unit:only:dev": "cross-env TARGET=dev yarn run test:unit:only", "test:unit:debug": "npm run build:test && node --inspect-brk node_modules/.bin/mocha-webpack --webpack-config test/setup/webpack.test.config.js test/specs --recursive --require test/setup/mocha.setup.js", "test:unit:karma": "npm run build:test && npm run test:unit:karma:only", "test:unit:karma:only": "cross-env TARGET=browser karma start test/setup/karma.conf.js --single-run", diff --git a/packages/server-test-utils/src/config.js b/packages/server-test-utils/src/config.js index b1bb1fdcc..573e3f271 100644 --- a/packages/server-test-utils/src/config.js +++ b/packages/server-test-utils/src/config.js @@ -1,3 +1,3 @@ -import testUtils from '@vue/test-utils' +import * as testUtils from '@vue/test-utils' export default testUtils.config diff --git a/packages/server-test-utils/src/index.js b/packages/server-test-utils/src/index.js index 311bd683b..8ae853c1c 100644 --- a/packages/server-test-utils/src/index.js +++ b/packages/server-test-utils/src/index.js @@ -2,7 +2,7 @@ import renderToString from './renderToString' import render from './render' import config from './config' -export default { +export { renderToString, config, render diff --git a/packages/test-utils/src/index.js b/packages/test-utils/src/index.js index 6e073991b..109dc1f7e 100644 --- a/packages/test-utils/src/index.js +++ b/packages/test-utils/src/index.js @@ -16,7 +16,7 @@ function shallow(component, options) { return shallowMount(component, options) } -export default { +export { createLocalVue, createWrapper, config, diff --git a/test/setup/webpack.test.config.js b/test/setup/webpack.test.config.js index ac6ff0ce2..43ba84909 100644 --- a/test/setup/webpack.test.config.js +++ b/test/setup/webpack.test.config.js @@ -15,19 +15,36 @@ const rules = [].concat( { test: /\.js$/, loader: 'babel-loader', - exclude: /node_modules\/(?!(shared|create-instance)\/).*/ + exclude: /node_modules/ } ) - +const externals = nodeExternals({ + // we need to whitelist both `create-instance` and files in `shared` package. Otherwise Webpack wont bundle them in the test dev env + whitelist: ['create-instance', /^shared\/.*/] +}) +// define the default aliases +let aliasedFiles = { + '~vue/server-test-utils': `@vue/server-test-utils`, + '~vue/test-utils': `@vue/test-utils` +} +if (process.env.TARGET === 'dev') { + // if we are in dev test mode, we want to alias all files to the src file, not dist + aliasedFiles = { + // we need both as some places import the old alias with ~, others directly test utils package. + '@vue/server-test-utils': `@vue/server-test-utils/src/index.js`, + '@vue/test-utils': `@vue/test-utils/src/index.js`, + '~vue/server-test-utils': `@vue/server-test-utils/src/index.js`, + '~vue/test-utils': `@vue/test-utils/src/index.js` + } +} module.exports = { module: { rules }, - externals: !browser ? [nodeExternals()] : undefined, + externals: !browser ? [externals] : undefined, resolve: { alias: { - '~vue/server-test-utils': `${projectRoot}/packages/server-test-utils/dist/vue-server-test-utils.js`, - '~vue/test-utils': `${projectRoot}/packages/test-utils/dist/vue-test-utils.js`, + ...aliasedFiles, '~resources': `${projectRoot}/test/resources` } },