cypress-load-balancer
Version:
A simple load balancer for Cypress tests.
26 lines (25 loc) • 1.29 kB
JavaScript
import fs from "node:fs";
import utils from "./utils";
export default function addCypressLoadBalancerPlugin(on, testingType) {
on("after:run", (results) => {
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.initializeLoadBalancingFiles();
const loadBalancingMap = JSON.parse(fs.readFileSync(utils.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 = (cypressRunResult.config?.testingType || testingType);
const fileName = run.spec.relative;
utils.createNewEntry(loadBalancingMap, testingType, fileName);
utils.updateFileStats(loadBalancingMap, testingType, fileName, run.stats.duration);
}
//Overwrite original load balancing file
utils.saveMapFile(loadBalancingMap);
utils.DEBUG("Updated load balancing map with new file averages");
}
});
}