Sample karma.config.js
'use strict';
var path = require('path');
var conf = require('./gulp/conf');
var _ = require('lodash');
var wiredep = require('wiredep');
var pathSrcHtml = [
path.join(conf.paths.src, '/**/*.html'),
path.join(conf.paths.src_test, '/**/*.html')
];
function listFiles() {
var wiredepOptions = _.extend({}, conf.wiredep, {
dependencies: true,
devDependencies: true
});
return wiredep(wiredepOptions).js
.concat([
path.join(conf.paths.src, '/app/**/*.module.js'),
path.join(conf.paths.src, '/app/**/*.js'),
path.join(conf.paths.src, '/**/*.spec.js'),
path.join(conf.paths.src, '/**/*.mock.js'),
path.join(conf.paths.src_test, '/app/**/*.module.js'),
path.join(conf.paths.src_test, '/app/**/*.js'),
path.join(conf.paths.src_test, '/**/*.spec.js'),
path.join(conf.paths.src_test, '/**/*.mock.js')
])
.concat(pathSrcHtml);
}
process.env.CHROME_BIN = require('puppeteer').executablePath();
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('karma-typescript'),
require('sonarqube-unit-test-reporter')
],
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine','karma-typescript'],
// list of files / patterns to load in the browser
files: [
{pattern: './src/helloComponent/helloComponent.spec.ts', watched: false},
{pattern:'./src/helloComponent/helloComponent.ts', watched: false}
],
// list of files to exclude
exclude: [
'node_modules',
],
include: [
'./src/helloComponent/helloComponent.spec.ts',
'./src/helloComponent/helloComponent.ts'
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
"./src/helloComponent/helloComponent.spec.ts" : ["karma-typescript", "coverage"],
"./src/helloComponent/helloComponent.ts" : ["karma-typescript"]
},
//typescript transpiler configuration
karmaTypescriptConfig: {
reports:
{
"lcovonly": {
"directory": "./.tmp/sonarQube/coverage/",
"filename": "lcov.info",
}
},
bundlerOptions: {
transforms: [
require("karma-typescript-es6-transform")()
]
},
transformPath: function(filepath) {
return filepath.replace(/\.(ts|tsx)$/, ".js");
},
exclude: ['node_modules'],
include: [
'./src/helloComponent/helloComponent.spec.ts',
'./src/helloComponent/helloComponent.ts'
],
compilerOptions: {
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": true,
"outDir": ".tmp",
"preserveConstEnums": true,
"removeComments": true,
"sourceMap": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"target": "es2015",
"allowSyntheticDefaultImports": true,
},
},
//webpack: webpackConfig,
//Hide the webpack compilation noise
webpackMiddleware: {
noInfo: true
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'coverage', 'sonarqubeUnitTest'],
sonarQubeUnitTestReporter: {
sonarQubeVersion: 'LATEST',
outputFile: './.tmp/sonarQube/coverage/test-report.xml',
useBrowserName: false,
testPaths: ['./src/helloComponent'],
testFilePattern: '.spec.ts'
},
// optionally, configure the reporter
coverageReporter: {
type : 'lcov',
dir : './.tmp/sonarQube',
subdir : 'coverage',
check: {
global: {
statements: 75,
branches: 50,
functions: 100,
lines: 10
},
each: {
statements: 75,
branches: 50,
functions: 100,
lines: 10,
}
},
watermarks: {
statements: [ 50, 75 ],
functions: [ 50, 100 ],
branches: [ 25, 50 ],
lines: [ 10, 55 ]
}
},
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// start a new run immediately when a change is detected.
restartOnFileChange:true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_ERROR,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
//browsers: ['Chrome'],
browsers: ['ChromeHeadless'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
// leave Jasmine Spec Runner output visible in browser
client:{
clearContext: false
},
// Concurrency level
// how many browser should be started simultaneous
concurrency: 1
});
}
- NodeJS 8.0.0 https://nodejs.org/download/release/v8.0.0/
- npm install
- npm build