UNPKG

e2ed

Version:

E2E testing framework over Playwright

70 lines (69 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.step = void 0; const testRunPromise_1 = require("./context/testRunPromise"); const fn_1 = require("./utils/fn"); const generalLog_1 = require("./utils/generalLog"); const log_1 = require("./utils/log"); const object_1 = require("./utils/object"); const step_1 = require("./utils/step"); /** * Declares a test step (could calls Playwright's `test.step` function inside). */ // eslint-disable-next-line max-statements const step = async (name, body, options = {}) => { if (body !== undefined) { (0, fn_1.setCustomInspectOnFunction)(body); } let logEvent; const errorProperties = { stepBody: body, stepName: name, stepOptions: { ...options, payload: { ...options.payload } }, }; let isTestRunCompleted = false; let payload = undefined; let stepError; try { const testRunPromise = (0, testRunPromise_1.getTestRunPromise)(); void testRunPromise.then(() => { isTestRunCompleted = true; }); if (options?.skipLogs !== true) { logEvent = (0, log_1.logAndGetLogEvent)(name, options?.payload, options?.type ?? 7 /* LogEventType.InternalCore */); } const { bodyError, hasError, payload: additionalPayload, } = await (0, step_1.runStepBody)({ body, errorProperties, logEvent, name, stepOptions: options, }); payload = additionalPayload; if (hasError) { throw bodyError; } } catch (error) { stepError = (0, step_1.processStepError)({ error, errorProperties, logEvent }); if (isTestRunCompleted) { await new Promise(() => { }); } throw stepError; } finally { if (logEvent !== undefined) { const endTime = Date.now(); (0, object_1.setReadonlyProperty)(logEvent, 'endTime', endTime); if (payload !== undefined) { (0, step_1.updateStepPayload)(logEvent, payload); } (0, generalLog_1.generalLog)(`Step "${name}" completed`, { body, step: { ...logEvent, children: logEvent.children?.map(({ message }) => message) }, stepError, }); } } }; exports.step = step;