diff --git a/.travis.yml b/.travis.yml index 88d499a..e8d01a5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,12 @@ language: node_js node_js: - '0.10' -notifications: - hipchat: - rooms: - secure: p6IUoOsKoM7cEmUsYh9JV5XKpUSASXukGkiBxdPU+ELM1CgNT0PyUROXwgDvI0vjSBCJemNh5sqrEQWiT70PcR69rH1JQ6+mHZah4r6W1Ql0NuWibvsofLyCeTzW2nrptdx97Z4y65NiHsaaOo3F+BShTeBpmBAvRMNp/FLMjWU= - template: - - '%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} (Details/Change view)' - format: html - on_success: never +before_install: + - npm install -g bower + - npm install -g grunt-cli + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start +install: + - bower install + - npm install + diff --git a/gulpfile.js b/gulpfile.js index 646588d..6285ae7 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -33,12 +33,23 @@ function ignoreError() { /* jshint ignore:end */ } -function testMocha() { - return gulp.src(tests).pipe(new mocha({reporter: 'spec'})); -} +var testMocha = function() { + return gulp.src(tests).pipe(new mocha({ + reporter: 'spec' + })); +}; + +var testKarma = shell.task([ + './node_modules/karma/bin/karma start --single-run --browsers Firefox' +]); + gulp.task('test', testMocha); +gulp.task('test-all', function(callback) { + runSequence(['test'], ['karma'], callback); +}); + gulp.task('test-nofail', function() { return testMocha().on('error', ignoreError); }); @@ -55,6 +66,10 @@ gulp.task('watch:lint', function() { return gulp.watch(alljs, ['lint']); }); +gulp.task('watch:browser', function() { + return gulp.watch(alljs, ['browser-all']); +}); + gulp.task('coverage', shell.task(['istanbul cover _mocha -- --recursive'])); gulp.task('jsdoc', function() { @@ -82,9 +97,15 @@ gulp.task('browser', function() { }); gulp.task('browser-test', shell.task([ - 'find test/ -type f -name "*.js" | xargs browserify -o ./browser/tests.js' + 'find test/ -type f -name "*.js" | xargs browserify -o ./browser/tests.js' ])); +gulp.task('browser-all', function(callback) { + runSequence(['browser'], ['browser-test'], callback); +}); + +gulp.task('karma', testKarma); + gulp.task('minify', function() { return gulp.src('dist/bitcore.js') .pipe(closureCompiler({ diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..cc5620a --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,13 @@ +'use strict'; + +// karma.conf.js +module.exports = function(config) { + config.set({ + frameworks: ['mocha'], + browsers: ['Chrome', 'Firefox'], + singleRun: true, + files: [ + 'browser/tests.js' + ] + }); +}; diff --git a/package.json b/package.json index 6254f19..efb33fc 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,10 @@ "main": "index.js", "scripts": { "lint": "gulp lint", - "test": "gulp test", + "test": "gulp test-all", "coverage": "gulp coverage", - "build": "gulp" + "build": "gulp", + "postinstall": "node_modules/gulp/bin/gulp.js browser-all" }, "contributors": [ { @@ -91,7 +92,10 @@ "gulp-shell": "^0.2.10", "lodash": "^2.4.1", "mocha": "~2.0.1", - "run-sequence": "^1.0.2" + "run-sequence": "^1.0.2", + "karma": "^0.12.28", + "karma-mocha": "^0.1.9", + "karma-firefox-launcher": "^0.1.3" }, "license": "MIT" }