diff --git a/.travis.yml b/.travis.yml index 6cf79f5fe8..971b524a2f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,11 +32,8 @@ before_install: - gem install sass --version "=3.3.7" - npm i nsp -g - npm i snyk -g - - npm install protractor - - "export DISPLAY=:99.0" - - "sh -e /etc/init.d/xvfb start" - - 'node_modules/protractor/bin/webdriver-manager update --standalone --firefox' - - 'node_modules/protractor/bin/webdriver-manager start 2>&1 &' + - export DISPLAY=:99.0 + - bash scripts/setup-protractor.sh - sleep 3 #before_script: # - snyk auth $SNYK_TOKEN diff --git a/gulpfile.js b/gulpfile.js index f02cbb06c7..29b524dc90 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -47,9 +47,23 @@ gulp.task('env:prod', function () { // Nodemon task gulp.task('nodemon', function () { + + var nodeVersions = process.versions; + var debugArgument = '--debug'; + switch (nodeVersions.node.substr(0, 1)) { + case '4': + case '5': + case '6': + debugArgument = '--debug'; + break; + case '7': + debugArgument = '--inspect'; + break; + } + return plugins.nodemon({ script: 'server.js', - nodeArgs: ['--inspect'], + nodeArgs: [debugArgument], ext: 'js,html', verbose: true, watch: _.union(defaultAssets.server.views, defaultAssets.server.allJS, defaultAssets.server.config) @@ -371,16 +385,43 @@ gulp.task('dropdb', function (done) { }); }); -// Downloads the selenium webdriver +// Downloads the selenium webdriver if protractor version is compatible gulp.task('webdriver_update', webdriver_update); +gulp.task('webdriver_prep', function(done) { + runSequence('protractor_prep', 'webdriver_update', done); +}); + +gulp.task('protractor_prep', function() { + var nodeVersions = process.versions; + switch (nodeVersions.node.substr(0, 1)) { + case '4': + case '5': + console.log('E2E testing doesnt support v4 and v5'); + process.exit(0); + break; + case '6': + if (parseInt(nodeVersions.node.substr(1, 1), 10) < 9) { + console.log('E2E testing with latest protractor requires v >= 6.9 '); + process.exit(0); + } + break; + default: + console.log('Detecting support for protractor E2E tests'); + break; + } + + return gulp.src('*.js'); +}); + + // Start the standalone selenium server // NOTE: This is not needed if you reference the // seleniumServerJar in your protractor.conf.js gulp.task('webdriver_standalone', webdriver_standalone); // Protractor test runner task -gulp.task('protractor', ['webdriver_update'], function () { +gulp.task('protractor', ['webdriver_prep'], function () { gulp.src([]) .pipe(protractor({ configFile: 'protractor.conf.js' diff --git a/package.json b/package.json index 8d3250f48b..5044bfdac7 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "gulp-mocha": "~3.0.1", "gulp-ng-annotate": "~2.0.0", "gulp-nodemon": "~2.2.1", - "gulp-protractor": "~3.0.0", + "gulp-protractor": "^3.0.0", "gulp-refresh": "~1.1.0", "gulp-rename": "~1.2.2", "gulp-rev": "^7.1.2", diff --git a/scripts/setup-protractor.sh b/scripts/setup-protractor.sh new file mode 100755 index 0000000000..3d4aaf4e62 --- /dev/null +++ b/scripts/setup-protractor.sh @@ -0,0 +1,11 @@ +#!/bin/bash -x + +echo "$TRAVIS_NODE_VERSION" +if [[ "$TRAVIS_NODE_VERSION" == "6" || "$TRAVIS_NODE_VERSION" == "7" ]] +then + npm install protractor + export DISPLAY=:99.0 + bash -e /etc/init.d/xvfb start + ./node_modules/protractor/bin/webdriver-manager update --standalone --firefox + ./node_modules/protractor/bin/webdriver-manager start 2>&1 & +fi