slowSuites
uses node:fs
A codebase whose package has n suites, each noting in SLOT_LOG when it starts and ends (<ms> + <name>, <ms> - <name>) and taking ms between.
import { okIn, tempDir } from "#codebase/tcmts/cli/test/e2e/harness"; import fs from "node:fs"; import path from "node:path"; export const slowSuites = (name: string, n: number, ms: number) => { const dir = tempDir(`suite slots ${name}`); okIn(dir, "init"); fs.writeFileSync( path.join(dir, "scratch.ts"), `// tcm: namespace greeter export const main = () => console.log("hello"); export const manifest = { name: "greeter", bin: { greet: "main" }, suites: { greet: ["e2e"] } }; `, ); okIn(dir, "add"); const suite = (i: number) => `export const test${i} = () => { fs.appendFileSync(process.env.SLOT_LOG!, \`\${Date.now()} + ${name}\\n\`); Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ${ms}); fs.appendFileSync(process.env.SLOT_LOG!, \`\${Date.now()} - ${name}\\n\`); };`; fs.writeFileSync( path.join(dir, "scratch.ts"), `// tcm: namespace greeter.e2e\nimport fs from "node:fs";\n${Array.from({ length: n }, (_, i) => suite(i + 1)).join("\n")}\n`, ); okIn(dir, "add"); return dir; }