e2ed
Version:
E2E testing framework over Playwright
70 lines (69 loc) • 2.39 kB
JavaScript
;
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;