e2ed
Version:
E2E testing framework over Playwright
63 lines (62 loc) • 2.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.waitBeforeRetry = void 0;
const config_1 = require("../config");
const fs_1 = require("../fs");
const generalLog_1 = require("../generalLog");
const promise_1 = require("../promise");
const getPreviousRunId_1 = require("./getPreviousRunId");
const test_1 = require("@playwright/test");
const additionToTimeout = 10_000;
/**
* Waits before running test for some time from pack config (for retries).
* @internal
*/
const waitBeforeRetry = async (runId, testStaticOptions) => {
const { previousRunId, retryIndex } = (0, getPreviousRunId_1.getPreviousRunId)(runId);
if (previousRunId === undefined) {
return;
}
const fileName = (0, fs_1.getTestRunEventFileName)(previousRunId);
const fileText = await (0, fs_1.readEventFromFile)(fileName);
if (fileText === undefined) {
(0, generalLog_1.generalLog)('Cannot find JSON file of previous test run', {
previousRunId,
runId,
testStaticOptions,
});
return;
}
try {
const fullTestRun = JSON.parse(fileText);
const { runError, status } = fullTestRun;
const { testIdleTimeout, waitBeforeRetry: waitBeforeRetryFromConfig } = (0, config_1.getFullPackConfig)();
const previousError = runError === undefined ? undefined : String(runError);
const timeoutInMs = await waitBeforeRetryFromConfig({
previousError,
retryIndex,
status,
testStaticOptions,
});
if (timeoutInMs === 0) {
return;
}
test_1.test.setTimeout(timeoutInMs + additionToTimeout);
const timeoutObject = setInterval(() => {
void (0, fs_1.writeLogEventTime)();
}, testIdleTimeout);
timeoutObject.unref();
await (0, promise_1.getTimeoutPromise)(timeoutInMs);
clearInterval(timeoutObject);
return timeoutInMs;
}
catch (error) {
(0, generalLog_1.generalLog)('Caught an error on getting timeout for "before retry" waiting', {
error,
runId,
testStaticOptions,
});
return undefined;
}
};
exports.waitBeforeRetry = waitBeforeRetry;