power-assert instrumentor for TypeScript
TypeScript JavaScript
Clone or download
Latest commit d476175 Jun 25, 2018



power-assert instrumentor for TypeScript

npm version Node.js Version Support build status Dependency Status License

TypeScript versions

espower-typescript v9.x is compatible with TypeScript v2.4+

Usage (zero-config mode)

NOTE: If you use older version than v9, see older document.


$ npm install -D espower-typescript power-assert mocha typescript @types/node @types/mocha

Create a test file (intensionally failed)

// test/test.ts
import assert = require('assert');

describe('Array#join', () => {
  it('joins all elements into a string with separator', () => {
    assert(['a', 'b', 'c'].join(':') === 'a:b:c:');

Run test

$ ./node_modules/.bin/mocha --require espower-typescript/guess "test/**/*.ts"


  1) Array#join
       joins all elements into a string with separator:

      AssertionError [ERR_ASSERTION]:   # test.ts:6

  assert(['a','b','c'].join(':') === 'a:b:c:')
         |             |         |
         ["a","b","c"] "a:b:c"   false

CAUTION: don't use import 'assert' from 'assert'

Just use old style import 'assert' = require('assert') for assert module. This is limitation.


If your tests are not in test directory

You can set test directory in your package.json

    "name": "your-module",
    "description": "Your module",
    "version": "0.0.1",
    "directories": {
        "test": "spec/"

Then, run mocha with --require espower-typescript/guess

$ ./node_modules/.bin/mocha --require espower-typescript/guess "spec/**/*.ts"

Note: 'espower-typescript/guess' is inspired by intelli-espower-loader

ts-node and tsconfig.json

espower-typescript uses ts-node internally. It loads your tsconfig.json automatically.

Disable type check (transpile only)

Use TS_NODE_TRANSPILE_ONLY env of ts-node

$ TS_NODE_TRANSPILE_ONLY=1 ./node_modules/.bin/mocha --require espower-typescript/guess "test/**/*.ts"


.tsx files are supported.


If allowJs: true in your tsconfig.json, assertions in test/**/*.(js|jsx) are empowered.