skutter
Version:
Skutter: Opinionated BDD Browser based test framework
76 lines (75 loc) • 3.82 kB
JavaScript
;
const chalk = require("chalk");
const reporter_base_1 = require("./reporter-base");
const result_types_1 = require("../result-aggregator/result-types");
class MultiProcessOverviewReporter extends reporter_base_1.ReporterBase {
constructor(featureInfoProvider) {
super();
this.scenarioPadding = " ";
this.featureInfoProvider = featureInfoProvider;
}
selfUnregister(context) {
return context.executorsCount <= 1;
}
onFeatureSkipped(threadId, featureId) {
let feature = this.featureInfoProvider.getFeature(featureId);
console.log(`${chalk.gray(threadId.toString())} Skipping: "${chalk.yellow(feature.title)}".`);
}
onScenarioSkipped(threadId, featureId, scenarioId) {
let scenario = this.featureInfoProvider.getScenario(featureId, scenarioId);
console.log(`${this.scenarioPadding}${chalk.gray(threadId.toString())} ${chalk.bgBlack("Skipping")} "${scenario.title}".`);
}
onFeatureStart(threadId, featureId) {
let feature = this.featureInfoProvider.getFeature(featureId);
console.log(`${chalk.gray(threadId.toString())} Starting: "${chalk.yellow(feature.title)}".`);
}
;
onScenarioStart(threadId, featureId, scenarioId) {
let scenario = this.featureInfoProvider.getScenario(featureId, scenarioId);
console.log(`${this.scenarioPadding}${chalk.gray(threadId.toString())} Starting: "${scenario.title}".`);
}
onScreenshotStep(threadId, featureId, scenarioId, stepId, screenshotFilename) {
let scenario = this.featureInfoProvider.getScenario(featureId, scenarioId);
console.log(`${this.scenarioPadding}${chalk.gray(threadId.toString())} ${chalk.bgBlack("Screenshotting")} "${scenario.title}".`);
}
;
onAfterScenario(threadId, featureId, scenarioId, duration, result, scenarioTeardownLog) {
let scenario = this.featureInfoProvider.getScenario(featureId, scenarioId);
let resultString = "";
switch (result) {
case result_types_1.ResultTypes.Passed:
resultString = "Passed";
break;
case result_types_1.ResultTypes.Errored:
resultString = "Errored";
break;
case result_types_1.ResultTypes.Failed:
resultString = "Failed";
break;
}
let scenarioResult = result === result_types_1.ResultTypes.Passed ? chalk.green("Passed") : chalk.red(resultString);
let scenarioDurationSeconds = scenario.durationMiliseconds / 1000;
console.log(`${this.scenarioPadding}${chalk.gray(threadId.toString())} ${scenarioResult} "${scenario.title}", Duration: ${chalk.bgCyan(scenarioDurationSeconds.toFixed(2).toString())}s.`);
}
;
onAfterFeature(threadId, featureId, duration, result, featureTeardownLog) {
let feature = this.featureInfoProvider.getFeature(featureId);
let resultString = "";
switch (result) {
case result_types_1.ResultTypes.Passed:
resultString = "Passed";
break;
case result_types_1.ResultTypes.Errored:
resultString = "Errored";
break;
case result_types_1.ResultTypes.Failed:
resultString = "Failed";
break;
}
let featureResult = result === result_types_1.ResultTypes.Passed ? chalk.green("Passed") : chalk.red(resultString);
let featureDurationSeconds = feature.durationMiliseconds / 1000;
console.log(`${chalk.gray(threadId.toString())} ${featureResult} "${chalk.yellow(feature.title)}", Duration: ${chalk.bgCyan(featureDurationSeconds.toFixed(2).toString())}s.`);
}
;
}
exports.MultiProcessOverviewReporter = MultiProcessOverviewReporter;