Skip to content

Commit 94f0d81

Browse files
Test Runner cleanup - for our internal tests (#446)
1 parent 4f87c76 commit 94f0d81

File tree

2 files changed

+82
-16
lines changed

2 files changed

+82
-16
lines changed

tests/index.html

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,45 @@
3030
<script src="../resources/benchmark-runner.mjs" type="module"></script>
3131
<script src="benchmark-runner-tests.mjs" type="module"></script>
3232
<script type="module">
33-
const runner = mocha.run();
34-
runner.on("end", function () {
35-
const event = new Event("complete");
36-
window.dispatchEvent(event);
37-
});
38-
window.mochaResults = runner;
33+
function startTest() {
34+
const runner = mocha.run();
35+
window.mochaResults = runner;
36+
37+
function createReport(node) {
38+
const tree = {
39+
tests: [],
40+
suites: [],
41+
id: node.id,
42+
title: node.title,
43+
root: node.root,
44+
};
45+
46+
for (const test of node.tests) {
47+
tree.tests.push({
48+
id: test.id,
49+
title: test.title,
50+
state: test.state,
51+
error: {
52+
name: test?.err?.name,
53+
message: test?.err?.message,
54+
},
55+
});
56+
}
57+
58+
for (const suite of node.suites) {
59+
tree.suites.push(createReport(suite));
60+
}
61+
62+
return tree;
63+
}
64+
65+
runner.on("end", function () {
66+
window.suite = createReport(runner.suite);
67+
const event = new Event("test-complete");
68+
window.dispatchEvent(event);
69+
});
70+
}
71+
window.addEventListener("start-test", startTest);
3972
</script>
4073
</body>
4174
</html>

tests/run.mjs

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#! /usr/bin/env node
22
/* eslint-disable-next-line no-unused-vars */
3-
import { argv } from "node:process";
43
import serve from "./server.mjs";
54
import { Builder, Capabilities } from "selenium-webdriver";
65
import commandLineArgs from "command-line-args";
@@ -71,22 +70,56 @@ const server = serve(PORT);
7170

7271
let driver;
7372

73+
function printTree(node) {
74+
console.log(node.title);
75+
76+
for (const test of node.tests) {
77+
console.group();
78+
if (test.state === "passed") {
79+
console.log("\x1b[32m✓", `\x1b[0m${test.title}`);
80+
} else {
81+
console.log("\x1b[31m✖", `\x1b[0m${test.title}`);
82+
console.group();
83+
console.log(`\x1b[31m${test.error.name}: ${test.error.message}`);
84+
console.groupEnd();
85+
}
86+
console.groupEnd();
87+
}
88+
89+
for (const suite of node.suites) {
90+
console.group();
91+
printTree(suite);
92+
console.groupEnd();
93+
}
94+
}
95+
7496
async function test() {
7597
driver = await new Builder().withCapabilities(capabilities).build();
7698

7799
try {
78100
await driver.get(`http://localhost:${PORT}/tests/index.html`);
79-
console.log("Waiting for tests to finish");
80-
const stats = await driver.executeAsyncScript(function (callback) {
81-
window.addEventListener("complete", () => callback(window.mochaResults.stats), { once: true });
101+
const result = await driver.executeAsyncScript(function (callback) {
102+
window.addEventListener(
103+
"test-complete",
104+
() =>
105+
callback({
106+
stats: window.mochaResults.stats,
107+
suite: window.suite,
108+
}),
109+
{ once: true }
110+
);
111+
const event = new Event("start-test");
112+
window.dispatchEvent(event);
82113
});
83-
console.log("stats", stats);
84-
console.log("Checking for passed tests");
85-
assert(stats.passes > 0);
86-
console.log("Checking for failed tests");
87-
assert(stats.failures === 0);
114+
115+
printTree(result.suite);
116+
117+
console.log("\nChecking for passed tests...");
118+
assert(result.stats.passes > 0);
119+
console.log("Checking for failed tests...");
120+
assert(result.stats.failures === 0);
88121
} finally {
89-
console.log("Tests complete");
122+
console.log("\nTests complete!");
90123
driver.quit();
91124
server.close();
92125
}

0 commit comments

Comments
 (0)