import request from 'supertest'; import assert from 'assert'; import {parse} from 'url'; import listen from './helpers/listen'; import {Client as WebSocket} from 'faye-websocket'; describe('tiny-lr', () => { before(listen()); it('accepts ws clients', function (done) { const url = parse(this.request.url); const server = this.app; const ws = this.ws = new WebSocket('ws://' + url.host + '/livereload'); ws.onopen = event => { const hello = { command: 'hello', protocols: ['http://livereload.com/protocols/official-7'] }; ws.send(JSON.stringify(hello)); }; ws.onmessage = event => { assert.deepEqual(event.data, JSON.stringify({ command: 'hello', protocols: ['http://livereload.com/protocols/official-7'], serverName: 'tiny-lr' })); assert.ok(Object.keys(server.clients).length); done(); }; }); it('properly cleans up established connection on exit', function (done) { const ws = this.ws; ws.onclose = done.bind(null, null); request(this.server) .get('/kill') .expect(200, () => {}); }); });