@wdio/local-runner
Version:
A WebdriverIO runner to run tests locally
63 lines (60 loc) • 1.52 kB
JavaScript
// src/run.ts
import exitHook from "async-exit-hook";
import Runner from "@wdio/runner";
import logger from "@wdio/logger";
// src/constants.ts
var SHUTDOWN_TIMEOUT = 5e3;
var BUFFER_OPTIONS = {
initialSize: 1e3 * 1024,
// start at 100 kilobytes.
incrementAmount: 100 * 1024
// grow by 10 kilobytes each time buffer overflows.
};
// src/run.ts
var log = logger("@wdio/local-runner");
if (typeof process.send === "function") {
process.send({
name: "ready",
origin: "worker"
});
}
var runner = new Runner();
runner.on("exit", process.exit.bind(process));
runner.on("error", ({ name, message, stack }) => process.send({
origin: "worker",
name: "error",
content: { name, message, stack }
}));
process.on("message", (m) => {
if (!m || !m.command || !runner[m.command] || typeof runner[m.command] !== "function") {
return;
}
log.info(`Run worker command: ${m.command}`);
runner[m.command](m).then(
(result) => process.send({
origin: "worker",
name: "finishedCommand",
content: {
command: m.command,
result
}
}),
(e) => {
log.error(`Failed launching test session: ${e.stack}`);
setTimeout(() => process.exit(1), 10);
}
);
});
var exitHookFn = (callback) => {
if (!callback) {
return;
}
runner.sigintWasCalled = true;
log.info(`Received SIGINT, giving process ${SHUTDOWN_TIMEOUT}ms to shutdown gracefully`);
setTimeout(callback, SHUTDOWN_TIMEOUT);
};
exitHook(exitHookFn);
export {
exitHookFn,
runner
};