From b52bfd819b126691326d2e20d8f5c0de635d416f Mon Sep 17 00:00:00 2001 From: Francisco Baio Dias Date: Tue, 15 Mar 2016 18:59:32 +0000 Subject: [PATCH] Add browser tests --- .travis.yml | 7 +++++++ karma.conf.js | 38 ++++++++++++++++++++++++++++++++++++++ package.json | 14 ++++++++++++-- tests/browser.js | 28 ++++++++++++++++++++++++++++ tests/karma.js | 28 ++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 karma.conf.js create mode 100644 tests/browser.js create mode 100644 tests/karma.js diff --git a/.travis.yml b/.travis.yml index 2bd8b0e..a85f00e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,3 +9,10 @@ before_install: script: - npm test + +addons: + firefox: 'latest' + +before_script: + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..3515a92 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,38 @@ +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['mocha'], + + files: [ + 'tests/browser.js' + ], + + preprocessors: { + 'tests/*': ['webpack'] + }, + + webpack: { + resolve: { + extensions: ['', '.js'] + }, + node: { + Buffer: true + } + }, + + webpackMiddleware: { + noInfo: true, + stats: { + colors: true + } + }, + reporters: ['spec'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: false, + browsers: process.env.TRAVIS ? ['Firefox'] : ['Chrome'], + captureTimeout: 60000, + singleRun: true + }) +} diff --git a/package.json b/package.json index 5fb3a86..f8e8817 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,9 @@ "test:compliance:connection": "node tests/connection.js", "test:compliance:transport": "node tests/transport.js", "test:specific": "mocha tests/*-test.js", - "test": "npm run test:specific", + "test:node": "npm run test:specific", + "test:browser": "node tests/karma", + "test": "npm run test:node && npm run test:browser", "test-2": "npm run test:specific && npm run test:compliance:transport && npm run test:compliance:connection", "lint": "standard" }, @@ -38,9 +40,17 @@ "interface-connection": "0.0.3", "interface-transport": "^0.1.1", "istanbul": "^0.4.2", + "karma": "^0.13.19", + "karma-chrome-launcher": "^0.2.2", + "karma-cli": "^0.1.2", + "karma-firefox-launcher": "^0.1.7", + "karma-mocha": "^0.2.1", + "karma-spec-reporter": "0.0.23", + "karma-webpack": "^1.7.0", "mocha": "^2.4.5", "pre-commit": "^1.1.2", "standard": "^6.0.7", - "tape": "^4.2.0" + "tape": "^4.2.0", + "webpack": "^1.12.14" } } diff --git a/tests/browser.js b/tests/browser.js new file mode 100644 index 0000000..6a09372 --- /dev/null +++ b/tests/browser.js @@ -0,0 +1,28 @@ +/* eslint-env mocha */ + +const expect = require('chai').expect +const WSlibp2p = require('../src') +const multiaddr = require('multiaddr') + +describe('libp2p-websockets', function () { + this.timeout(10000) + var ws + + it('create', (done) => { + ws = new WSlibp2p() + expect(ws).to.exist + done() + }) + + it('echo', (done) => { + const mh = multiaddr('/ip4/127.0.0.1/tcp/9090/websockets') + const conn = ws.dial(mh) + const message = 'Hello World!' + conn.write(message) + conn.on('data', (data) => { + expect(data.toString()).to.equal(message) + conn.end() + done() + }) + }) +}) diff --git a/tests/karma.js b/tests/karma.js new file mode 100644 index 0000000..f54f161 --- /dev/null +++ b/tests/karma.js @@ -0,0 +1,28 @@ +const Server = require('karma').Server +const path = require('path') + +const WSlibp2p = require('../src') +const multiaddr = require('multiaddr') + +var ws + +function createServer (done) { + ws = new WSlibp2p() + const mh = multiaddr('/ip4/127.0.0.1/tcp/9090/websockets') + ws.createListener(mh, (socket) => { + socket.pipe(socket) + }, done) +} + +function stopServer (done) { + ws.close(done) +} + +function runTests (done) { + new Server({ + configFile: path.join(__dirname, '/../karma.conf.js'), + singleRun: true + }, done).start() +} + +createServer(() => runTests(() => stopServer(() => null)))