jest-coverage-ratchet
jest-coverage-ratchet copied to clipboard
Support for `jest.config.js`?
This works great, but I use jest.config.js instead of using the package.json and when running the ratchet, it appends the new thresholds into package.json.
I tried jest-coverage-ratchet --config-path ./jest.config.js with no success. Even logged console.log(configPath) here https://github.com/Koleok/jest-coverage-ratchet/blob/master/src/index.js#L19. It did show the path to jest.config.js but still bumped the package.json
This is a pretty common case and worth supporting 👍
@Koleok any update on this?
@SimplyComplexable doesn't look any new PR was closed recently.
I would love this feature.
Well its cool to see that someone is using this 😅 I will try to get this done in the PM hours this week, I haven't used it in my daily work for a few years so it had just left my mental inbox so to speak :)
I was able to find some time for this in the past few days, turns out its a little bit tricky to re-write a jest.confg.js file in a responsible way as opposed to a jest.config.json, simply because I can't just assume that file is
module.exports = {
// config
}
It may be something like:
const cleverConfigLogicBasedOnEnv = {
// ...
}
module.exports = {
...cleverConfigLogicBasedOnEnv,
// rest of config
}
Certainly it can be done, it will just take some regexs and logic that will have to evolve over time as edge cases come up. With this in mind, I think the first pass will just support jest.config.json files while some thought is put into how to effectively deal with .js.
As a workaround until then, you could make a file called something like jest.coverageConfig.json that was there just for the purpose of ratcheting, then import that and spread it into your jest.config.js
jest.coverageConfig.json
{
"coverageThreshold": {
"global": {
"lines": 86.67,
"statements": 74.29,
"functions": 10,
"branches": 50
}
}
}
jest.config.js
const coverageConfig = require('./jest.coverageConfig.json')
module.exports = {
...coverageConfig,
// rest of your config
}
then just make sure that you are running the command like
jest-coverage-ratchet --configPath ./jest.coverageConfig.json
Hi @Koleok !
Just wanted to note next
simply because I can't just assume that file is...
thats true. different setups are possible.
However, in readme you already do some assumptions
I know what happens when you assume, but jest-coverage-ratchet makes the following assumptions about your project.
I would ask you to make one more.
BTW thanks for great lib
@ZuBB Fair enough 👌 , lets give it a try with that assumption, seems there are few enough users of this lib that its not a crazy experiment to assume a certain format of jest.config.js, I'll push up the new version over the next few days with that packed in 👍
I found a workaround for this using the current version;
TL;DR import the thresholds directly from
package.json
npm i -D jest-coverage-ratchet- add to package.json:
{
"scripts": {
"test:coverage": "jest-coverage-ratchet",
}
}
npm run test:coverage(package.jsonnow contains"jest": {})- update
jest.config.js:
const jestConfig = require('./package.json').jest;
module.exports = {
...jestConfig,
}
There is a new package based on jest-coverage-ratchet that will do this that is still being maintained called jest-coverage-thresholds-bumper.
https://github.com/Litee/jest-coverage-thresholds-bumper