UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

65 lines (64 loc) 2.54 kB
"use strict"; const Lazy = require("lazy.js"); const box_wrapper_1 = require("./box-wrapper"); function featureHeader(file, feature, logger, annotations = []) { if (!file) { throw new Error("[Banner].[featureHeader] file is not specified"); } if (!feature) { throw new Error("[Banner].[featureHeader] feature is not specified"); } if (!logger) { throw new Error("[Banner].[featureHeader] logger is not specified"); } let anno = Lazy(annotations).map((val) => { return "@" + val; }).join(", "); let featureTitle = `Feature: "${feature.title} ${anno}" (${file})`; logger.log(""); let lines = box_wrapper_1.BoxWrapper.wrap(featureTitle, 0, "="); for (let line of lines) { logger.log(lines[line]); } } exports.featureHeader = featureHeader; function scenarioHeader(feature, scenario, logger, annotations = []) { if (!feature) { throw new Error("[Banner].[scenarioHeader] feature is not specified"); } if (!scenario) { throw new Error("[Banner].[scenarioHeader] scenario is not specified"); } if (!logger) { throw new Error("[Banner].[scenarioHeader] logger is not specified"); } let scenarioIndex = Lazy(feature.scenarios).pluck("id").indexOf(scenario.id) + 1; let anno = Lazy(annotations).map((val) => { return "@" + val; }).join(", "); let nonPendingScenarios = Lazy(feature.scenarios).filter((scenario) => { return !(Lazy(scenario.annotations).contains("pending")); }).size(); let scenarioTitle = `Scenario (${scenarioIndex}/${nonPendingScenarios}): ${scenario.title} ${anno}`; logger.log(""); let lines = box_wrapper_1.BoxWrapper.wrap(scenarioTitle, 2, "-"); for (let line of lines) { logger.log(lines[line]); } } exports.scenarioHeader = scenarioHeader; function stepHeader(scenario, step, stepIndex, logger) { if (!scenario) { throw new Error("[Banner].[stepHeader] scenario is not specified"); } if (!step) { throw new Error("[Banner].[stepHeader] step is not specified"); } if (!stepIndex) { throw new Error("[Banner].[stepHeader] stepIndex is not specified"); } if (!logger) { throw new Error("[Banner].[stepHeader] logger is not specified"); } let title = `Step (${stepIndex}/${scenario.steps.length}): ${step}`; logger.log(""); let lines = box_wrapper_1.BoxWrapper.wrap(title, 4, "-"); for (let line of lines) { logger.log(lines[line]); } } exports.stepHeader = stepHeader;