Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debug a single test in Jest

I have many jest tests, within many test suites, within many test files.

I need to isolate and debug a single test.

I'm debugging via node --inspect-brk ./node_modules/jest/bin/jest, so other solutions involving watch mode are too complicated.

How can I skip all tests except the one I need to debug?

like image 364
ChaseMoskal Avatar asked Feb 04 '23 00:02

ChaseMoskal


2 Answers

jest handles this in two steps

  1. isolate your test file by running jest with the testPathPattern (jest docs) command line argument

    node --inspect-brk ./node_modules/jest/bin/jest --testPathPattern="integration.test"
    

    here integration.test is supplied as a regular expression to filter for the correct test file

  2. isolate your test function
    there are two ways to do this

    • one way is to use the testNamePattern (jest docs) command line argument

      node --inspect-brk ./node_modules/jest/bin/jest --testNamePattern="host events"
      

      here host events is supplied as a regular expression to filter for the correct test suite name

    • alternatively, you can add .only to your test function:

      • so that test("object works", async() => {/*...*/})

      • becomes test.only("object works", async() => {/*...*/})

like image 58
ChaseMoskal Avatar answered Feb 06 '23 13:02

ChaseMoskal


I am using VSCode for debugging and in launch.json add to runTimeArgs a testPathPattern as your folder name:

{
"version": "0.2.0",
"configurations": [{
    "name": "Debug Jest Tests",
    "type": "node",
    "request": "launch",
    "runtimeArgs": [
        "--inspect-brk",
        "${workspaceRoot}/node_modules/jest/bin/jest.js",
        "--runInBand",
        "--testPathPattern=<NameOfTheFolder-you-want-to-test-without-this-angle-brackets>"
    ],
    "console": "integratedTerminal",
    "internalConsoleOptions": "neverOpen",
    "port": 9229
}]
}
like image 34
Binoy S Kumar Avatar answered Feb 06 '23 13:02

Binoy S Kumar