stryker
Version:
The extendable JavaScript mutation testing framework
100 lines • 4.78 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var inquirer = require("inquirer");
var handbookUrl = 'https://github.com/stryker-mutator/stryker-handbook/blob/master/stryker/guides/vuejs.md#vuejs';
/**
* More information can be found in the Stryker handbook:
* https://github.com/stryker-mutator/stryker-handbook/blob/master/stryker/guides/vuejs.md#vuejs
*/
var VueJsPreset = /** @class */ (function () {
function VueJsPreset() {
this.name = 'vueJs';
this.generalDependencies = [
'stryker',
'stryker-vue-mutator',
'stryker-html-reporter'
];
this.jestDependency = 'stryker-jest-runner';
this.jestConf = "{\n mutate: ['src/**/*.js', 'src/**/*.ts', 'src/**/*.vue'],\n mutator: 'vue',\n testRunner: 'jest',\n jest: {\n // config: require('path/to/your/custom/jestConfig.js')\n },\n reporter: ['progress', 'clear-text', 'html'],\n coverageAnalysis: 'off'\n }";
this.karmaDependency = 'stryker-karma-runner';
this.karmaConf = "{\n mutate: ['src/**/*.js', 'src/**/*.ts', 'src/**/*.vue'],\n mutator: 'vue',\n testRunner: 'karma',\n karma: {\n configFile: 'test/unit/karma.conf.js',\n config: {\n browsers: ['ChromeHeadless']\n }\n },\n reporter: ['progress', 'clear-text', 'html'],\n coverageAnalysis: 'off'\n }";
}
VueJsPreset.prototype.createConfig = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var testRunnerChoices, testRunnerAnswers, scriptChoices, scriptAnswers, chosenTestRunner, chosenScript;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
testRunnerChoices = ['karma', 'jest'];
return [4 /*yield*/, inquirer.prompt({
choices: testRunnerChoices,
message: 'Which test runner do you want to use?',
name: 'testRunner',
type: 'list'
})];
case 1:
testRunnerAnswers = _a.sent();
scriptChoices = ['typescript', 'javascript'];
return [4 /*yield*/, inquirer.prompt({
choices: scriptChoices,
message: 'Which language does your project use?',
name: 'script',
type: 'list'
})];
case 2:
scriptAnswers = _a.sent();
chosenTestRunner = testRunnerAnswers.testRunner;
chosenScript = scriptAnswers.script;
return [2 /*return*/, {
config: this.getConfigString(chosenTestRunner),
dependencies: this.createDependencies(chosenTestRunner, chosenScript),
handbookUrl: handbookUrl
}];
}
});
});
};
VueJsPreset.prototype.getConfigString = function (testRunner) {
if (testRunner === 'karma') {
return this.karmaConf;
}
else if (testRunner === 'jest') {
return this.jestConf;
}
else {
throw new Error("Invalid test runner chosen: " + testRunner);
}
};
VueJsPreset.prototype.createDependencies = function (testRunner, script) {
var dependencies = this.generalDependencies;
dependencies.push(this.getTestRunnerDependency(testRunner));
dependencies.push(this.getScriptDependency(script));
return dependencies;
};
VueJsPreset.prototype.getScriptDependency = function (script) {
if (script === 'typescript') {
return 'stryker-typescript';
}
else if (script === 'javascript') {
return 'stryker-javascript-mutator';
}
else {
throw new Error("Invalid script chosen: " + script);
}
};
VueJsPreset.prototype.getTestRunnerDependency = function (testRunner) {
if (testRunner === 'karma') {
return this.karmaDependency;
}
else if (testRunner === 'jest') {
return this.jestDependency;
}
else {
throw new Error("Invalid test runner chosen: " + testRunner);
}
};
return VueJsPreset;
}());
exports.VueJsPreset = VueJsPreset;
//# sourceMappingURL=VueJsPreset.js.map
;