yachr
Version:
Yet another cucumber html reporter
82 lines • 3.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReportAggregator = void 0;
const featureSuiteSummary_1 = require("./models/aggregator/featureSuiteSummary");
const featureSummary_1 = require("./models/aggregator/featureSummary");
const scenarioSuiteSummary_1 = require("./models/aggregator/scenarioSuiteSummary");
const scenarioSummary_1 = require("./models/aggregator/scenarioSummary");
const suiteSummary_1 = require("./models/aggregator/suiteSummary");
/**
* Aggregates up an array of CucumberResults.
* @example
* var results: ICucumberResult[] = // Read in Cucumber results json file(s)
* const reporter = new ReportAggregator();
* var suiteSummary = reporter.getSummaryForSuite(results);
*/
class ReportAggregator {
/**
* Highest level aggregation, takes an array of ICucumberResults and returns
* an `ISuiteSummary`
* @param suite Array of cucumber results. Standard output from a cucumber test being run.
*/
getSummaryForSuite(suite) {
// Used to aggregates total passing/failing features
const featureSuiteSummary = new featureSuiteSummary_1.FeatureSuiteSummary();
// Used to aggregate total passing/failing scenarios
const scenarioSuiteSummary = new scenarioSuiteSummary_1.ScenarioSuiteSummary();
suite.features.forEach(feature => {
// The feature summary is a count of all passing / failing scenarios
// for this given feature
const featureSummary = this.getSummaryForFeature(feature);
featureSummary.tags = feature.tags.map((tag => tag.name)).join(', ');
featureSuiteSummary.aggregateFeature(featureSummary);
scenarioSuiteSummary.aggregateFeature(featureSummary);
});
const suiteSummary = new suiteSummary_1.SuiteSummary();
suiteSummary.featureSummary = featureSuiteSummary;
suiteSummary.scenarioSummary = scenarioSuiteSummary;
return suiteSummary;
}
/**
* Aggregates a single feature. Aggregates all scenarios in the feature to generate a summary.
* @param feature The feature to aggregate
*/
getSummaryForFeature(feature) {
const summary = new featureSummary_1.FeatureSummary();
// We now start reporting at a higher level
// How many scenarios are passing, failing, etc.
feature.elements.forEach(scenario => {
const scenarioSummary = this.getSummaryForScenario(scenario);
// The summary scenario tells us how many steps are passing, failing, etc.
// We are interested in whether the whole scenario has passes, failed, etc. for this feature
summary.aggregateScenario(scenarioSummary);
});
// Add metadata
summary.featureName = feature.name;
summary.featureDescription = feature.description;
summary.featureKeyword = feature.keyword;
return summary;
}
/**
* Aggregates a single scenario. Aggregates the results of all steps in the Scenario to generate a summary.
* @param scenario The scenario to aggregate
*/
getSummaryForScenario(scenario) {
const summary = new scenarioSummary_1.ScenarioSummary();
summary.steps = scenario.steps.filter(step => !step.hidden);
// Aggregate steps
scenario.steps.forEach(s => {
if (s.result) {
summary.aggregateStep(s.result, s.hidden);
}
});
// Add metadata
summary.scenarioName = scenario.name;
summary.scenarioDescription = scenario.description || '';
summary.scenarioKeyword = scenario.keyword;
summary.tags = scenario.tags.map((tag => tag.name)).join(', ');
return summary;
}
}
exports.ReportAggregator = ReportAggregator;
//# sourceMappingURL=reportAggregator.js.map