Skip to content

Commit 6d59435

Browse files
committed
feat: update jest to v27
Fixes #6602 This commit updates the generated project to use: - jest v27, as an explicit dependency - ts-jest and babel-jest v27 - vue3-jest as a transformer for Vue 3 projects - vue2-jest as a transformer for Vue 2 projects The default Babel transformer has been updated to work with Jest v27 as well.
1 parent cf1022d commit 6d59435

File tree

9 files changed

+2496
-582
lines changed

9 files changed

+2496
-582
lines changed

Diff for: package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"@vuepress/plugin-pwa": "^1.8.1",
4242
"@vuepress/theme-vue": "^1.8.1",
4343
"babel-core": "7.0.0-bridge.0",
44-
"babel-jest": "^26.6.3",
44+
"babel-jest": "^27.0.6",
4545
"chromedriver": "^92.0.0",
4646
"debug": "^4.1.0",
4747
"eslint": "^7.32.0",
@@ -57,7 +57,7 @@
5757
"graphql": "^15.5.0",
5858
"http-server": "^0.12.3",
5959
"inquirer": "^8.0.0",
60-
"jest": "^26.6.3",
60+
"jest": "^27.0.6",
6161
"lerna": "^3.22.0",
6262
"lerna-changelog": "^1.0.1",
6363
"lint-staged": "^10.5.4",

Diff for: packages/@vue/cli-plugin-unit-jest/__tests__/jestPlugin.spec.js

+19
Original file line numberDiff line numberDiff line change
@@ -137,5 +137,24 @@ test('should work with Vue 3', async () => {
137137
})
138138
const pkg = JSON.parse(await project.read('package.json'))
139139
expect(pkg.devDependencies['@vue/test-utils']).toMatch('^2')
140+
expect(pkg.devDependencies['vue3-jest']).toMatch('^27')
141+
expect(pkg.devDependencies.jest).toMatch('^27')
142+
expect(pkg.devDependencies['babel-jest']).toMatch('^27')
143+
await project.run(`vue-cli-service test:unit`)
144+
})
145+
146+
test('should work with Vue 3 and TS', async () => {
147+
const project = await createOutside('unit-jest-vue-3', {
148+
vueVersion: '3',
149+
plugins: {
150+
'@vue/cli-plugin-typescript': {},
151+
'@vue/cli-plugin-unit-jest': {}
152+
}
153+
})
154+
const pkg = JSON.parse(await project.read('package.json'))
155+
expect(pkg.devDependencies['@vue/test-utils']).toMatch('^2')
156+
expect(pkg.devDependencies['vue3-jest']).toMatch('^27')
157+
expect(pkg.devDependencies.jest).toMatch('^27')
158+
expect(pkg.devDependencies['ts-jest']).toMatch('^27')
140159
await project.run(`vue-cli-service test:unit`)
141160
})

Diff for: packages/@vue/cli-plugin-unit-jest/__tests__/jestPluginVue3.spec.js

+19
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,24 @@ test('should work with Vue 3', async () => {
1212
})
1313
const pkg = JSON.parse(await project.read('package.json'))
1414
expect(pkg.devDependencies['@vue/test-utils']).toMatch('^2')
15+
expect(pkg.devDependencies['vue3-jest']).toMatch('^27')
16+
expect(pkg.devDependencies.jest).toMatch('^27')
17+
expect(pkg.devDependencies['babel-jest']).toMatch('^27')
18+
await project.run(`vue-cli-service test:unit`)
19+
})
20+
21+
test('should work with Vue 3 and TS', async () => {
22+
const project = await createOutside('unit-jest-vue-3', {
23+
vueVersion: '3',
24+
plugins: {
25+
'@vue/cli-plugin-typescript': {},
26+
'@vue/cli-plugin-unit-jest': {}
27+
}
28+
})
29+
const pkg = JSON.parse(await project.read('package.json'))
30+
expect(pkg.devDependencies['@vue/test-utils']).toMatch('^2')
31+
expect(pkg.devDependencies['vue3-jest']).toMatch('^27')
32+
expect(pkg.devDependencies.jest).toMatch('^27')
33+
expect(pkg.devDependencies['ts-jest']).toMatch('^27')
1534
await project.run(`vue-cli-service test:unit`)
1635
})

Diff for: packages/@vue/cli-plugin-unit-jest/generator/index.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ module.exports = (api, options, rootOptions, invoking) => {
1212
'test:unit': 'vue-cli-service test:unit'
1313
},
1414
devDependencies: {
15-
'vue-jest': isVue3 ? '^5.0.0-0' : '^4.0.1',
15+
'babel-jest': '^27.0.6',
16+
'jest': '^27.0.5',
17+
'@vue/vue2-jest': isVue3 ? undefined : '^27.0.0-alpha.1',
18+
'vue3-jest': isVue3 ? '^27.0.0-alpha.2' : undefined,
1619
'@vue/test-utils': isVue3 ? '^2.0.0-0' : '^1.1.3'
1720
},
1821
jest: {
@@ -58,7 +61,7 @@ const applyTS = (module.exports.applyTS = (api, invoking) => {
5861
},
5962
devDependencies: {
6063
'@types/jest': '^26.0.20',
61-
'ts-jest': '^26.5.3'
64+
'ts-jest': '^27.0.4'
6265
}
6366
})
6467

