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"
}