e2ed
Version:
E2E testing framework over Playwright
58 lines (57 loc) • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.readEventsFromFiles = void 0;
const node_child_process_1 = require("node:child_process");
const promises_1 = require("node:fs/promises");
const node_path_1 = require("node:path");
const internal_1 = require("../../constants/internal");
const asserts_1 = require("../asserts");
const generalLog_1 = require("../generalLog");
const getDurationWithUnits_1 = require("../getDurationWithUnits");
const readEventFromFile_1 = require("./readEventFromFile");
/**
* Reads events objects from temporary directory, with skipping specified events.
* @internal
*/
const readEventsFromFiles = async (skippedEventFiles) => {
const startTimeInMs = Date.now();
const allEventFiles = await (0, promises_1.readdir)(internal_1.EVENTS_DIRECTORY_PATH);
for (const skippedEventFile of skippedEventFiles) {
(0, asserts_1.assertValueIsTrue)(allEventFiles.includes(skippedEventFile), `skipped event file ${skippedEventFile} is present in the event directory`, { allEventFiles, skippedEventFiles });
}
const newEventFiles = allEventFiles.filter((fileName) => !skippedEventFiles.includes(fileName));
const fullTestRuns = [];
for (let fileIndex = 0; fileIndex < newEventFiles.length; fileIndex += internal_1.AMOUNT_OF_PARALLEL_OPEN_FILES) {
const readPromises = [];
for (let index = fileIndex; index < newEventFiles.length && index < fileIndex + internal_1.AMOUNT_OF_PARALLEL_OPEN_FILES; index += 1) {
const fileName = newEventFiles[index];
(0, asserts_1.assertValueIsDefined)(fileName, 'fileName is defined', {
fileIndex,
index,
newEventFilesLength: newEventFiles.length,
});
const promise = (0, readEventFromFile_1.readEventFromFile)(fileName).then((maybeText) => maybeText === undefined ? undefined : { fileName, text: maybeText });
readPromises.push(promise);
}
const filesWithNames = (await Promise.all(readPromises)).filter((value) => value !== undefined);
for (const { fileName, text } of filesWithNames) {
try {
const fullTestRun = JSON.parse(text);
fullTestRuns.push(fullTestRun);
}
catch (error) {
(0, generalLog_1.generalLog)('Caught an error on parsing JSON of test run', {
error,
fileName,
textLenght: text.length,
});
const filePath = (0, node_path_1.join)(internal_1.EVENTS_DIRECTORY_PATH, fileName);
(0, node_child_process_1.execFile)('cp', [filePath, internal_1.INTERNAL_REPORTS_DIRECTORY_PATH]);
}
}
}
const durationWithUnits = (0, getDurationWithUnits_1.getDurationWithUnits)(Date.now() - startTimeInMs);
(0, generalLog_1.generalLog)(`Read ${fullTestRuns.length} test runs from "${internal_1.EVENTS_DIRECTORY_PATH}" in ${durationWithUnits}`);
return fullTestRuns;
};
exports.readEventsFromFiles = readEventsFromFiles;