skutter
Version:
Skutter: Opinionated BDD Browser based test framework
65 lines (64 loc) • 2.54 kB
JavaScript
;
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;