Skip to content

Commit e281bc3

Browse files
committedOct 11, 2021
Test using Playwright instead of Saucelabs
1 parent f7275e6 commit e281bc3

File tree

2 files changed

+73
-1
lines changed

2 files changed

+73
-1
lines changed
 

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"test": "npm run test-node && npm run test-browser",
88
"test-node": "qunit --require ./test/helpers/test-utils.js --require ./test/helpers/node-test-utils.js test/asserts/",
9-
"test-browser": "grunt build && grunt test",
9+
"test-browser": "grunt build && node test/run.js",
1010
"lint": "grunt jshint"
1111
},
1212
"contributors": [

‎test/run.js

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
const path = require("path");
2+
const playwright = require("playwright");
3+
const createServer = require("http-server").createServer;
4+
5+
/** @typedef {{
6+
name: string,
7+
message: string,
8+
module: string,
9+
result: boolean,
10+
expected: unknown,
11+
actual: unknown,
12+
source: string
13+
}} Failure
14+
*/
15+
16+
/**
17+
* @typedef {{ passed: number, failed: number, total: number, runtime: number, tests: Failure[] }} Results
18+
*/
19+
20+
/**
21+
* @param {string} browserType
22+
* @returns {Promise<[string, Results]>}
23+
*/
24+
async function run(browserType) {
25+
console.log("Starting", browserType);
26+
const browser = await playwright[browserType].launch();
27+
const context = await browser.newContext();
28+
const page = await context.newPage();
29+
30+
await page.goto(`http://127.0.0.1:8080/test/index.html?hidepassed`);
31+
32+
let result;
33+
do {
34+
result = await page.evaluate(() => {
35+
return window.global_test_results;
36+
});
37+
} while (!result)
38+
39+
console.log("Closing", browserType);
40+
await browser.close();
41+
42+
return [browserType, result];
43+
}
44+
45+
async function main() {
46+
const browsersTypes = ["chromium", "firefox", "webkit"];
47+
48+
const server = createServer({root: path.join(__dirname, "..")});
49+
await new Promise(resolve => server.listen(8080, "127.0.0.1", resolve));
50+
console.log("Server started");
51+
52+
try {
53+
const results = await Promise.all(browsersTypes.map(run));
54+
55+
let failures = false;
56+
for (const result of results) {
57+
console.log(...result);
58+
failures = failures || result[1].failed > 0;
59+
}
60+
61+
if (failures) {
62+
console.log("Tests failed");
63+
process.exit(1);
64+
} else {
65+
console.log("Tests passed!");
66+
}
67+
} finally {
68+
server.close();
69+
}
70+
}
71+
72+
main();

0 commit comments

Comments
 (0)
Please sign in to comment.