gauge-ts
Version:
Typescript runner for Gauge
82 lines (81 loc) • 3.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HookExecutionProcessor = void 0;
const spec_pb_1 = require("../gen/spec_pb");
const ExecutionContext_1 = require("../public/context/ExecutionContext");
const Scenario_1 = require("../public/context/Scenario");
const Specification_1 = require("../public/context/Specification");
const StepInfo_1 = require("../public/context/StepInfo");
const Screenshot_1 = require("../screenshot/Screenshot");
const MessageStore_1 = require("../stores/MessageStore");
const ScreenshotStore_1 = require("../stores/ScreenshotStore");
const ExecutionProcessor_1 = require("./ExecutionProcessor");
class HookExecutionProcessor extends ExecutionProcessor_1.ExecutionProcessor {
async process(req) {
const res = await this.executeHooks(req);
return this.createExecutionResponse(res);
}
async executeHooks(req) {
const start = Date.now();
const context = this.getExecutionContext(this.getExecutionInfo(req));
const hooks = this.getApplicableHooks(req);
const result = new spec_pb_1.ProtoExecutionResult();
result.setFailed(false);
try {
for (const hook of hooks) {
await this.executeMethod(hook.getInstance(), hook.getMethod(), [context]);
}
}
catch (error) {
const err = error;
result.setFailed(true);
result.setRecoverableerror(false);
result.setErrormessage(err.message);
result.setStacktrace(err.stack ?? "");
if (process.env.screenshot_on_failure !== "false") {
const s = await Screenshot_1.Screenshot.capture();
result.setFailurescreenshotfile(s);
}
}
result.setExecutiontime(Date.now() - start);
result.setMessageList(MessageStore_1.MessageStore.pendingMessages());
result.setScreenshotfilesList(ScreenshotStore_1.ScreenshotStore.pendingScreenshots());
return result;
}
getExecutionContext(info) {
if (!info) {
return new ExecutionContext_1.ExecutionContext(null, null, null, null);
}
const specInfo = info.getCurrentspec();
const scenarioInfo = info.getCurrentscenario();
const stepInfo = info.getCurrentstep();
const trace = info.getStacktrace();
return new ExecutionContext_1.ExecutionContext(this.toSpec(specInfo), this.toScenario(scenarioInfo), this.toStepInfo(stepInfo), trace);
}
toSpec(specInfo) {
if (!specInfo) {
return null;
}
const info = specInfo;
return new Specification_1.Specification(info.getName(), info.getFilename(), info.getIsfailed(), info.getTagsList());
}
toScenario(scenInfo) {
if (!scenInfo) {
return null;
}
const info = scenInfo;
return new Scenario_1.Scenario(info.getName(), info.getIsfailed(), info.getTagsList());
}
toStepInfo(stepInfo) {
if (!stepInfo) {
return null;
}
const info = stepInfo;
if (info.getStep()) {
const step = info.getStep();
return new StepInfo_1.StepInfo(step.getParsedsteptext(), step.getActualsteptext(), stepInfo.getIsfailed(), stepInfo.getErrormessage(), stepInfo.getStacktrace());
}
return new StepInfo_1.StepInfo(null, null, info.getIsfailed(), stepInfo.getErrormessage(), stepInfo.getStacktrace());
}
}
exports.HookExecutionProcessor = HookExecutionProcessor;