Skip to content

Commit f2855eb

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 45e804b commit f2855eb

File tree

8 files changed

+2720
-450
lines changed

8 files changed

+2720
-450
lines changed

Diff for: package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"@vuepress/plugin-pwa": "^1.8.1",
4343
"@vuepress/theme-vue": "^1.8.1",
4444
"babel-core": "7.0.0-bridge.0",
45-
"babel-jest": "^26.6.3",
45+
"babel-jest": "^27.0.6",
4646
"chromedriver": "^90.0.0",
4747
"debug": "^4.1.0",
4848
"eslint": "^7.20.0",
@@ -58,7 +58,7 @@
5858
"graphql": "^15.5.0",
5959
"http-server": "^0.12.3",
6060
"inquirer": "^8.0.0",
61-
"jest": "^26.6.3",
61+
"jest": "^27.0.6",
6262
"lerna": "^3.22.0",
6363
"lerna-changelog": "^1.0.1",
6464
"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/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)