skutter
Version:
Skutter: Opinionated BDD Browser based test framework
328 lines (327 loc) • 14.4 kB
JavaScript
;
const Lazy = require("lazy.js");
const feature_skipped_message_1 = require("../messages/feature-skipped-message");
const scenario_skipped_message_1 = require("../messages/scenario-skipped-message");
const step_started_message_1 = require("../messages/step-started-message");
const step_skipped_message_1 = require("../messages/step-skipped-message");
const process_finished_message_1 = require("../messages/process-finished-message");
const feature_started_message_1 = require("../messages/feature-started-message");
const scenario_started_message_1 = require("../messages/scenario-started-message");
const step_finished_message_1 = require("../messages/step-finished-message");
const sub_step_started_message_1 = require("../messages/sub-step-started-message");
const sub_step_finished_message_1 = require("../messages/sub-step-finished-message");
const result_types_1 = require("../result-aggregator/result-types");
const step_screenshotted_message_1 = require("../messages/step-screenshotted-message");
const scenario_finished_message_1 = require("../messages/scenario-finished-message");
const feature_finished_message_1 = require("../messages/feature-finished-message");
function CannotBeUndefined(propertyName) {
throw Error(`ExecutionBroadcaster: Property ${propertyName} was not defined.`);
}
class ExecutionBroadcaster {
constructor() {
this.startedFeatures = [];
this.startedScenarios = [];
}
featureSkipped(featureId = CannotBeUndefined("featureId")) {
let promise = new Promise((resolve, reject) => {
let payload = new feature_skipped_message_1.FeatureSkippedMessage(featureId);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
scenarioSkipped(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId")) {
let promise = new Promise((resolve, reject) => {
let payload = new scenario_skipped_message_1.ScenarioSkippedMessage(featureId, scenarioId);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
featureStarted(featureId = CannotBeUndefined("featureId")) {
let promise = new Promise((resolve, reject) => {
if (!Lazy(this.startedFeatures).contains(featureId)) {
this.startedFeatures.push(featureId);
let payload = new feature_started_message_1.FeatureStartedMessage(featureId);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
}
else {
resolve();
}
});
return promise;
}
featureFinished(featureId = CannotBeUndefined("featureId"), tearDownLog) {
let promise = new Promise((resolve, reject) => {
let payload = new feature_finished_message_1.FeatureFinishedMessage(featureId, tearDownLog);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
scenarioStarted(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId")) {
let promise = new Promise((resolve, reject) => {
if (!Lazy(this.startedScenarios).contains(scenarioId)) {
this.startedScenarios.push(scenarioId);
let payload = new scenario_started_message_1.ScenarioStartedMessage(featureId, scenarioId);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
}
else {
resolve();
}
});
return promise;
}
scenarioFinished(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), tearDownLog) {
let promise = new Promise((resolve, reject) => {
let payload = new scenario_finished_message_1.ScenarioFinishedMessage(featureId, scenarioId, tearDownLog);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
stepStarted(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId")) {
let promise = new Promise((resolve, reject) => {
let payload = new step_started_message_1.StepStartedMessage(featureId, scenarioId, stepId);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
subStepStarted(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), ancestorStepId = CannotBeUndefined("ancestorStepId"), parentStepId = CannotBeUndefined("parentStepId"), stepId = CannotBeUndefined("stepId"), title = CannotBeUndefined("title"), depth = CannotBeUndefined("depth")) {
let promise = new Promise((resolve, reject) => {
let payload = new sub_step_started_message_1.SubStepStartedMessage(featureId, scenarioId, ancestorStepId, parentStepId, stepId, title, depth);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
subStepFail(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), stepLog, failureReason) {
let promise = new Promise((resolve, reject) => {
let payload = new sub_step_finished_message_1.SubStepFinishedMessage(featureId, scenarioId, stepId, result_types_1.ResultTypes.Failed, stepLog, failureReason);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
subStepError(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), stepLog, errorReason) {
let promise = new Promise((resolve, reject) => {
let payload = new sub_step_finished_message_1.SubStepFinishedMessage(featureId, scenarioId, stepId, result_types_1.ResultTypes.Errored, stepLog, errorReason);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
subStepPass(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), stepLog) {
let promise = new Promise((resolve, reject) => {
let payload = new sub_step_finished_message_1.SubStepFinishedMessage(featureId, scenarioId, stepId, result_types_1.ResultTypes.Passed, stepLog);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
stepFail(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), stepLog, failureReason) {
let promise = new Promise((resolve, reject) => {
let payload = new step_finished_message_1.StepFinishedMessage(featureId, scenarioId, stepId, result_types_1.ResultTypes.Failed, stepLog, failureReason);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
stepError(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), stepLog, error) {
let promise = new Promise((resolve, reject) => {
let payload = new step_finished_message_1.StepFinishedMessage(featureId, scenarioId, stepId, result_types_1.ResultTypes.Errored, stepLog, error);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
stepPass(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), stepLog) {
let promise = new Promise((resolve, reject) => {
let payload = new step_finished_message_1.StepFinishedMessage(featureId, scenarioId, stepId, result_types_1.ResultTypes.Passed, stepLog);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
stepSkipped(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), reason) {
let promise = new Promise((resolve, reject) => {
let payload = new step_skipped_message_1.StepSkippedMessage(featureId, scenarioId, stepId, reason);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
stepScreenshotted(featureId = CannotBeUndefined("featureId"), scenarioId = CannotBeUndefined("scenarioId"), stepId = CannotBeUndefined("stepId"), screenshotFilename) {
let promise = new Promise((resolve, reject) => {
let payload = new step_screenshotted_message_1.StepScreenshottedMessage(featureId, scenarioId, stepId, screenshotFilename);
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
executionFinished() {
let promise = new Promise((resolve, reject) => {
let payload = new process_finished_message_1.ProcessFinishedMessage();
let result = process.send(payload, (sendError) => {
if (sendError) {
console.log(`Message sending failed ${sendError}`);
reject(sendError);
return;
}
resolve();
});
if (result) {
resolve();
}
});
return promise;
}
}
exports.ExecutionBroadcaster = ExecutionBroadcaster;