Skip to content

Commit 1cd403d

Browse files
authored
breaking: support Jest 29 (#494)
* chore(deps): update jest packages to v29 - babel-jest - jest - jest-environment-jsdom * test: update snapshot https://jestjs.io/blog/2022/08/25/jest-29 * fix(test): remove absolute path in e2e tests * ci(gh-action): avoid use Node.js 12 & add v18 * chore(deps-dev): update ts-jest to v29 * chore(deps): update jest packages * chore(deps): hoist project packages
1 parent 4855375 commit 1cd403d

File tree

25 files changed

+677
-922
lines changed

25 files changed

+677
-922
lines changed

Diff for: .github/workflows/node.yml

+3-12
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,17 @@ jobs:
2020
test:
2121
strategy:
2222
matrix:
23-
node: [12, 14, 16]
23+
node: [14, 16, 18]
2424
runs-on: ubuntu-latest
2525

2626
steps:
2727
- uses: actions/checkout@v2
2828
- name: Use Node.js ${{ matrix.node }}
29-
uses: actions/setup-node@v2
29+
uses: actions/setup-node@v3
3030
with:
3131
node-version: ${{ matrix.node }}
32+
cache: yarn
3233

33-
- name: Get yarn cache directory path
34-
id: yarn-cache
35-
run: echo "::set-output name=dir::$(yarn cache dir)"
36-
- name: Cache Dependencies
37-
uses: actions/cache@v2
38-
with:
39-
path: ${{ steps.yarn-cache.outputs.dir }}
40-
key: yarn-${{ hashFiles('**/yarn.lock') }}
41-
restore-keys: |
42-
yarn-
4334
- name: Install Project Dependencies
4435
run: yarn --frozen-lockfile
4536

Diff for: e2e/2.x/babel-in-package/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
"@babel/preset-env": "^7.9.0",
1717
"@vue/babel-preset-jsx": "^1.2.4",
1818
"@vue/test-utils": "^1.1.0",
19-
"@vue/vue2-jest": "^28.0.0",
19+
"@vue/vue2-jest": "^29.0.0",
2020
"coffeescript": "^2.3.2",
21-
"jest": "28.x",
22-
"jest-environment-jsdom": "28.0.2",
21+
"jest": "29.x",
22+
"jest-environment-jsdom": "29.x",
2323
"typescript": "^4.6.4"
2424
},
2525
"jest": {

Diff for: e2e/2.x/basic/__snapshots__/test.js.snap

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`generates source maps for .vue files 1`] = `
4-
Object {
5-
"file": "/home/runner/work/vue-jest/vue-jest/e2e/2.x/basic/components/Basic.vue",
4+
{
5+
"file": "./components/Basic.vue",
66
"mappings": ";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;eAEe;AACbA,MAAI,EAAE,OADO;AAEbC,UAAQ,EAAE;AACRC,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxC,aAAO;AACLC,WAAG,EAAE,KAAKC,OADL;AAELC,YAAI,EAAE,CAAC,KAAKD,OAFP;AAGLE,cAAM,EAAE,KAAKF;AAHR,OAAP;AAKD;AAPO,GAFG;AAWbG,MAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,WAAO;AACLC,SAAG,EAAE,4BADA;AAELJ,aAAO,EAAE;AAFJ,KAAP;AAID,GAhBY;AAiBbK,SAAO,EAAE;AACPC,eAAW,EAAE,SAASA,WAAT,GAAuB;AAClC,WAAKN,OAAL,GAAe,CAAC,KAAKA,OAArB;AACD;AAHM;AAjBI,C",
7-
"names": Array [
7+
"names": [
88
"name",
99
"computed",
1010
"headingClasses",
@@ -17,10 +17,10 @@ Object {
1717
"methods",
1818
"toggleClass",
1919
],
20-
"sources": Array [
20+
"sources": [
2121
"Basic.vue",
2222
],
23-
"sourcesContent": Array [
23+
"sourcesContent": [
2424
"//
2525
//
2626
//
@@ -74,10 +74,10 @@ export default {
7474
`;
7575

