forked from NativeScript/NativeScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun-automated.js
More file actions
66 lines (57 loc) · 1.49 KB
/
run-automated.js
File metadata and controls
66 lines (57 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
* Script to run the automated tests & exit after the tests are finished.
* Mainly intended to be used on CI
*
* Usage: node run-automated.js <platform>
*/
const spawn = require('child_process').spawn
const kill = require('tree-kill');
const path = require('path');
const TIMEOUT_MS = 20 * 60 * 1000; // 20 minutes (is Github CI this slow to boot AVDs?)
const workspaceDir = path.resolve(__dirname, '../..');
const platform = process.argv[2];
const spawned_process = spawn(
"npx",
[
"nx",
"run",
`apps-automated:${platform}`,
// "--log=trace",
// `--flags="--log=trace"`,
"--timeout=600" // 10 minutes, booting avds on CI is very slow...
],
{
cwd: workspaceDir,
stdio: ["inherit", "pipe", "pipe"],
}
);
const { stdout, stderr } = spawned_process
stdout.pipe(process.stdout)
stderr.pipe(process.stderr)
let lineBuffer = []
let timeout_id;
function exit(code) {
kill(spawned_process.pid)
process.exit(code)
}
function onTimeout() {
console.log(`Tests TIMEOUT (${TIMEOUT_MS}ms)`)
exit(1)
}
function healthCheck() {
clearTimeout(timeout_id)
timeout_id = setTimeout(onTimeout, TIMEOUT_MS)
}
stdout.on('data', data => {
healthCheck();
const line = data.toString();
// start buffering lines when tests are complete
if(lineBuffer.length || line.includes('=== ALL TESTS COMPLETE ===')) {
lineBuffer.push(line)
}
if(line.includes('Tests EOF!')) {
let ok = lineBuffer.join('\n').includes('OK, 0 failed')
console.log(ok ? 'Tests PASSED' : 'Tests FAILED');
exit(ok ? 0 : 1)
}
})