Skip to content

Instantly share code, notes, and snippets.

@soupman99
Created March 3, 2016 16:35
Show Gist options
  • Save soupman99/1cd68b3b5e92910884e7 to your computer and use it in GitHub Desktop.
Save soupman99/1cd68b3b5e92910884e7 to your computer and use it in GitHub Desktop.
'use strict';
/**
* Module dependencies.
*/
var _ = require('lodash'),
defaultAssets = require('./config/assets/default'),
testAssets =
{
tests: {
client: ['modules/*/tests/client/**/*.js',{pattern: 'modules/*/tests/client/**/*.json'}],
server: ['modules/*/tests/server/**/*.js'],
e2e: ['modules/*/tests/e2e/**/*.js']
}
}
testConfig = require('./config/env/test'),
karmaReporters = ['progress'];
if (testConfig.coverage) {
karmaReporters.push('coverage');
}
// Karma configuration
module.exports = function (karmaConfig) {
karmaConfig.set({
// Frameworks to use
frameworks: ['jasmine'],
// List of files / patterns to load in the browser
files: _.union(defaultAssets.client.lib.js, defaultAssets.client.lib.tests, defaultAssets.client.js, testAssets.tests.client, defaultAssets.client.views),
preprocessors: {
'modules/*/client/views/**/*.html': ['ng-html2js'],
'modules/core/client/app/config.js': ['coverage'],
'modules/core/client/app/init.js': ['coverage'],
'modules/*/client/*.js': ['coverage'],
'modules/*/client/config/*.js': ['coverage'],
'modules/*/client/controllers/*.js': ['coverage'],
'modules/*/client/directives/*.js': ['coverage'],
'modules/*/client/services/*.js': ['coverage'],
'modules/*/tests/**/*.json': ['json_fixtures']
},
jsonFixturesPreprocessor: {
// strip this from the file path \ fixture name
stripPrefix: 'test/fixtures',
// strip this to the file path \ fixture name
prependPrefix: 'mock/',
// change the global fixtures variable name
variableName: '__mocks__',
// camelize fixture filenames (e.g 'fixtures/aa-bb_cc.json' becames __fixtures__['fixtures/aaBbCc'])
camelizeFilenames: true,
// transform the filename
transformPath: function(path) {
return path + '.js';
}
},
ngHtml2JsPreprocessor: {
moduleName: 'mean',
//cacheIdFromPath: function (filepath) {
// return filepath;
//},
},
//plugins: [
// 'karma-fixture',
// 'karma-html2js-preprocessor',
// 'karma-json-fixtures-preprocessor'
//],
// Test results reporter to use
// Possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
reporters: karmaReporters,
// Configure the coverage reporter
coverageReporter: {
dir: 'coverage/client',
reporters: [
// Reporters not supporting the `file` property
{type: 'html', subdir: 'report-html'},
{type: 'lcov', subdir: 'report-lcov'},
// Output coverage to console
{type: 'text'}
],
instrumenterOptions: {
istanbul: {noCompact: true}
}
},
// Web server port
port: 9876,
// Enable / disable colors in the output (reporters and logs)
colors: true,
// Level of logging
// Possible values: karmaConfig.LOG_DISABLE || karmaConfig.LOG_ERROR || karmaConfig.LOG_WARN || karmaConfig.LOG_INFO || karmaConfig.LOG_DEBUG
logLevel: karmaConfig.LOG_INFO,
// Enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers: ['PhantomJS'],
// If browser does not capture in given timeout [ms], kill it
captureTimeout: 60000,
// Continuous Integration mode
// If true, it capture browsers, run tests and exit
singleRun: true
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment