'How to debug Jest Tests when using Yarn 2 / Yarn PnP
I'd like to use the node --debug-brk
feature described in a previous answer and the jest docs to debug in npm/yarn 1 based projects, but node_modules/
is not present in Yarn 2 / PnP (Plug n Play) based projects, so those instructions won't work for me.
The usual way to access a binary in yarn 2 of yarn run --inspect-brk jest --runInBand
launches a debugging session from the terminal, but when connecting to Chrome's Remote Target inspector via chrome://inspect
, we get an error message about being unable to connect to the jest.js binary, since it's a path to a .zip
file.
Uncaught Error: Cannot find module '/Users/MY_USERNAME/PATH_TO_MY_PROJECT/.yarn/cache/jest-npm-24.9.0-8ddb425e99-2.zip/node_modules/jest/bin/jest.js
What workarounds are available without downgrading to Yarn 1?
Solution 1:[1]
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Jest",
"skipFiles": ["<node_internals>/**"],
"cwd": "${workspaceFolder}",
"runtimeExecutable": "yarn",
"runtimeArgs": ["run", "--inspect-brk", "jest"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"port": 9229
}
]
}
Solution 2:[2]
Update: the workaround reported below is necessary for Node 12.15
and below. After 12.16.1
, you can use the following command directly:
yarn run --inspect-brk jest --runInBand
The fix which was added to node 12.16.1 is here.
Archived answer for older versions of Node, 12.15 and below
One option is to use yarn unplug
before using yarn run
yarn unplug jest
After that, the following works with Jest in Yarn 2 and Chrome's chrome://inspect
:
yarn run --inspect-brk jest --runInBand # any additional jest args
A downside of this approach is that you may need to undo the unplug
before checking in your branch, since it's described as a short term measure rather than a long term state to leave a dependency in.
Solution 3:[3]
You can also use the yarn bin
command to accomplish this. I was able to run our jest tests using node and some debugging flag helpers (in a Yarn pnp context) using this command:
yarn node --inspect-brk --expose-gc $(yarn bin jest) test --runInBand --silent --logHeapUsage
Credit - Found the solution posted in this jest issues thread.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Konstantin Tarkus |
Solution 2 | |
Solution 3 | Lauren |