Skip to content

Commit e3b8dd6

Browse files
committed
feat: working wait
1 parent 007c565 commit e3b8dd6

File tree

2 files changed

+54
-4
lines changed

2 files changed

+54
-4
lines changed

package.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@
7070
"test": "npm run unit",
7171
"unit": "mocha src/*-spec.js",
7272
"unused-deps": "dependency-check --unused --no-dev .",
73-
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
73+
"semantic-release": "semantic-release pre && npm publish && semantic-release post",
74+
"prestart": "sleep 5",
75+
"start": "http-server -c-1 -p 8090 --quiet test",
76+
"demo": "node bin/start.js http://127.0.0.1:8090"
7477
},
7578
"release": {
7679
"analyzeCommits": "simple-commit-message",
@@ -94,10 +97,16 @@
9497
"prettier-standard": "7.0.3",
9598
"semantic-release": "8.2.0",
9699
"simple-commit-message": "3.3.2",
97-
"standard": "10.0.3"
100+
"standard": "10.0.3",
101+
"http-server": "0.10.0"
98102
},
99103
"dependencies": {
100104
"check-more-types": "2.24.0",
101-
"lazy-ass": "1.6.0"
105+
"lazy-ass": "1.6.0",
106+
"execa": "0.8.0",
107+
"wait-on": "2.0.2",
108+
"bluebird": "3.5.1",
109+
"debug": "3.1.0"
102110
}
103111
}
112+

src/index.js

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,53 @@
22

33
const la = require('lazy-ass')
44
const is = require('check-more-types')
5+
const execa = require('execa')
6+
const waitOn = require('wait-on')
7+
const Promise = require('bluebird')
8+
const debug = require('debug')('start-server-and-test')
59

610
function startAndTest ({ start, url, test }) {
711
la(is.unemptyString(start), 'missing start script name', start)
812
la(is.unemptyString(test), 'missing test script name', test)
913
la(is.url(url), 'missing url to wait on', url)
10-
return Promise.resolve()
14+
15+
debug('starting server')
16+
const server = execa('npm', ['run', start], { stdio: 'inherit' })
17+
let serverStopped
18+
19+
function stopServer () {
20+
if (!serverStopped) {
21+
debug('stopping server')
22+
server.kill()
23+
serverStopped = true
24+
}
25+
}
26+
27+
const waited = new Promise((resolve, reject) => {
28+
waitOn(
29+
{
30+
resources: [url]
31+
},
32+
err => {
33+
if (err) {
34+
debug('error waiting for url', url)
35+
debug(err.message)
36+
return reject(err)
37+
}
38+
resolve()
39+
}
40+
)
41+
})
42+
43+
function runTests () {
44+
debug('running test script command', test)
45+
return execa('npm', ['run', test], { stdio: 'inherit' })
46+
}
47+
48+
return waited
49+
.tapCatch(stopServer)
50+
.then(runTests)
51+
.finally(stopServer)
1152
}
1253

1354
module.exports = startAndTest

0 commit comments

Comments
 (0)