Skip to content

SeanSobey/JasmineTSConsoleReporter

Repository files navigation

Jasmine Typescript Console Reporter

npm issues license

A Jasmine Console Reporter that remaps Typescript files. This will use source maps to remap the error stack file paths and line numbers to the source typescript files.

Preview

preview

Installation

npm i --save-dev jasmine-ts-console-reporter

Usage

Using jasmine command line tool

Just use --reporter=jasmine-ts-console-reporter argument when calling jasmine command line tool, for example, from your package.json file:

"scripts": {
	"test": "tsc ; jasmine --reporter=jasmine-ts-console-reporter"
},

IMPORTANT Don't forget to configure the TypeScript compiler to generate sourcemaps, for example adding "sourceMap": true in your tsconfig.json

Using a jasmine helper

Create a helper file for jasmine, eg specs/helpers.js

const TSConsoleReporter = require('jasmine-ts-console-reporter');

jasmine.getEnv().clearReporters(); // Clear default console reporter
jasmine.getEnv().addReporter(new TSConsoleReporter());

Load the helper file in Jasmine, eg on node jasmine.json:

{
	"helpers": [
		"specs/helpers.js",
	]
}

Custom sourceMapProvider

For more intricate usage scenarios, like using istanbul where the sourcemaps for instumented files are held in memory, you can locate the sourcemaps via a callback:

new TSConsoleReporter({
	sourceMapProvider: (fileName) => {
		const map = fetchMySourceMap(fileName);
		const sourcesRelativeTo = '< Relative path from source map file to source file. >';
		return map ? { map, sourcesRelativeTo } : null;	// Return null if no source map is found.
	}
});

The return object must be the same as source-map-resolve.

Extra stack filter ignore

You can provide additional ignore patterns for the stack trace (on top the built in exclusion of jasmine sources), this is useful for when you are using test frameworks that show up in the stack trace like typemoq.

// regexp
new TSConsoleReporter({
	stackFilterIgnore: /node_modules\\typemoq/
});
// or glob
new TSConsoleReporter({
	stackFilterIgnore: '**/node_modules/typemoq/**'
});

Custom title filter

You can provide additional filtering for the spec title, this is useful for when you want to limit or decorate the title output in some way.

new TSConsoleReporter({
	titleFilter: (title) => (title.length > 100) ? title.substr(0, 100 - 1) + '...' : title
});

Custom message filter

You can provide additional filtering for the error message, this is useful for when you want to limit or decorate the message output in some way.

new TSConsoleReporter({
	messageFilter: (message) => message.split('\n')[0]
});

About

A Jasmine Console Reporter that remaps Typescript files.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published