Do you want to request a feature or report a bug?
docs :)
Basically, I'd like to know what would be the best set up for using Jest and Lerna together. We'd like to have the parent dir with the Jest dependencies and be responsible to run tests.
.babelrc
? Will Jest use that one or the parent one? Will it have conflicts? Maybe one package needs a plugin that other does not. build/index.js
for all packages first? Any alternatives?package.json
of each package? So I can have a different jest set up depending on the package? For example, one package might use setupFiles
but others will not need it.You could look at the Jest repo itself for a start! You cannot overwrite the Jest config for now, for that we may build the multi-config runner #2970.
Is there a way use babel-jest
as a transform in lerna repos such that I don't need to have a built file in every package? I am running into issues with code in my node_modules
not getting transformed due to testPathIgnorePatterns
.
I have the same issue as @casesandberg. The Jest unit tests in Lerna packages are failing.
One issue I have is "import" being undefined token (testPathIgnorePatterns fixes that), but then the Lerna packages are not transpiled and hence cannot be tested.
Any help?
on the root
of the repo I have
a jest.config.js like
const base = require("./jest.config.base.js");
module.exports = {
...base,
projects:
[
"<rootDir>/packages/*/jest.config.js"
],
coverageDirectory: "<rootDir>/coverage/"
};
using the projects this will look for all the jest.config.js in the packages
a jest.config.base.js that will be used as a base for all the packages
module.exports = {
roots: [
"<rootDir>/src",
"<rootDir>/tests"
],
transform: {
"^.+\\.ts$": "ts-jest"
},
testRegex: "(/tests/.*.(test|spec)).(jsx?|tsx?)$",
moduleFileExtensions: [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
],
collectCoverage: true,
coveragePathIgnorePatterns: [
"(tests/.*.mock).(jsx?|tsx?)$"
],
verbose: true
};
the src
and tests
folders are folder in my packages.
Now in each packages I have a jest.config.js
with
// Jest configuration for api
const base = require("../../jest.config.base.js");
module.exports = {
...base,
name: YourModuleName,
displayName: YourModuleName
};
You could get your module name from the package.json for instance
So now you can run jest either from the packages itself or from the root and it should work.
$ lerna run test
will execute the tests in each packages or $ yarn test
which will run jest on the root.
Hope it helps
@nolazybits are you sure your projects are even used? When I follow what you did, it just executes everything with the base config.
@Itrulia Here's what I did in my packages/*/jest.config.js
files to fix this:
const base = require("../../jest.config.base.js");
const pack = require("./package");
module.exports = {
...base,
displayName: pack.name,
name: pack.name,
rootDir: "../..",
testMatch: [`<rootDir>/packages/${pack.name}/**/*.spec.js`],
};
I also fixed it already, I had to add "<rootDir"
to projects and then it worked.
Most helpful comment
on the
root
of the repo I havea jest.config.js like
using the projects this will look for all the jest.config.js in the packages
a jest.config.base.js that will be used as a base for all the packages
the
src
andtests
folders are folder in my packages.Now in each packages I have a
jest.config.js
withYou could get your module name from the package.json for instance
So now you can run jest either from the packages itself or from the root and it should work.
$ lerna run test
will execute the tests in each packages or$ yarn test
which will run jest on the root.Hope it helps