riot-web/karma.conf.js

140 lines
4.8 KiB
JavaScript
Raw Normal View History

// karma.conf.js - the config file for karma, which runs our tests.
var path = require('path');
2016-03-28 18:36:22 +02:00
/*
* We use webpack to build our tests. It's a pain to have to wait for webpack
* to build everything; however it's the easiest way to load our dependencies
* from node_modules.
2016-03-28 18:47:06 +02:00
*
* If you run karma in multi-run mode (with `npm run test-multi`), it will watch
* the tests for changes, and webpack will rebuild using a cache. This is much quicker
* than a clean rebuild.
*
2016-03-28 18:47:06 +02:00
* TODO:
2016-03-29 00:35:36 +02:00
* - can we run one test at a time?
2016-03-28 18:36:22 +02:00
*/
process.env.PHANTOMJS_BIN = 'node_modules/.bin/phantomjs';
module.exports = function (config) {
config.set({
2016-03-28 18:36:22 +02:00
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha'],
2016-03-28 18:36:22 +02:00
// list of files / patterns to load in the browser
files: [
2016-03-28 23:59:34 +02:00
'test/tests.js',
// XXX this will break on npm 3
'node_modules/react-gemini-scrollbar/node_modules/gemini-scrollbar/gemini-scrollbar.css',
2016-03-28 23:59:34 +02:00
],
// list of files to exclude
//
// This doesn't work. It turns out that it's webpack which does the
// watching of the /test directory (possibly karma only watches
// tests.js itself). Webpack watches the directory so that it can spot
// new tests, which is fair enough; unfortunately it triggers a rebuild
// every time a lockfile is created in that directory, and there
// doesn't seem to be any way to tell webpack to ignore particular
// files in a watched directory.
//
// exclude: [
// '**/.#*'
// ],
2016-03-28 18:36:22 +02:00
// preprocess matching files before serving them to the browser
// available preprocessors:
// https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
2016-03-28 18:36:22 +02:00
'test/tests.js': ['webpack', 'sourcemap']
},
2016-03-28 18:36:22 +02:00
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
2016-03-29 00:35:36 +02:00
reporters: ['progress', 'junit'],
2016-03-28 18:36:22 +02:00
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR ||
// config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// 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',
//'PhantomJS',
],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity,
2016-03-29 00:35:36 +02:00
junitReporter: {
outputDir: 'karma-reports',
},
webpack: {
module: {
loaders: [
{ test: /\.json$/, loader: "json" },
2016-03-28 23:59:34 +02:00
{
test: /\.js$/, loader: "babel",
include: [path.resolve('./src'),
path.resolve('./test'),
],
query: {
2016-03-31 17:38:56 +02:00
// we're using react 5, for consistency with
// the release build, which doesn't use the
// presets.
// presets: ['react', 'es2015'],
2016-03-28 23:59:34 +02:00
},
2016-03-28 18:36:22 +02:00
},
],
noParse: [
// don't parse the languages within highlight.js. They
// cause stack overflows
// (https://github.com/webpack/webpack/issues/1721), and
// there is no need for webpack to parse them - they can
// just be included as-is.
/highlight\.js\/lib\/languages/,
// also disable parsing for sinon, because it
// tries to do voodoo with 'require' which upsets
// webpack (https://github.com/webpack/webpack/issues/304)
/sinon\/pkg\/sinon\.js$/,
],
},
resolve: {
alias: {
'matrix-react-sdk': path.resolve('src/index.js'),
2016-03-28 23:59:34 +02:00
'sinon': 'sinon/pkg/sinon.js',
},
root: [
path.resolve('./src'),
path.resolve('./test'),
],
},
2016-03-28 19:19:37 +02:00
devtool: 'inline-source-map',
},
});
};