From 4005f315f880add9aba33c1cbc7fb2c0a3a7a3d5 Mon Sep 17 00:00:00 2001 From: "Matthew A. Miller" Date: Wed, 7 Sep 2016 13:13:46 -0600 Subject: [PATCH] Build: include browser tests in travis-ci (#74) --- .travis.yml | 38 ++++++++++++++++++++++---------------- gulpfile.js | 32 +++++++++++++++++++++++++++++++- package.json | 1 + 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index c9456a4..4bb30c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,25 +1,31 @@ language: node_js -node_js: - - '0.10' - - '0.12' - - 'iojs' - - '4' - - '5' - - '6' - addons: apt: sources: - - ubuntu-toolchain-r-test + - ubuntu-toolchain-r-test packages: - - g++-4.8 + - g++-4.8 +node_js: +- '0.10' +- '0.12' +- iojs +- '4' +- '5' +- '6' env: matrix: + - CXX=g++-4.8 TASKS=test:nodejs +matrix: + include: + - node_js: 6 env: - - TASKS=test:nodejs - - EXTRAS="" - global: - - CXX=g++-4.8 - + - CXX=g++-4.8 TASKS=travis:browser + addons: + firefox: latest + sauce_connect: true +before_script: +- "export DISPLAY=:99.0" +- "sh -e /etc/init.d/xvfb start" +- sleep 5 # give xvfb some time to start script: - - ./node_modules/.bin/gulp $TASKS $EXTRAS +- ./node_modules/.bin/gulp $TASKS diff --git a/gulpfile.js b/gulpfile.js index ac31623..f95b27e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -28,6 +28,7 @@ var ARGV = require("yargs"). var webpack = require("webpack-stream"), clone = require("lodash.clone"), gulp = require("gulp"), + gutil = require("gulp-util"), karma = require("karma"), merge = require("lodash.merge"), mocha = require("gulp-mocha"), @@ -168,7 +169,10 @@ var KARMA_CONFIG = { loader: "json" } ] - } + }, + }, + webpackMiddleware: { + noInfo: true }, reporters: ["mocha"], customLaunchers: { @@ -293,6 +297,32 @@ gulp.task("test:browser", function(cb) { cb); }); +// ## TRAVIS-CI TASKS ### +gulp.task("travis:browser", function(cb) { + if ("true" !== process.env.TRAVIS) { + gutil.log("travis-ci environment not detected"); + cb(); + return; + } + + gutil.log("pull request: ", process.env.TRAVIS_PULL_REQUEST); + gutil.log("job number: ", process.env.TRAVIS_JOB_NUMBER); + if (process.env.SAUCE_USERNAME && + process.env.SAUCE_ACCESS_KEY && + "false" === process.env.TRAVIS_PULL_REQUEST) { + ARGV.sauce = true; + merge(KARMA_CONFIG.sauceLabs, { + startConnect: false, + tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER || null + }); + } else { + ARGV.sauce = false; + ARGV.browsers="Firefox"; + } + + runSequence("test:browser", cb); +}); + // ### MAIN TASKS ### gulp.task("test", function(cb) { runSequence("test:lint", diff --git a/package.json b/package.json index 2cbf96a..d294ebb 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "gulp-mocha": "^2.0.0", "gulp-rename": "^1.2.0", "gulp-uglify": "^1.1.0", + "gulp-util": "^3.0.7", "istanbul": "^0.4.0", "jose-cookbook": "git+https://github.com/ietf-jose/cookbook.git", "json-loader": "^0.5.4",