Diff for: packages/@vue/cli-plugin-unit-jest/migrator/index.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ module.exports = (api) => {
1111

1212
if (!allDeps['vue-jest']) {
1313
// Likely a Vue 2 project, and uses the builtin preset.
14-
// Because we used to add `vue-jest` v5 to dev deps for Vue 3 projects.
15-
newDevDeps['vue-jest'] = '^4.0.1'
14+
newDevDeps.jest = '^27.0.6'
15+
// Because we used to add `vue3-jest` v27 to dev deps for Vue 3 projects.
16+
newDevDeps['vue3-jest'] = '^27.0.0.alpha.2'
1617
}
1718

1819
if (allDeps['@vue/cli-plugin-typescript'] && !allDeps['ts-jest']) {
19-
newDevDeps['ts-jest'] = '^26.5.3'
20+
newDevDeps['ts-jest'] = '^27.0.4'
2021
}
2122

2223
const toMerge = { devDependencies: newDevDeps }

Diff for: packages/@vue/cli-plugin-unit-jest/package.json

+15-7
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,37 @@
2424
},
2525
"dependencies": {
2626
"@babel/core": "^7.12.16",
27-
"@babel/plugin-transform-modules-commonjs": "^7.12.13",
27+
"@babel/plugin-transform-modules-commonjs": "^7.15.0",
2828
"@types/jest": "^26.0.20",
2929
"@vue/cli-shared-utils": "^5.0.0-beta.2",
30-
"babel-jest": "^26.6.3",
30+
"babel-jest": "^27.0.6",
3131
"deepmerge": "^4.2.2",
32-
"jest": "^26.6.3",
3332
"jest-serializer-vue": "^2.0.2",
3433
"jest-transform-stub": "^2.0.0",
3534
"jest-watch-typeahead": "^0.6.1"
3635
},
3736
"devDependencies": {
3837
"@vue/test-utils": "^1.1.3",
39-
"ts-jest": "^26.5.3",
40-
"vue-jest": "^4.0.1"
38+
"@vue/vue2-jest": "^27.0.0-alpha.1",
39+
"ts-jest": "^27.0.4",
40+
"vue3-jest": "^27.0.0-alpha.2"
4141
},
4242
"peerDependencies": {
4343
"@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0",
44-
"ts-jest": "^26.5.3",
45-
"vue-jest": "^4.0.1 || ^5.0.0-0"
44+
"jest": "^27.6.3",
45+
"ts-jest": "^27.0.4",
46+
"@vue/vue2-jest": "^27.0.0-alpha.1",
47+
"vue3-jest": "^27.0.0-alpha.2"
4648
},
4749
"peerDependenciesMeta": {
50+
"@vue/vue2-jest": {
51+
"optional": true
52+
},
4853
"ts-jest": {
4954
"optional": true
55+
},
56+
"vue3-jest": {
57+
"optional": true
5058
}
5159
}
5260
}

Diff for: packages/@vue/cli-plugin-unit-jest/presets/default/jest-preset.js

+23-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,30 @@
1-
let vueJest = null
1+
// eslint-disable-next-line node/no-extraneous-require
2+
const semver = require('semver')
3+
4+
let vueVersion = 2
25
try {
3-
vueJest = require.resolve('vue-jest')
4-
} catch (e) {
5-
throw new Error('Cannot resolve "vue-jest" module. Please make sure you have installed "vue-jest" as a dev dependency.')
6+
// eslint-disable-next-line node/no-extraneous-require
7+
const Vue = require('vue')
8+
vueVersion = semver.major(Vue.version)
9+
} catch (e) {}
10+
11+
let vueJest = null
12+
if (vueVersion === 2) {
13+
try {
14+
vueJest = require.resolve('@vue/vue2-jest')
15+
} catch (e) {
16+
throw new Error('Cannot resolve "@vue/vue2-jest" module. Please make sure you have installed "@vue/vue2-jest" as a dev dependency.')
17+
}
18+
} else if (vueVersion === 3) {
19+
try {
20+
vueJest = require.resolve('vue3-jest')
21+
} catch (e) {
22+
throw new Error('Cannot resolve "vue3-jest" module. Please make sure you have installed "vue3-jest" as a dev dependency.')
23+
}
624
}
725

826
module.exports = {
27+
testEnvironment: 'jsdom',
928
moduleFileExtensions: [
1029
'js',
1130
'jsx',

Diff for: packages/@vue/cli-plugin-unit-jest/presets/no-babel/esmoduleTransformer.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const babelJest = require('babel-jest')
1+
const babelJest = require('babel-jest').default
22

33
module.exports = babelJest.createTransformer({
44
plugins: ['@babel/plugin-transform-modules-commonjs'],

0 commit comments

Comments
 (0)