How to run Jasmine tests in watch mode for TypeScript

The easiest way I found is

installing dependencies: npm install --save-dev jasmine-ts nodemon

initializing jasmine: node_modules/.bin/jasmine-ts init

In the package.json:

"scripts": {
    "test": "nodemon --ext ts --exec 'jasmine-ts \"src/**/*.spec.ts\"'"
}

Edit: the above solution doesn't work as of the 11th of Apr, 2019. I published a modified working example at https://github.com/erosb/ts-node-jasmine-example


This may be done with two commands launched in separate terminals. Assuming packages are installed in global mode.

First command launches TypeScript compiler in watch mode:

tsc --watch

The second starts nodemon that watches .js files and restarts on changes. Each time it executes jasmine test runner:

nodemon --ext js --exec 'jasmine JASMINE_CONFIG_PATH=jasmine.json'

This solution is fast enough though it also has a drawback of running in two terminals. So it is not ideal but the best I've found so far.

As a result scripts section in package.json looks like:

"scripts": {
  /* ... */
  "watch": "tsc --watch",
  "test": "nodemon --ext js --exec 'jasmine JASMINE_CONFIG_PATH=jasmine.json'",
  "devstart": "nodemon ./bin/www"
},

devstart also works in couple with watch restarting server each time .ts files are changed (after they are compiled to .js).