var common = require('./webpack.common.js') module.exports = function (config) { 'use strict' config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['mocha', 'chai'], // list of files to exclude exclude: [], files: [ { pattern: 'test/Util/*.ts', included: false }, { pattern: 'test/**/*.ts', included: true }, { // exclude Sibelius files, Karma somehow fails to parse them (e.g. test_clef_measure_end_backup_nodes_Sibelius), // leading to test failure, no tests being executed pattern: 'test/data/*Sibelius*', included: false, watched: false, served: true }, { pattern: 'test/data/*.xml', included: true }, { pattern: 'test/data/*.musicxml', included: true }, { pattern: 'test/data/*.mxl.base64', included: true }, { pattern: 'test/data/*.mxl', included: false, watched: false, served: true } ], // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { 'test/data/*.xml': ['xml2js'], 'test/data/*.musicxml': ['xml2js'], 'test/data/*.mxl.base64': ['base64-to-js'], // add webpack as preprocessor 'test/**/*.ts': ['webpack'] }, webpack: { // karma watches the test entry points // (you don't need to specify the entry option) // webpack watches dependencies // copy parts of webpack configuration to use minimal effort here devtool: process.env.CI ? false : 'inline-source-map', mode: process.env.CI ? 'production' : 'development', module: { rules: common.module.rules }, resolve: common.resolve }, // Required for Firefox and Chrome to work // see https://github.com/webpack-contrib/karma-webpack/issues/188 mime: { 'text/x-typescript': ['ts'] }, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['mocha'], // web server port port: 9876, // timeout in ms: browserNoActivityTimeout: 100000, // default 10000 browserDisconnectTimeout: 10000, // default 2000 browserDisconnectTolerance: 1, // default 0 captureTimeout: 60000, // 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, client: { captureConsole: true, mocha: { timeout: process.env.timeout || 20000 } }, // enable / disable watching file and executing tests whenever any file changes autoWatch: false, // start these browsers browsers: ['FirefoxHeadless'], // For security reasons, Google Chrome is unable to provide sandboxing // when it is running in container-based environments (e.g. CI). customLaunchers: { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox', '--disable-web-security'] }, ChromeNoSecurity: { base: 'Chrome', flags: ['--disable-web-security'] } }, // 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 }) }