I am trying to pass along a configuration file to Jest in order to run tests only from a given directory.
According to documentation, you can use config.testPathDi
Seems to me you can configure jest directly within your package.json
, see https://github.com/shidhincr/react-jest-gulp-jspm-seed/blob/master/package.json.
{
"name": "react-jest-gulp-seed",
"version": "1.0.0",
"description": "Seed for React Jest Gulp Project",
"main": "index.js",
"scripts": {
"test": "jest",
"postinstall": "jspm install"
},
"jest": {
"scriptPreprocessor": "./preprocessor.js",
"testPathIgnorePatterns": [
"/node_modules/",
"/jspm_packages"
],
"unmockedModulePathPatterns": [
"./node_modules/react"
]
},
"author": "Shidhin CR <shidhincr@gmail.com> (http://www.undefinednull.com/)",
"license": "ISC",
"dependencies": {
"del": "^1.1.1",
"gulp": "^3.8.11",
"gulp-filter": "^2.0.2",
"gulp-load-plugins": "^0.10.0",
"gulp-react": "^3.0.1",
"gulp-shell": "^0.4.1",
"harmonize": "^1.4.1",
"jest-cli": "^0.4.1",
"jspm": "^0.15.5",
"react": "^0.13.2",
"react-tools": "^0.13.2",
"run-sequence": "^1.1.0"
},
"devDependencies": {
"browser-sync": "^2.7.1",
"gulp": "^3.8.11"
},
"jspm": {
"directories": {},
"dependencies": {
"react": "npm:react@^0.13.2"
},
"devDependencies": {
"babel": "npm:babel-core@^5.1.13",
"babel-runtime": "npm:babel-runtime@^5.1.13",
"core-js": "npm:core-js@^0.9.4"
}
}
}
For JEST V20+:
{
"roots": ["__tests__/"]
}
For v 20-, you will get following warning if you use testPathDirs:
Deprecation Warning:
Option "testPathDirs" was replaced by "roots".
Jest now treats your current configuration as: { "roots": ["tests/unit/"] }
Please update your configuration.
As of the current date of October 5, 2018, I was able to setup a jest configuration file with ease, without it requiring it to be in JSON format.
My package.json scripts section:
"scripts": {
"start": "node server.js",
"dev": "webpack-dev-server --hot --inline",
"test": "jest --config ./jest-config.js",
"build": "webpack",
"postinstall": "webpack"
}
I decided to keep the jest-config file in the root path alongside package.json, so that's where it is pointing to, but you can put it anywhere you want. Here is the configuration file, albeit a little short:
module.exports = {
verbose: true,
setupTestFrameworkScriptFile: "./enzyme.js",
roots: [
"../__tests__"
],
modulePaths: [
"./__stubs__"
],
moduleNameMapper: {
".scss$": "scss-stub.js"
}
}
The Jest documentation in the "Configuring Jest" section (link here) says that you can create it with a module.exports object. They include a caveat that says, "Please keep in mind that the resulting configuration must be JSON-serializable", which adds to the confusion. "Delightful Javascript Testing!" Hah!
P.S. The roots property in the config tells Jest where to look for all of your tests. Thought it might help.
I figured out that the config file is JSON.
{
"testPathDirs": ["coredata/src"]
}
Unfortunately I found nowhere in the documentation a hint about this.
The docs were updated to explain the configuration. Here is the link for anyone looking for more information:
https://facebook.github.io/jest/docs/en/configuration.html#content
The gist:
If using the --config <path/to/json>
to direct jest to your configuration json file, you only put the JSON information in the file without the "jest" keyword.
// config.json at <path/to/json>
{
"verbose": true
}
If you want to use the package.json to configure jest, add the "jest" key and then your configuration.
// package.json
{
"name": "packageName",
"version": "1.0.0",
"jest": {
"verbose": true
}
}