I'm trying to figure out how to get Jest to work in my environment, and I'm running into an issue where this project has a bunch of custom components in a subdirectory within node_modules.
I'm getting this error:
FAIL src/mantle/tools/searchindexer/apps/DataMover/js/components/__test__/GenericJobsTable.test.jsx
● Test suite failed to run
/Users/rob/repos/mesa/ui/node_modules/iggy-common/components/IggyTable.jsx:1
({"Object.":function(module,exports,require,__dirname,__filename,global,jest){import React, {PropTypes} from "react";
^^^^^^
SyntaxError: Unexpected token import
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
at Object. (src/mantle/tools/searchindexer/apps/DataMover/js/components/JobsTable/GenericJobsTable.jsx:7:18)
at Object. (src/mantle/tools/searchindexer/apps/DataMover/js/components/__test__/GenericJobsTable.test.jsx:5:25)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 2.4s
Ran all test suites matching "GenericJobsTable".
I'm running jest ^20.0.3
and babel-jest ^20.0.3
on NodeJS 7.7.1.
In my package.json, this is the jest config section I have:
"jest": {
"verbose": true,
"transform": {
"^.+\\.jsx$": "babel-jest"
},
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleDirectories": [
"node_modules"
]
}
I have my root .babelrc
defined as:
{
"presets": ["es2015", "react"]
}
If I run jest --debug
I see this:
{
"config": {
"automock": false,
"browser": false,
"cache": false,
"cacheDirectory": "/var/folders/wz/hd_hp8zn6gq7p6816w1hwx640000gn/T/jest_dx",
"clearMocks": false,
"coveragePathIgnorePatterns": [
"/node_modules/"
],
"globals": {},
"haste": {
"providesModuleNodeModules": []
},
"moduleDirectories": [
"node_modules"
],
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleNameMapper": {},
"modulePathIgnorePatterns": [],
"name": "898fa528b40c10619090191345fdb241",
"resetMocks": false,
"resetModules": false,
"rootDir": "/Users/rob/repos/mesa/ui",
"roots": [
"/Users/rob/repos/mesa/ui"
],
"setupFiles": [
"/Users/rob/repos/mesa/ui/node_modules/regenerator-runtime/runtime.js"
],
"snapshotSerializers": [],
"testEnvironment": "jest-environment-jsdom",
"testMatch": [
"**/__tests__/**/*.js?(x)",
"**/?(*.)(spec|test).js?(x)"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testRegex": "",
"testRunner": "/Users/rob/repos/mesa/ui/node_modules/jest-jasmine2/build/index.js",
"testURL": "about:blank",
"timers": "real",
"transform": [
[
"^.+\\.jsx$",
"/Users/rob/repos/mesa/ui/node_modules/babel-jest/build/index.js"
]
],
"transformIgnorePatterns": [
"/node_modules/"
]
},
"framework": "jasmine2",
"globalConfig": {
"bail": false,
"coverageReporters": [
"json",
"text",
"lcov",
"clover"
],
"expand": false,
"mapCoverage": false,
"noStackTrace": false,
"notify": false,
"projects": [
"/Users/rob/repos/mesa/ui"
],
"rootDir": "/Users/rob/repos/mesa/ui",
"testPathPattern": "",
"testResultsProcessor": null,
"updateSnapshot": "new",
"useStderr": false,
"verbose": true,
"watch": false,
"watchman": true
},
"version": "20.0.3"
}
Any idea what I might have misconfigured here?
SOLVED!!!!! The problem wound up being that one of those pesky files in node_modules/iggy-common was a plain ol' JS file needing transpilation:
"jest": {
"verbose": true,
"transform": {
"^.+\\.jsx$": "babel-jest",
"^.+\\.js$": "babel-jest"
},
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleDirectories": [
"node_modules"
],
"transformIgnorePatterns": [
"node_modules/(?!iggy-common)"
]
}