No console.log to STDOUT when running "npm test" (jest)

This isn't clean, but I've had luck with it, hopefully it'll help you until a fix is published: log some extra newlines after the log that's getting overwritten:

console.log('I want to be seen!');
console.log('\n\n\n\n');

From the linked issue since the problem is going on since years...

There is a pull request in the alpha release that is going to fix this problem. Looks like the last refining is being worked in the past few hours (see Github issue link).

However I found a solution that works for my simplest case:

  • just run enabling verbose mode and the log will magically appear!
npm test -- --verbose=true

This will not fix in every case; maybe async/multi-thread/etc will still have problems (please report your experiences, so I can update the answer); fo r example adding a process.exit(1) after the log will hide it again.

Trying to press ctrl + c before the process.exit() runs (with the right timing...) will show that the log is actually there and being overridden.

I will update the answer with news, but probably this will help others in starting with Node/NPM/Jest setups!


I had this issue and it turns out that in my case, the problem was calling process.exit(1) immediately after writing to the console. When you do this during Jest tests, the output seems to be lost.

The (not-entirely-satisfying) workaround that I settled on is:

console.warn('stuff I want to write to the console');

if (process.env.NODE_ENV === 'test') {
  setTimeout(() => process.exit(1), 1000);
} else {
  process.exit(1);
}

For this, the NODE_ENV environment variable would need to be set to test in your Jest setup script or elsewhere.