UNPKG

yachr

Version:

Yet another cucumber html reporter

82 lines 3.85 kB
"use strict"; 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