e2ed
Version:
E2E testing framework over Playwright
47 lines (46 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateRetriesStateAfterRetry = void 0;
const asserts_1 = require("../asserts");
const clone_1 = require("../clone");
const fs_1 = require("../fs");
const getConcurrencyForNextRetry_1 = require("./getConcurrencyForNextRetry");
const getNewFullTestRunsByStatuses_1 = require("./getNewFullTestRunsByStatuses");
const logRetryResult_1 = require("./logRetryResult");
/**
* Update retries states after running retry.
* @internal
*/
const updateRetriesStateAfterRetry = async (retriesState) => {
const { concurrency, successfulTestRunNamesHash, visitedTestRunEventsFileName } = retriesState;
const { failedNewFullTestRuns, newFullTestRuns, successfulNewFullTestRuns, unbrokenNewFullTestRuns, } = await (0, getNewFullTestRunsByStatuses_1.getNewFullTestRunsByStatuses)(retriesState);
const successfulTotalInPreviousRetries = Object.keys(successfulTestRunNamesHash).length;
for (const successfulNewFullTestRun of successfulNewFullTestRuns) {
const { name } = successfulNewFullTestRun;
(0, asserts_1.assertValueIsFalse)(name in successfulTestRunNamesHash, `a successful test "${name}" has a unique name`, { retriesState, successfulNewFullTestRun: (0, clone_1.cloneWithoutLogEvents)(successfulNewFullTestRun) });
successfulTestRunNamesHash[name] = true;
}
for (const { runId } of newFullTestRuns) {
visitedTestRunEventsFileName.push((0, fs_1.getTestRunEventFileName)(runId));
}
(0, logRetryResult_1.logRetryResult)({
failedLength: failedNewFullTestRuns.length,
newLength: newFullTestRuns.length,
retriesState,
successfulLength: successfulNewFullTestRuns.length,
successfulTotalInPreviousRetries,
unbrokenLength: unbrokenNewFullTestRuns.length,
});
const concurrencyForNextRetry = (0, getConcurrencyForNextRetry_1.getConcurrencyForNextRetry)({
currentConcurrency: concurrency,
noSuccessfulTestsInLastRetry: successfulNewFullTestRuns.length === 0,
testsCount: failedNewFullTestRuns.length,
});
const failedTestNamesInLastRetry = failedNewFullTestRuns.map(({ name }) => name);
const retriesStateUpdate = {
concurrency: concurrencyForNextRetry,
failedTestNamesInLastRetry,
};
Object.assign(retriesState, retriesStateUpdate);
};
exports.updateRetriesStateAfterRetry = updateRetriesStateAfterRetry;