UNPKG

e2ed

Version:

E2E testing framework over Playwright

63 lines (62 loc) 2.27 kB
"use strict"; 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;