cypress-load-balancer
Version:
A simple load balancer for Cypress tests.
33 lines (32 loc) • 1.73 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = addCypressLoadBalancerPlugin;
const node_fs_1 = __importDefault(require("node:fs"));
const utils_1 = __importDefault(require("./utils"));
function addCypressLoadBalancerPlugin(on, testingType) {
on("after:run", (results) => {
var _a;
if (results.status === "failed") {
console.error("cypress-load-balancer", "Cypress failed to execute, so load balancing is skipped");
}
else {
const cypressRunResult = results;
//Prep load balancing file if not existing and read it
utils_1.default.initializeLoadBalancingFiles();
const loadBalancingMap = JSON.parse(node_fs_1.default.readFileSync(utils_1.default.MAIN_LOAD_BALANCING_MAP_FILE_PATH).toString());
for (const run of cypressRunResult.runs) {
// @ts-expect-error THe Cypress config type for PublicConfig is wrong
testingType = (((_a = cypressRunResult.config) === null || _a === void 0 ? void 0 : _a.testingType) || testingType);
const fileName = run.spec.relative;
utils_1.default.createNewEntry(loadBalancingMap, testingType, fileName);
utils_1.default.updateFileStats(loadBalancingMap, testingType, fileName, run.stats.duration);
}
//Overwrite original load balancing file
utils_1.default.saveMapFile(loadBalancingMap);
utils_1.default.DEBUG("Updated load balancing map with new file averages");
}
});
}