UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

81 lines (80 loc) 3.33 kB
"use strict"; const Lazy = require("lazy.js"); const reporter_base_1 = require("./reporter-base"); const result_types_1 = require("../result-aggregator/result-types"); const step_statuses_1 = require("../result-aggregator/step-statuses"); class RunErrorsReporter extends reporter_base_1.ReporterBase { runCompleted(results, errors) { let failedFeatures = Lazy(results).where((feature) => { return feature.result === result_types_1.ResultTypes.Errored; }); if (failedFeatures.size() > 0) { this.header(); failedFeatures.each((feature) => { this.printFeature(feature); }); } if (errors && errors.length > 0) { this.errorHeader(); Lazy(errors).each((error) => { this.printError(error); }); } } ; header() { console.log(); console.log("Run Errors"); console.log("-----------------------"); console.log(); } errorHeader() { console.log(); console.log("Non-Step Errors"); console.log("-----------------------"); console.log(); } printFeature(featureResult) { let failedScenarios = Lazy(featureResult.getScenarios(result_types_1.ResultTypes.Errored)); let failedCount = failedScenarios.size(); let totalCount = featureResult.feature.scenarios.length; let percentage = (100 / totalCount) * failedCount; console.log(`Feature: "${featureResult.feature.title}"`); console.log(` : ${featureResult.feature.filename}`); console.log(` : ${failedCount} of ${totalCount} scenarios errored (${percentage.toFixed(2)}%)`); console.log(); failedScenarios.each((scenarioResult) => { this.printScenario(scenarioResult); }); } printError(error) { console.log(` : Message: ${error.message}`); console.log(` : Initiator: ${error.initiator}`); console.log(` : ${error.errorMessage}`); console.log(` : ${error.errorStack}`); console.log(); } printScenario(scenarioResult) { console.log(` Scenario: "${scenarioResult.scenario.title}"`); let stepIndex = 1; let duration = 0; let step = null; let stepResult; let failureFound = false; for (step of scenarioResult.scenario.steps) { stepResult = scenarioResult.findStepResult(step.id); if (stepResult.result === step_statuses_1.StepStatuses.Errored) { failureFound = true; break; } else { duration += stepResult.step.durationMiliseconds; stepIndex++; } } if (!failureFound) { console.log(" Step marked as Error, but no errored step was found within scenario. Error may have occurred outside of step execution."); console.log(); return; } console.log(` : Error during step ${stepIndex} of ${scenarioResult.scenario.steps.length}, ${Number(duration / 1000).toFixed(2)}s after scenario start.`); console.log(` : Step title "${step.text}"`); console.log(` : error "${stepResult.error}"`); console.log(); } } exports.RunErrorsReporter = RunErrorsReporter;