import { fork } from 'child_process'; import tape from 'tape'; import _test from 'tape-promise'; import fetch from 'isomorphic-fetch'; import socketclient from 'socket.io-client'; const tapetest = _test(tape); const serverhost = 'localhost', serverport = 2424, server = fork('build/server.js'); tapetest('test server', async function testServer(assert) { let client; try { await waitPro(); const ret = await fetch(`http://${serverhost}:${serverport}`), data = await ret.text(); assert.equal(data, 'working', 'received message from server'); } catch(e) { console.log('error in', assert.name, e); assert.fail(`error in ${assert.name}`); } assert.end(); }); tapetest.onFinish(async function cleanup() { server.kill(); }); function waitPro(n = 1000) { return new Promise(function pro(resolve, reject) { setTimeout(resolve, n); }); } function responsePro(socket, evt, wait = 3000) { return new Promise(function pro(resolve, reject) { let to = setTimeout(reject.bind(null, 'socket event TIMEOUT ' + evt), wait); socket.once(evt, function (a) { clearTimeout(to); resolve(a); }); }); }