Maybe you may help me? I try to configure jest to use babel@7 So I have:
\"jest\": \"^23.4.1\",
\"@babel/core\": \"^7.0.0-beta.54\",
\"babel-7-jest\": \"^21.3.3\
I have struggled with this issue for a few days with no luck until seeing this post. Thanks so much for everyone posting whats worked from them!
Here is my configuration for clarity. This is a VueJs application using Jest. Hope this helps someone :)
My npm script for tests
"test:unit": "jest --config ./jest.config.js"
My babel packages
"@babel/core": "^7.6.2",
"babel-loader": "^8.0.4",
"babel-core": "^7.0.0-bridge.0",
"@babel/preset-env": "^7.6.2",
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"@vue/cli-plugin-babel": "^3.11.0",
babel.config.js
module.exports = {
presets: [
[
'@babel/preset-env',
{
debug: false,
targets: {
browsers: ['last 3 versions'],
},
},
],
],
};
jest.confg.js
module.exports = {
verbose: true,
moduleFileExtensions: ['js', 'json', 'vue'],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.(js|jsx)?$': 'babel-jest',
},
transformIgnorePatterns: ['<rootDir>/node_modules/'],
testMatch: ['**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'],
collectCoverage: false,
collectCoverageFrom: ['src/components/*.{js,vue}', '!**/node_modules/**'],
coverageReporters: ['html', 'text-summary'],
};
I believe I have found a working solution (no thanks to the Jest team providing broken documentation and evading GitHub issues around this issue).
You need the following in your devDependencies
section of your package.json
:
"devDependencies": {
"@babel/core": "^7.0.0-beta.54",
"@babel/preset-env": "^7.0.0-beta.54",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^23.4.0",
"bili": "^3.1.2",
"jest": "^23.4.1",
"regenerator-runtime": "^0.12.0"
}
The following in your .babelrc
:
{
"presets": [
[
"@babel/preset-env",
{
"debug": false,
"targets": {
"browsers": [
"last 3 versions"
]
}
}
]
]
}
In my particular project I did not need to use the Jest config so I deleted my empty jest.config.js
file.
Key points:
babel-7-jest
as this is deprecated as there is now official support for it.@babel/xyz
packages going forward - the babel-core
bridge one I have installed is the "official" way to use latest Babel 7. I imagine this need will be removed at some point in the future as everything migrates to Babel 7.import/export
and no longer need the antiquated require()
.Edit:
If you want to have a more detailed log of passing/failing tests then put this in your jest.config.js
:
module.exports = {
"verbose": true
}
4 days ago Facebook added babel 7 support for jest, so no need use the babel 7 bridge anymore.
For more information: https://github.com/facebook/jest/blob/master/README.md#using-babel
You can find a working example and tutorial over here.
These are all my Babel packages:
"@babel/core": "^7.1.2",
"@babel/node": "^7.0.0",
"@babel/preset-env": "^7.1.0",
"@babel/preset-react": "^7.0.0",
"@babel/register": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^23.6.0",
"babel-loader": "^8.0.4"
And I had to install babel-core@^7.0.0-bridge.0
like it is mentioned on the Jest website.
My .babelrc:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
And my npm script: jest --config ./test/jest.config.json
It didn't change for the Babel 7 upgrade.