UNPKG

e2ed

Version:

E2E testing framework over Playwright

46 lines (45 loc) 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTestRunCallback = void 0; const runId_1 = require("../../context/runId"); const testRunPromise_1 = require("../../context/testRunPromise"); const error_1 = require("../error"); const events_1 = require("../events"); /** * Creates a callback for a test run from the target function. * If the function throw an error, the error is thrown into the test run * or at the call point. * When the test launch is completed, the target function is no longer called * (even if callback is called). * @internal */ exports.createTestRunCallback = ((options) => { const { targetFunction, throwExceptionAtCallPoint } = options; const runId = (0, runId_1.getRunId)(); const testRunEvent = (0, events_1.getTestRunEvent)(runId); const testRunPromise = (0, testRunPromise_1.getTestRunPromise)(); let isTestRunCompleted = false; void testRunPromise.then(() => { isTestRunCompleted = true; }); // eslint-disable-next-line no-restricted-syntax return async function testRunCallback(...args) { if (isTestRunCompleted) { return undefined; } try { const result = await Promise.race([targetFunction.call(this, ...args), testRunPromise]); return result; } catch (cause) { const error = new error_1.E2edError(`Callback "${targetFunction.name}" was rejected because his target function threw an error`, { cause }); if (throwExceptionAtCallPoint) { throw error; } else { testRunEvent.reject(error); } } return undefined; }; });