jest: testSequencer config silently ignored in projects
Note: This is fundamentally working as intended, this issue is now about validating the config and providing a sufficient warning.
🐛 Bug Report
The configuration testSequencer
(https://jestjs.io/docs/en/configuration#testsequencer-string) is silently ignored in projects
(https://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig)
To Reproduce
Run this config and test sequencer:
module.exports = {
projects: [
{
testEnvironment: 'node',
testSequencer: './jestSequencer.js',
},
],
};
const Sequencer = require('@jest/test-sequencer').default;
console.log('I will never get called.');
class CustomSequencer extends Sequencer {
sort(tests) {
// Test structure information
// https://github.com/facebook/jest/blob/6b8b1404a1d9254e7d5d90a8934087a9c9899dab/packages/jest-runner/src/types.ts#L17-L21
const copyTests = Array.from(tests);
return copyTests.sort((testA, testB) => (testA.path > testB.path ? 1 : -1));
}
}
module.exports = CustomSequencer;
Expected behavior
Jest should warn that the testSequencer
should be global config, not per-project.
Original implementation: https://github.com/facebook/jest/issues/6216
Link to repl or repo (highly encouraged)
See above.
envinfo
System:
OS: Linux 4.4 Ubuntu 16.04.5 LTS (Xenial Xerus)
CPU: (4) x64 Intel(R) Xeon(R) Gold 6132 CPU @ 2.60GHz
Binaries:
Node: 12.13.0 - ~/.config/nvm/12.13.0/bin/node
npm: 6.12.0 - ~/.config/nvm/12.13.0/bin/npm
npmPackages:
jest: 25.1.0 => 25.1.0
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 15 (12 by maintainers)
Thanks for the report. I would however say that it is intended that we sort
allTests
(as we do in therunJest
function where the sequencer is called). We should reserve the right to interleave tests of different projects in any way necessary to optimize overall performance. In fact, being smarter about the order of running tests from different projects is something I’ve wanted to improve on for quite some time. I would instead say the expected behavior should be that the config validation throws straight away, instead of silently ignoring the project-level test sequencer option. We can make this issue about fixing that (and label help wanted / good first issue). If someone then wants to sort per project, they can still use the global sequencer and implement it in a way that groups bytest.context.config.name
or something.