Search code examples
node.jsjestjsnode-debuggerbabel-jest

How do I use node debug cli with Jest?


How can I just use the simple node cli/repl debugger with Jest?

The Jest documentation uses node-inspector, but it is outdated/deprecated as of Node 6.3. I tried the recommended command anyway on Node 7.7.4:

node --debug-brk ./node_modules/.bin/jest --runInBand --no-cache [your_test_file]

But this simply hangs on the following (assumedly waiting on node-inspector):

(node:13452) DeprecationWarning: node --debug is deprecated. Please use node --inspect instead. Debugger listening on 127.0.0.1:5858

I added --inspect as specified by the warning, but even then execution doesn't stop on my debugger statement in Chrome DevTools.

This seems overly complicated for a very simple use case.


Solution

  • From node v8.4 the debugger keyword within the code is fixed for VM context. Refer this git comment.

    1.Type debugger keyword in your Jest code:

    describe('Testcase definition', () => {
       it('should be defined with subobjects', () => {
         debugger; // <-- This keyword breaks on Chrome inspect
         expect(true).toBe(true);
       });
    });
    
    1. Command to Run:

      node --inspect-brk --inspect ./node_modules/.bin/jest -i tests/mytest.test.js

    2. Now open chrome://inspect/#devices on Chrome. Voila!