ya-driver
Version:
The driver support Ya GUI or Ya cli. docker image
94 lines (88 loc) • 2.35 kB
JavaScript
/**
* Karma config
*/
const {
merge
} = require('lodash');
// const {
// log
// } = require('../utils/log');
const {
modeMap
} = require('./vars');
const Project = require('../lib/project');
module.exports = function (options) {
options = merge({
mode: modeMap.PROD // Test下依然区分development/production,development模式下watch file变动
}, options);
const project = new Project(options.projectPath); // 放置project相关信息
const {
coveragePath,
application
} = project;
// webpack config
const webpackConfig = merge(require(`./webpack/${options.mode}`)({
...options,
test: true // 传递test状态标识
}), {
devtool: 'inline-source-map' // 保证内联source map
});
// Delete entry
delete webpackConfig.entry;
delete webpackConfig.optimization; // PROD下不走压缩
delete webpackConfig.output;
delete webpackConfig.externals;
let {
files
} = application.karma;
let preprocessors = {};
if (!files || !files.length) {
files = [{
pattern: 'src/test/**/*.spec.js'
}];
preprocessors = {
'src/test/**/*.spec.js': ['webpack', 'sourcemap']
};
} else {
files = files.map((file) => {
let item = file;
if (typeof item === 'string') {
item = {
pattern: file
};
}
preprocessors[item.pattern] = ['webpack', 'sourcemap'];
// preprocessors[item.pattern] = ['webpack'];
return item;
});
}
// preprocessors['**/*.vue'] = ['webpack', 'sourcemap', 'coverage'];
const karmaConfig = merge({
// browsers: ['ChromeHeadless'], // From project.js
// singleRun: true,
}, application.karma, {
autoWatch: options.mode === modeMap.DEV,
singleRun: options.mode === modeMap.PROD, // 只执行一次
frameworks: ['mocha', 'chai', 'sinon'],
basePath: options.projectPath,
files,
preprocessors,
webpack: webpackConfig,
reporters: ['spec', 'coverage'],
coverageReporter: {
instrumenterOptions: {
istanbul: {
noCompact: true
}
},
reporters: [{
type: 'html'
}, {
type: 'text'
}],
dir: coveragePath,
subdir: 'report'
}
});
return karmaConfig;
};