-
Notifications
You must be signed in to change notification settings - Fork 17
Description
- What you're trying to do:
I am trying to create a Typescript project with Ava testing where I could debug the code while tests are running. My setup used to just work (as described here) when I was using commonjs modules, but after switching to esm I can not get it to work. I have spent hours and days looking for the right configuration and/or workaround for that.
This is my current setup (master branch on repo) after switching to esm modules.
- What happened
Adding breakpoints and running the app yarn start correctly stops at breakpoints, but when running yarn test it does not stop at breakpoints.
- What you expected to happen
I was expecting the execution to stop at breakpoints in app.ts and test.test.ts files
What Iv'e tried so far:
- Using
esm-module-aliasto create custom loader. This fixes the issue of alias paths in generated.jsfiles, and allows debugging in vscode both with"start": "rm -rf dist && NODE_ENV=development tsx watch ./src/app/index.ts",and"build_and_start_ema": "tsc && node --loader=./dist/app/alias.js ./dist/app/index.js",commands. It also allows running ava tests with"test": "NODE_OPTIONS='--import=tsx' ava --config unittest.js",,but does not allow debuging. (on master branch) - Using
tsconfig-pathsto fix aliased import paths in generated javascript - this does not even allow running the app after build phase. (on master branch) - Using
ts-patchto fix aliased import paths in generated javascript - this does not allow running tests at all. See repo branch. - Using '' this allows running the tests but not debugging them, and only after running command
"build_tsca": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",, which means I can not run tests continuously usingyarn test --watch. See repo branch.
Overall my best attempts were attempt 1 and 4, but attempt 1 is better because it allows running tests continuously.
How can I achieve being able to continously run and debug ava tests in vscode on a typescript project with ESM modules that uses aliased import paths, like it used to when I was using commonjs modules?