/
index.js
70 lines (52 loc) · 1.69 KB
/
index.js
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
67
68
69
70
import co from 'co'
import gutil from 'gulp-util'
import * as TestServer from './server'
import * as BrowserLauncher from './browser'
import * as CoverageReport from '../coverage-report'
let log = gutil.log.bind(gutil, '[test-runner]')
export function run () {
return co(function*() {
let promises = {
server: TestServer.start(),
launcher: BrowserLauncher.start(),
}
let launcher = yield promises.launcher
log('browser launcher initiated')
let server = yield promises.server
log('server initialized')
let url = 'http://localhost:' + server.address().port + '/?mode=test'
let browser = yield launcher.launch(url)
log('browser launched to ' + url)
try {
let result
let fail = false
try {
result = yield server.testResult.timeout(40000)
} finally {
log('result collected')
server.close()
server.unref()
}
for (let spec of result.specs) {
if (spec.status === 'passed') {
console.log('\x1b[1;32m[OK]\x1b[m', spec.fullName)
} else if (spec.status === 'pending') {
console.log('\x1b[1;33m[PEND]\x1b[m', spec.fullName)
} else {
fail = true
console.log('\x1b[1;31m[FAIL]\x1b[m', spec.fullName)
for (let expectation of spec.failedExpectations) {
console.log('\x1b[1;31m' + expectation.message + '\x1b[m')
console.log(expectation.stack)
}
}
}
if (result.coverage) {
yield CoverageReport.generate(result.coverage)
}
if (fail) throw new gutil.PluginError('test', 'Testing failed!')
} finally {
browser.kill()
}
})
}