7676
exports[`generates source maps using src attributes 1`] = `
77-
Object {
78-
"file": "/home/runner/work/vue-jest/vue-jest/e2e/2.x/basic/components/SourceMapsSrc.vue",
77+
{
78+
"file": "./components/SourceMapsSrc.vue",
7979
"mappings": ";;;;;;eAAe;AACbA,MAAI,EAAE,OADO;AAEbC,UAAQ,EAAE;AACRC,kBAAc,EAAE,SAASA,cAAT,GAA0B;AACxC,aAAO;AACLC,WAAG,EAAE,KAAKC,OADL;AAELC,YAAI,EAAE,CAAC,KAAKD,OAFP;AAGLE,cAAM,EAAE,KAAKF;AAHR,OAAP;AAKD;AAPO,GAFG;AAWbG,MAAI,EAAE,SAASA,IAAT,GAAgB;AACpB,WAAO;AACLC,SAAG,EAAE,4BADA;AAELJ,aAAO,EAAE;AAFJ,KAAP;AAID,GAhBY;AAiBbK,SAAO,EAAE;AACPC,eAAW,EAAE,SAASA,WAAT,GAAuB;AAClC,WAAKN,OAAL,GAAe,CAAC,KAAKA,OAArB;AACD;AAHM;AAjBI,C",
80-
"names": Array [
80+
"names": [
8181
"name",
8282
"computed",
8383
"headingClasses",
@@ -90,10 +90,10 @@ Object {
9090
"methods",
9191
"toggleClass",
9292
],
93-
"sources": Array [
93+
"sources": [
9494
"SourceMapsSrc.vue",
9595
],
96-
"sourcesContent": Array [
96+
"sourcesContent": [
9797
"export default {
9898
name: 'basic',
9999
computed: {

Diff for: e2e/2.x/basic/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
"@babel/core": "^7.9.0",
1515
"@babel/preset-env": "^7.9.0",
1616
"@vue/test-utils": "^1.1.0",
17-
"@vue/vue2-jest": "^28.0.0",
17+
"@vue/vue2-jest": "^29.0.0",
1818
"babel-helper-vue-jsx-merge-props": "^2.0.3",
1919
"babel-plugin-syntax-jsx": "^6.18.0",
2020
"babel-plugin-transform-vue-jsx": "^3.7.0",
2121
"coffeescript": "^2.3.2",
2222
"jade": "^1.11.0",
23-
"jest": "28.x",
24-
"jest-environment-jsdom": "28.0.2",
23+
"jest": "29.x",
24+
"jest-environment-jsdom": "29.x",
2525
"pug": "^3.0.1",
2626
"sass": "^1.23.7",
2727
"typescript": "^4.6.4"

Diff for: e2e/2.x/basic/test.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ test('handles named exports', () => {
4242
})
4343

4444
test('generates source maps for .vue files', () => {
45-
const filePath = resolve(__dirname, './components/Basic.vue')
46-
const fileString = readFileSync(filePath, { encoding: 'utf8' })
45+
const filePath = './components/Basic.vue'
46+
const fileString = readFileSync(resolve(__dirname, filePath), {
47+
encoding: 'utf8'
48+
})
4749
const config = {
4850
moduleFileExtensions: ['js', 'vue']
4951
}
@@ -56,16 +58,14 @@ test('generates source maps for .vue files', () => {
5658
})
5759

5860
test('generates source maps using src attributes', () => {
59-
const filePath = resolve(__dirname, './components/SourceMapsSrc.vue')
60-
const fileString = readFileSync(filePath, { encoding: 'utf8' })
61+
const filePath = './components/SourceMapsSrc.vue'
62+
const fileString = readFileSync(resolve(__dirname, filePath), {
63+
encoding: 'utf8'
64+
})
6165

62-
const config = {
63-
moduleFileExtensions: ['js', 'vue']
64-
}
66+
const config = { moduleFileExtensions: ['js', 'vue'] }
6567

66-
const { map } = jestVue.process(fileString, filePath, {
67-
config
68-
})
68+
const { map } = jestVue.process(fileString, filePath, { config })
6969

7070
expect(JSON.parse(map)).toMatchSnapshot()
7171
})

Diff for: e2e/2.x/custom-transformers/package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
"@babel/core": "^7.9.0",
1515
"@babel/preset-env": "^7.9.0",
1616
"@vue/test-utils": "^1.1.0",
17-
"babel-jest": "^28.0.2",
18-
"jest": "28.x",
19-
"jest-environment-jsdom": "28.0.2",
17+
"@vue/vue2-jest": "^29.0.0",
18+
"babel-jest": "29.x",
19+
"jest": "29.x",
20+
"jest-environment-jsdom": "29.x",
2021
"postcss": "^7.0.13",
2122
"postcss-color-function": "^4.0.1",
22-
"sass": "^1.23.7",
23-
"@vue/vue2-jest": "^28.0.0"
23+
"sass": "^1.23.7"
2424
},
2525
"jest": {
2626
"testEnvironment": "jsdom",

Diff for: e2e/2.x/sass-importer/entry/package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
"devDependencies": {
1616
"@babel/core": "^7.9.0",
1717
"@babel/preset-env": "^7.9.0",
18+
"@vue/vue2-jest": "^29.0.0",
1819
"@vue/test-utils": "^1.1.0",
19-
"babel-jest": "^28.0.2",
20-
"jest": "28.x",
21-
"jest-environment-jsdom": "28.0.2",
20+
"babel-jest": "29.x",
21+
"jest": "29.x",
22+
"jest-environment-jsdom": "29.x",
2223
"postcss": "^7.0.13",
2324
"postcss-color-function": "^4.0.1",
24-
"sass": "^1.23.7",
25-
"@vue/vue2-jest": "^28.0.0"
25+
"sass": "^1.23.7"
2626
},
2727
"jest": {
2828
"testEnvironment": "jsdom",

Diff for: e2e/2.x/style/jest.config.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const os = require('node:os')
2+
3+
/** @type {import('@jest/types').Config.InitialOptions} */
4+
module.exports = {
5+
testEnvironment: 'jsdom',
6+
moduleFileExtensions: ['js', 'json', 'vue'],
7+
transform: {
8+
'^.+\\.js$': 'babel-jest',
9+
'^.+\\.vue$': '@vue/vue2-jest'
10+
},
11+
moduleNameMapper: {
12+
'^~tmp/(.*)': `${os.tmpdir()}/$1`,
13+
'^~?__styles/(.*)$': '<rootDir>/components/styles/$1'
14+
},
15+
globals: {
16+
'vue-jest': {
17+
resources: {
18+
scss: ['variables.scss'],
19+
less: ['variables.less']
20+
}
21+
}
22+
}
23+
}

Diff for: e2e/2.x/style/package.json

+4-31
Original file line numberDiff line numberDiff line change
@@ -14,39 +14,12 @@
1414
"@babel/core": "^7.9.0",
1515
"@babel/preset-env": "^7.9.0",
1616
"@vue/test-utils": "^1.1.0",
17-
"jest": "28.x",
17+
"@vue/vue2-jest": "^29.0.0",
18+
"jest": "29.x",
19+
"jest-environment-jsdom": "29.x",
1820
"less": "^3.9.0",
1921
"postcss": "^7.0.13",
2022
"sass": "^1.23.7",
21-
"stylus": "^0.54.5",
22-
"@vue/vue2-jest": "^28.0.0"
23-
},
24-
"jest": {
25-
"testEnvironment": "jsdom",
26-
"moduleFileExtensions": [
27-
"js",
28-
"json",
29-
"vue"
30-
],
31-
"transform": {
32-
"^.+\\.js$": "babel-jest",
33-
"^.+\\.vue$": "@vue/vue2-jest"
34-
},
35-
"moduleNameMapper": {
36-
"^~tmp/(.*)": "/tmp/$1",
37-
"^~?__styles/(.*)$": "<rootDir>/components/styles/$1"
38-
},
39-
"globals": {
40-
"vue-jest": {
41-
"resources": {
42-
"scss": [
43-
"variables.scss"
44-
],
45-
"less": [
46-
"variables.less"
47-
]
48-
}
49-
}
50-
}
23+
"stylus": "^0.54.5"
5124
}
5225
}

Diff for: e2e/2.x/style/setup.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
const fs = require('fs')
2+
const os = require('node:os')
23

34
const testDir = '../../../node_modules/vue-jest-test'
45

56
if (!fs.existsSync(testDir)) {
67
fs.mkdirSync(testDir)
78
}
89

9-
fs.openSync('/tmp/absolute.scss', 'w')
10+
fs.openSync(`${os.tmpdir()}/absolute.scss`, 'w')
1011
fs.openSync(`${testDir}/_partial.scss`, 'w')
1112
fs.openSync(`${testDir}/foo.bar.scss`, 'w')
1213
fs.openSync(`${testDir}/baz.css`, 'w')

Diff for: e2e/3.x/babel-in-package/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
"devDependencies": {
1313
"@babel/core": "^7.9.0",
1414
"@babel/preset-env": "^7.9.0",
15-
"@vue/vue3-jest": "^28.0.0",
15+
"@vue/vue3-jest": "^29.0.0",
1616
"coffeescript": "^2.3.2",
17-
"jest": "^28.0.0",
18-
"jest-environment-jsdom": "28.0.2",
19-
"ts-jest": "^28.0.1",
17+
"jest": "29.x",
18+
"jest-environment-jsdom": "29.x",
19+
"ts-jest": "^29.0.0-next.0",
2020
"typescript": "^4.6.4"
2121
},
2222
"jest": {

Diff for: e2e/3.x/basic/__snapshots__/test.js.snap

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`generates source maps for .vue files 1`] = `
4-
"\\"use strict\\";
4+
""use strict";
55
6-
Object.defineProperty(exports, \\"__esModule\\", {
6+
Object.defineProperty(exports, "__esModule", {
77
value: true
88
});
9-
exports[\\"default\\"] = void 0;
9+
exports["default"] = void 0;
1010
var _default = {
1111
name: 'basic',
1212
computed: {
@@ -30,36 +30,36 @@ var _default = {
3030
}
3131
}
3232
};
33-
exports[\\"default\\"] = _default;
34-
\\"use strict\\";
33+
exports["default"] = _default;
34+
"use strict";
3535
36-
Object.defineProperty(exports, \\"__esModule\\", {
36+
Object.defineProperty(exports, "__esModule", {
3737
value: true
3838
});
3939
exports.render = render;
4040
41-
var _vue = require(\\"vue\\");
41+
var _vue = require("vue");
4242
4343
var _hoisted_1 = {
44-
\\"class\\": \\"hello\\"
44+
"class": "hello"
4545
};
4646
4747
function render(_ctx, _cache) {
48-
return (0, _vue.openBlock)(), (0, _vue.createElementBlock)(\\"div\\", _hoisted_1, [(0, _vue.createElementVNode)(\\"h1\\", {
49-
\\"class\\": (0, _vue.normalizeClass)(_ctx.headingClasses)
48+
return (0, _vue.openBlock)(), (0, _vue.createElementBlock)("div", _hoisted_1, [(0, _vue.createElementVNode)("h1", {
49+
"class": (0, _vue.normalizeClass)(_ctx.headingClasses)
5050
}, (0, _vue.toDisplayString)(_ctx.msg), 3
5151
/* TEXT, CLASS */
5252
)]);
53-
};exports.default = {...exports.default, render};;exports.default = {...exports.default, __cssModules: {\\"css\\":{\\"testA\\":\\"testA\\"},\\"$style\\":{\\"testB\\":\\"testB\\"}}}"
53+
};exports.default = {...exports.default, render};;exports.default = {...exports.default, __cssModules: {"css":{"testA":"testA"},"$style":{"testB":"testB"}}}"
5454
`;
5555

5656
exports[`generates source maps using src attributes 1`] = `
57-
"\\"use strict\\";
57+
""use strict";
5858
59-
Object.defineProperty(exports, \\"__esModule\\", {
59+
Object.defineProperty(exports, "__esModule", {
6060
value: true
6161
});
62-
exports[\\"default\\"] = void 0;
62+
exports["default"] = void 0;
6363
var _default = {
6464
name: 'basic',
6565
computed: {
@@ -83,23 +83,23 @@ var _default = {
8383
}
8484
}
8585
};
86-
exports[\\"default\\"] = _default;
87-
\\"use strict\\";
86+
exports["default"] = _default;
87+
"use strict";
8888
89-
Object.defineProperty(exports, \\"__esModule\\", {
89+
Object.defineProperty(exports, "__esModule", {
9090
value: true
9191
});
9292
exports.render = render;
9393
94-
var _vue = require(\\"vue\\");
94+
var _vue = require("vue");
9595
9696
var _hoisted_1 = {
97-
\\"class\\": \\"hello\\"
97+
"class": "hello"
9898
};
9999
100100
function render(_ctx, _cache) {
101-
return (0, _vue.openBlock)(), (0, _vue.createElementBlock)(\\"div\\", _hoisted_1, [(0, _vue.createElementVNode)(\\"h1\\", {
102-
\\"class\\": (0, _vue.normalizeClass)(_ctx.headingClasses)
101+
return (0, _vue.openBlock)(), (0, _vue.createElementBlock)("div", _hoisted_1, [(0, _vue.createElementVNode)("h1", {
102+
"class": (0, _vue.normalizeClass)(_ctx.headingClasses)
103103
}, (0, _vue.toDisplayString)(_ctx.msg), 3
104104
/* TEXT, CLASS */
105105
)]);

0 commit comments

Comments
 (0)