UNPKG

gauge-ts

Version:
82 lines (81 loc) 3.55 kB
"use strict"; 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;