Files
taimed/node_modules/karma-jsdom-launcher/test/test-helper/index.js
2025-07-24 17:21:45 +08:00

59 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
let { COPY_KARMA } = process.env;
let { tmpdir } = require("os");
let { writeFile } = require("./fs");
let { join } = require("path");
let { randomBytes } = require("crypto");
let { interceptStdout } = require("./intercept_stdout");
let { Server } = require("karma");
let { jsdomMajorVersion } = require("./jsdom-version");
afterEach((done) => {
setTimeout(done, jsdomMajorVersion >= 12 && jsdomMajorVersion <= 16 ? 2000 : 0);
});
function generateRandomFilePath () {
return join(
tmpdir(),
randomBytes(20).toString("hex") + ".js");
}
async function createKarmaTest (launcherOptions, testFunction) {
let tmpTestFile = generateRandomFilePath();
let config = {
files: [tmpTestFile],
frameworks: ["mocha"],
browsers: ["jsdom"],
singleRun: true,
jsdomLauncher: launcherOptions
};
await writeFile(tmpTestFile, `
it("dummy description", ${testFunction.toString()});
`);
await interceptStdout({ passthrough: COPY_KARMA === '1' }, function () {
return new Promise((resolve, reject) => {
new Server(config, function(exitCode) {
if (exitCode === 0) {
resolve();
} else {
reject(new Error("The Karma test errored. Run with COPY_KARMA=1 to see Karma's output."));
}
}).start();
});
});
}
module.exports = {
createKarmaTest,
jsdomMajorVersion
};