Comparing version 1.11.2 to 1.11.3
@@ -1,2 +0,1 @@ | ||
/* jshint evil:true */ | ||
var args = Array.prototype.slice.call(arguments, 0); | ||
@@ -3,0 +2,0 @@ var code = args[0], fargs = args[1], done = args[2]; |
@@ -1,2 +0,1 @@ | ||
/* jshint evil:true */ | ||
var args = Array.prototype.slice.call(arguments, 0); | ||
@@ -3,0 +2,0 @@ var code = args[0], fargs = args[1]; |
@@ -1,2 +0,1 @@ | ||
/* jshint evil:true */ | ||
var args = Array.prototype.slice.call(arguments, 0); | ||
@@ -3,0 +2,0 @@ var condExpr = args[0], timeout = args[1], |
@@ -44,3 +44,2 @@ var username = process.env.BROWSERSTACK_USERNAME || "BROWSERSTACK_USERNAME"; | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -47,0 +46,0 @@ href.should.include('guinea-pig2'); |
@@ -41,3 +41,2 @@ var username = process.env.BROWSERSTACK_USERNAME || "BROWSERSTACK_USERNAME"; | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -44,0 +43,0 @@ href.should.include('guinea-pig2'); |
@@ -31,3 +31,2 @@ require('colors'); | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -34,0 +33,0 @@ href.should.include('guinea-pig2'); |
@@ -31,3 +31,2 @@ require('colors'); | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -34,0 +33,0 @@ href.should.include('guinea-pig2'); |
@@ -52,3 +52,2 @@ var username = process.env.KOBITON_USERNAME || "KOBITON_USERNAME"; | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval('window.location.href', function(err, href) { | ||
@@ -55,0 +54,0 @@ href.should.include('guinea-pig2'); |
@@ -42,3 +42,2 @@ var username = process.env.SAUCE_USERNAME || "SAUCE_USERNAME"; | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -45,0 +44,0 @@ href.should.include('guinea-pig2'); |
@@ -40,3 +40,2 @@ var username = process.env.SAUCE_USERNAME || "SAUCE_USERNAME"; | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -43,0 +42,0 @@ href.should.include('guinea-pig2'); |
@@ -25,3 +25,2 @@ require('colors'); | ||
/* jshint evil: true */ | ||
browser | ||
@@ -28,0 +27,0 @@ .chain() |
@@ -30,3 +30,2 @@ require('colors'); | ||
/* jshint evil: true */ | ||
browser | ||
@@ -33,0 +32,0 @@ .init({browserName:'chrome'}) |
@@ -30,3 +30,2 @@ require('colors'); | ||
/* jshint evil: true */ | ||
browser | ||
@@ -33,0 +32,0 @@ .status() |
@@ -30,3 +30,2 @@ require('colors'); | ||
/* jshint evil: true */ | ||
browser | ||
@@ -33,0 +32,0 @@ .init({browserName:'firefox'}) |
@@ -6,4 +6,2 @@ // requires node 0.11 | ||
/* jshint moz: true, evil: true */ | ||
require('colors'); | ||
@@ -10,0 +8,0 @@ var chai = require("chai"); |
@@ -5,3 +5,2 @@ // requires node 0.11 | ||
/* global describe, it, before , beforeEach, after*/ | ||
/* jshint moz: true, evil: true */ | ||
@@ -61,2 +60,1 @@ require('colors'); | ||
}); | ||
@@ -57,3 +57,2 @@ /* global describe, it, before , beforeEach, after*/ | ||
it("submit element should be clicked", function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -106,3 +105,2 @@ .elementById("submit") | ||
it("submit element should be clicked", function(done) { | ||
/* jshint evil: true */ | ||
browser | ||
@@ -109,0 +107,0 @@ .elementById("submit") |
@@ -37,3 +37,2 @@ require('colors'); | ||
.then(function () { | ||
/* jshint evil: true */ | ||
return browser.eval("window.location.href"); | ||
@@ -40,0 +39,0 @@ }) |
@@ -41,3 +41,2 @@ var username = process.env.SAUCE_USERNAME || "SAUCE_USERNAME"; | ||
/* jshint evil: true */ | ||
browser | ||
@@ -44,0 +43,0 @@ .init(desired) |
@@ -41,3 +41,2 @@ var username = process.env.SAUCE_USERNAME || "SAUCE_USERNAME"; | ||
/* jshint evil: true */ | ||
browser | ||
@@ -44,0 +43,0 @@ .init(desired) |
@@ -38,3 +38,2 @@ var username = process.env.SAUCE_USERNAME || "SAUCE_USERNAME"; | ||
/* jshint evil: true */ | ||
browser | ||
@@ -41,0 +40,0 @@ .init(desired) |
201
gulpfile.js
var gulp = require('gulp'), | ||
jshint = require('gulp-jshint'), | ||
jshintStylish = require('jshint-stylish'), | ||
Q = require('q'), | ||
runSequence = Q.denodeify(require('run-sequence')), | ||
path = require('path'), | ||
_ = require('lodash'), | ||
args = require('yargs').argv, | ||
args = require('yargs').argv, | ||
urlLib = require('url'), | ||
@@ -13,6 +10,13 @@ mochaStream = require('spawn-mocha-parallel').mochaStream, | ||
sauceConnectLauncher = require('sauce-connect-launcher'), | ||
async = require('async'); | ||
async = require('async'), | ||
log = require('fancy-log'), | ||
eslint = require('gulp-eslint'), | ||
gulpIf = require('gulp-if'), | ||
debug = require('gulp-debug'); | ||
require('./test/helpers/env'); | ||
var VERBOSE = !!process.env.VERBOSE; | ||
args.browsers = (args.browser || 'chrome').split(','); | ||
@@ -23,3 +27,5 @@ args.sauce = args.sauce ? true : false; | ||
if (args.sauce) { BROWSERS.push('explorer'); } | ||
var MOBILE_BROWSERS = ['android', 'ios', 'iphone', 'ipad', 'android_phone']; | ||
process.env.SAUCE_CONNECT_VERSION = process.env.SAUCE_CONNECT_VERSION || '4.5.1'; | ||
@@ -29,6 +35,9 @@ process.env.SAUCE_CONNECT_VERBOSE = false; | ||
var PROXY_PORT = 5050; | ||
var expressPort = 3000; // incremented after each test to avoid colision | ||
var expressPort = 3000; // incremented after each test to avoid collision | ||
var debugLog = log.bind(log); | ||
var warnLog = log.warn.bind(log); | ||
var errorLog = log.error.bind(log); | ||
function buildMochaOpts(opts) { | ||
var mochaOpts = { | ||
@@ -38,4 +47,5 @@ flags: { | ||
R: 'spec', | ||
c: true | ||
c: true, | ||
}, | ||
exit: true, | ||
bin: path.join(__dirname, 'node_modules/.bin/' + ((process.platform !== "win32") ? 'mocha' : 'mocha.cmd')), | ||
@@ -76,19 +86,40 @@ concurrency: args.concurrency | process.env.CONCURRENCY || 3 | ||
function runSequence (...args) { | ||
args = _.flattenDeep(args); | ||
return Q.Promise(function (resolve) { | ||
if (args.length === 0) { | ||
return resolve(); | ||
} | ||
// do the tasks in series | ||
(gulp.series(...args, function finishSequence (done) { | ||
done(); | ||
resolve(); | ||
}))(); | ||
}); | ||
} | ||
gulp.task('lint', function() { | ||
// return gulp.src(['lib/**/*.js','test/**/*.js','browser-scripts/**/*.js']) | ||
return gulp.src(['lib/**/*.js']) | ||
.pipe(jshint()) | ||
.pipe(jshint.reporter(jshintStylish)) | ||
.pipe(jshint.reporter('fail')); | ||
var opts = { | ||
fix: process.argv.indexOf('--fix') !== -1, | ||
}; | ||
return gulp.src(['*.js', 'lib/**/*.js', 'test/**/*.js', '!node_modules', '!**/node_modules', '!build/**']) | ||
.pipe(gulpIf(!!process.env.VERBOSE, debug())) | ||
.pipe(eslint(opts)) | ||
.pipe(eslint.format()) | ||
.pipe(eslint.failAfterError()) | ||
.pipe(gulpIf(function (file) { | ||
return file.eslint && file.eslint.fixed; | ||
}, gulp.dest(process.cwd()))); | ||
}); | ||
gulp.task('test-unit', function () { | ||
gulp.task('test:unit', function () { | ||
var opts = buildMochaOpts({ unit: true }); | ||
var mocha = mochaStream(opts); | ||
return gulp.src('test/specs/**/*-specs.js', {read: false}) | ||
.pipe(gulpIf(VERBOSE, debug())) | ||
.pipe(mocha) | ||
.on('error', console.warn.bind(console)); | ||
.on('error', warnLog); | ||
}); | ||
gulp.task('test-midway-multi', function () { | ||
gulp.task('test:midway:multi', function () { | ||
var opts = buildMochaOpts({ midway: true, browser: 'multi' }); | ||
@@ -98,30 +129,34 @@ var mocha = mochaStream(opts); | ||
read: false}) | ||
.pipe(gulpIf(VERBOSE, debug())) | ||
.pipe(mocha) | ||
.on('error', console.warn.bind(console)); | ||
.on('error', warnLog); | ||
}); | ||
// create a test:midway: and test:e2e: task for each browser | ||
_(BROWSERS).each(function(browser) { | ||
gulp.task('test-midway-' + browser, function () { | ||
gulp.task(`test:midway:${browser}`, function () { | ||
var opts = buildMochaOpts({ midway: true, browser: browser }); | ||
var mocha = mochaStream(opts); | ||
return gulp.src([ | ||
'test/midway/**/*-specs.js', | ||
'!test/midway/multi/**' | ||
], {read: false}) | ||
'test/midway/**/*-specs.js', | ||
'!test/midway/multi/**' | ||
], {read: false}) | ||
.pipe(gulpIf(VERBOSE, debug())) | ||
.pipe(mocha) | ||
.on('error', console.warn.bind(console)); | ||
.on('error', errorLog); | ||
}); | ||
gulp.task('test-e2e-' + browser, function () { | ||
gulp.task(`test:e2e:${browser}`, function () { | ||
var opts = buildMochaOpts({ browser: browser }); | ||
var mocha = mochaStream(opts); | ||
return gulp.src('test/e2e/**/*-specs.js', {read: false}) | ||
.pipe(gulpIf(VERBOSE, debug())) | ||
.pipe(mocha) | ||
.on('error', console.warn.bind(console)); | ||
.on('error', errorLog); | ||
}); | ||
}); | ||
_(MOBILE_BROWSERS).each(function(browser) { | ||
gulp.task('test-midway-' + browser, function () { | ||
// create a test:midway: task for each mobile browser | ||
_(MOBILE_BROWSERS).each(function (browser) { | ||
gulp.task(`test:midway:${browser}`, function () { | ||
var opts = buildMochaOpts({ midway: true, browser: browser }); | ||
var mocha = mochaStream(opts); | ||
return gulp.src([ | ||
@@ -133,26 +168,24 @@ 'test/midway/api-nav-specs.js', | ||
], {read: false}) | ||
.pipe(mocha) | ||
.on('error', console.warn.bind(console)); | ||
.pipe(gulpIf(VERBOSE, debug())) | ||
.pipe(mochaStream(opts)) | ||
.on('error', errorLog); | ||
}); | ||
}); | ||
gulp.task('test-midway', function() { | ||
var midwayTestTasks = []; | ||
_(args.browsers).each(function(browser) { | ||
midwayTestTasks.push('test-midway-' + browser); | ||
}); | ||
return runSequence('pre-midway', midwayTestTasks) | ||
.finally(function() { | ||
return runSequence('post-midway'); | ||
gulp.task('test:midway', function() { | ||
const midwayTestTasks = _.map(args.browsers, (browser) =>`test:midway:${browser}`); | ||
return runSequence('pre:midway', ...midwayTestTasks) | ||
.finally(function () { | ||
return runSequence('post:midway'); | ||
}); | ||
}); | ||
gulp.task('test-e2e', function() { | ||
gulp.task('test:e2e', function() { | ||
var e2eTestTasks = []; | ||
_(args.browsers).chain().without('multi').each(function(browser) { | ||
e2eTestTasks.push('test-e2e-' + browser); | ||
e2eTestTasks.push(`test:e2e:${browser}`); | ||
}); | ||
if(e2eTestTasks.length > 0){ | ||
// if (e2eTestTasks.length > 0) { | ||
return runSequence(e2eTestTasks); | ||
} | ||
// } | ||
}); | ||
@@ -163,4 +196,3 @@ | ||
_(BROWSERS).each(function(browser) { | ||
seq.push('test-midway-' + browser); | ||
seq.push('test-e2e-' + browser); | ||
seq.push(`test:midway:${browser}`, `test:e2e:${browser}`); | ||
}); | ||
@@ -171,3 +203,3 @@ return runSequence.apply(null, seq); | ||
var server; | ||
gulp.task('start-proxy', function(done) { | ||
gulp.task('proxy:start', function(done) { | ||
var proxy = httpProxy.createProxyServer({}); | ||
@@ -206,3 +238,3 @@ var proxyQueue; | ||
try{ | ||
console.error('Proxy error for: ', req.url + ':' , err); | ||
log.error('Proxy error for: ', req.url + ':' , err); | ||
res.writeHead(500, { | ||
@@ -217,22 +249,24 @@ 'Content-Type': 'text/plain' | ||
server.on('error', function(err) { | ||
console.error('Proxy error: ', err); | ||
log.error(`Proxy error: ${err}`); | ||
}); | ||
console.log("listening on port", PROXY_PORT); | ||
log("Listening on port", PROXY_PORT); | ||
server.listen(PROXY_PORT, done); | ||
}); | ||
gulp.task('stop-proxy', function(done) { | ||
// stop proxy, exit after 5 ec if hanging | ||
gulp.task('proxy:stop', function(done) { | ||
// stop proxy, exit after 5 sec if hanging | ||
done = _.once(done); | ||
var t = setTimeout(function() { | ||
var timeout = setTimeout(function () { | ||
done(); | ||
}, 5000); | ||
if(server) { | ||
server.close(function() { | ||
clearTimeout(t); | ||
if (server) { | ||
server.close(function () { | ||
clearTimeout(timeout); | ||
done(); | ||
}); | ||
} | ||
else { done(); } | ||
else { | ||
done(); | ||
} | ||
}); | ||
@@ -242,3 +276,3 @@ | ||
gulp.task('start-sc', function(done) { | ||
gulp.task('sc:start', function (done) { | ||
var opts = { | ||
@@ -249,17 +283,17 @@ username: process.env.SAUCE_USERNAME, | ||
directDomains: 'cdnjs.cloudflare.com,html5shiv.googlecode.com', | ||
logger: function(mess) {console.log(mess);} | ||
logger: debugLog, | ||
}; | ||
if(process.env.TRAVIS_JOB_NUMBER) { | ||
if (process.env.TRAVIS_JOB_NUMBER) { | ||
opts.tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER; | ||
} | ||
var startTunnel = function(done, n) { | ||
var startTunnel = function (done, n) { | ||
sauceConnectLauncher(opts, function (err, _sauceConnectProcess) { | ||
if (err) { | ||
if(n > 0) { | ||
console.log('retrying sauce connect in 20 secs.'); | ||
setTimeout(function() { | ||
startTunnel(done, n-1); | ||
if (n > 0) { | ||
log('retrying sauce connect in 20 secs.'); | ||
setTimeout(function () { | ||
startTunnel(done, n - 1); | ||
}, 20000); | ||
} else { | ||
console.error(err.message); | ||
log.error(err.message); | ||
done(err); | ||
@@ -270,3 +304,3 @@ } | ||
sauceConnectProcess = _sauceConnectProcess; | ||
console.log("Sauce Connect ready"); | ||
log("Sauce Connect ready"); | ||
done(); | ||
@@ -279,20 +313,21 @@ }); | ||
gulp.task('stop-sc', function(done) { | ||
if(sauceConnectProcess) { sauceConnectProcess.close(done); } | ||
else { done(); } | ||
gulp.task('sc:stop', function (done) { | ||
if(sauceConnectProcess) { | ||
sauceConnectProcess.close(done); | ||
} else { | ||
done(); | ||
} | ||
}); | ||
gulp.task('pre-midway', function() { | ||
var seq = ['start-proxy']; | ||
if(args.sauce && !args['nosc']) { | ||
seq.unshift('start-sc'); | ||
} | ||
gulp.task('pre:midway', function() { | ||
var seq = args.sauce && !args['nosc'] | ||
? ['sc:start', 'proxy:start'] | ||
: ['proxy:start']; | ||
return runSequence(seq); | ||
}); | ||
gulp.task('post-midway', function() { | ||
var seq = ['stop-proxy']; | ||
if(args.sauce && !args['nosc']) { | ||
seq.unshift('stop-sc'); | ||
} | ||
gulp.task('post:midway', function () { | ||
var seq = args.sauce && !args['nosc'] | ||
? ['sc:stop', 'proxy:stop'] | ||
: ['proxy:stop']; | ||
return runSequence(seq); | ||
@@ -303,8 +338,8 @@ }); | ||
var seq; | ||
switch(args.config) { | ||
switch (args.config) { | ||
case 'unit': | ||
return runSequence(['test-unit']); | ||
return runSequence(['test:unit']); | ||
case 'multi': | ||
args.browsers= [args.config]; | ||
return runSequence(['test-midway']); | ||
return runSequence(['test:midway']); | ||
case 'chrome': | ||
@@ -314,3 +349,3 @@ case 'firefox': | ||
args.browsers= [args.config]; | ||
return runSequence(['test-midway','test-e2e']); | ||
return runSequence(['test:midway', 'test:e2e']); | ||
case 'iphone': | ||
@@ -320,8 +355,8 @@ case 'ipad': | ||
args.browsers= [args.config]; | ||
return runSequence(['test-midway']); | ||
return runSequence(['test:midway']); | ||
case 'chrome_e2e': | ||
args.browsers= ['chrome']; | ||
return runSequence(['test-e2e']); | ||
return runSequence(['test:e2e']); | ||
} | ||
return runSequence.apply(null, seq); | ||
}); |
@@ -91,3 +91,2 @@ var _ = require('lodash'); | ||
function jsCondition(jsConditionExpr, safe) { | ||
// jshint evil: true | ||
if(safe === undefined) { safe = false; } | ||
@@ -94,0 +93,0 @@ return new Asserter( |
@@ -8,3 +8,3 @@ #!/usr/bin/env node | ||
var connections = 0; | ||
var connections = 0; // eslint-disable-line no-unused-vars | ||
@@ -16,4 +16,4 @@ var startRepl = function() { | ||
r.context.help = function() { | ||
console.log("WD - Shell."); | ||
console.log("Access the webdriver object via the object: 'wd'"); | ||
console.log("WD - Shell."); // eslint-disable-line no-console | ||
console.log("Access the webdriver object via the object: 'wd'"); // eslint-disable-line no-console | ||
}; | ||
@@ -20,0 +20,0 @@ |
@@ -16,3 +16,5 @@ var async = require("async"); | ||
this._chainOnErrorCallback = function(err) { | ||
if (err) { console.error("a function in your .chain() failed:", err); } | ||
if (err) { | ||
console.error("a function in your .chain() failed:", err); // eslint-disable-line no-console | ||
} | ||
}; | ||
@@ -19,0 +21,0 @@ } |
@@ -111,3 +111,3 @@ var __slice = Array.prototype.slice, | ||
// It is easier and safer to check within the method. | ||
if(utils.isPromise(obj) && !obj.__wd_promise_enriched) { | ||
if (utils.isPromise(obj) && !obj.__wd_promise_enriched) { | ||
@@ -253,3 +253,3 @@ var promise = obj; | ||
return _this._enrich( promise.catch(function(err) { | ||
console.log(prepend + err); | ||
console.log(prepend + err); // eslint-disable-line no-console | ||
throw err; | ||
@@ -263,3 +263,3 @@ }), currentEl); | ||
return _this._enrich( promise.then(function(val) { | ||
console.log(prepend + val); | ||
console.log(prepend + val); // eslint-disable-line no-console | ||
}), currentEl); | ||
@@ -325,3 +325,3 @@ }; | ||
}).join(', ') + ' )'; | ||
console.log(' --> ' + status + context + " " + method + args); | ||
console.log(' --> ' + status + context + " " + method + args); // eslint-disable-line no-console | ||
}); | ||
@@ -328,0 +328,0 @@ }; |
@@ -93,3 +93,3 @@ var Args = require("vargs").Constructor, | ||
this.deprecationMessageShown[cat] = 1; | ||
console.warn(message); | ||
console.warn(message); // eslint-disable-line no-console | ||
} | ||
@@ -96,0 +96,0 @@ } |
@@ -153,2 +153,3 @@ var EventEmitter = require('events').EventEmitter, | ||
} else { | ||
/* eslint-disable no-console */ | ||
console.error('\x1b[31mError\x1b[0m: The environment you requested was unavailable.\n'); | ||
@@ -159,2 +160,3 @@ console.error('\x1b[33mReason\x1b[0m:\n'); | ||
console.error('located at: \x1b[33mhttp://code.google.com/p/selenium/wiki/JsonWireProtocol#/session\x1b[0m'); | ||
/* eslint-enable no-console */ | ||
} | ||
@@ -161,0 +163,0 @@ } |
@@ -11,3 +11,3 @@ { | ||
], | ||
"version": "1.11.2", | ||
"version": "1.11.3", | ||
"author": "Adam Christian <adam.christian@gmail.com>", | ||
@@ -47,36 +47,38 @@ "contributors": [ | ||
"dependencies": { | ||
"archiver": "2.1.1", | ||
"async": "2.0.1", | ||
"lodash": "4.17.11", | ||
"archiver": "^3.0.0", | ||
"async": "^2.0.0", | ||
"fancy-log": "^1.3.3", | ||
"gulp-mocha": "^6.0.0", | ||
"lodash": "^4.0.0", | ||
"mkdirp": "^0.5.1", | ||
"q": "1.4.1", | ||
"q": "^1.5.1", | ||
"request": "2.88.0", | ||
"vargs": "0.1.0" | ||
"vargs": "^0.1.0" | ||
}, | ||
"devDependencies": { | ||
"bdd-with-opts": "1.1.1", | ||
"chai": "3.5.0", | ||
"chai-as-promised": "6.0.0", | ||
"colors": "1.1.2", | ||
"dox": "0.9.0", | ||
"bdd-with-opts": "^1.1.1", | ||
"chai": "^3.0.0", | ||
"chai-as-promised": "^7.1.1", | ||
"colors": "^1.3.3", | ||
"dox": "^0.9.0", | ||
"express": "^4.16.3", | ||
"gulp": "^3.9.1", | ||
"gulp-jshint": "^2.1.0", | ||
"hbs": "4.0.1", | ||
"http-proxy": "1.15.1", | ||
"imageinfo": "1.0.4", | ||
"istanbul": "0.4.5", | ||
"jshint": "^2.9.6", | ||
"jshint-stylish": "2.2.1", | ||
"gulp": "^4.0.0", | ||
"gulp-debug": "^4.0.0", | ||
"gulp-eslint": "^5.0.0", | ||
"gulp-if": "^2.0.2", | ||
"hbs": "^4.0.0", | ||
"http-proxy": "^1.15.1", | ||
"imageinfo": "^1.0.4", | ||
"istanbul": "^0.4.5", | ||
"mocha": "^5.2.0", | ||
"mu2": "0.5.21", | ||
"nock": "8.0.0", | ||
"promise-simple": "0.1.0", | ||
"run-sequence": "1.2.2", | ||
"mu2": "^0.5.21", | ||
"nock": "^10.0.0", | ||
"promise-simple": "^0.1.0", | ||
"run-sequence": "^2.0.0", | ||
"sauce-connect-launcher": "^1.2.4", | ||
"spawn-mocha-parallel": "1.3.1", | ||
"sv-selenium": "0.3.1", | ||
"spawn-mocha-parallel": "^1.3.1", | ||
"sv-selenium": "^0.3.1", | ||
"underscore.string": "^3.3.4", | ||
"uuid": "3.0.1", | ||
"yargs": "6.0.0" | ||
"uuid": "^3.0.1", | ||
"yargs": "^13.0.0" | ||
}, | ||
@@ -86,4 +88,7 @@ "scripts": { | ||
"all_tests": "gulp test", | ||
"install": "node scripts/build-browser-scripts" | ||
"install": "node scripts/build-browser-scripts", | ||
"clean": "rm -rf node_modules && rm -f package-lock.json && npm install", | ||
"lint": "gulp lint", | ||
"lint:fix": "gulp lint --fix" | ||
} | ||
} |
@@ -1,4 +0,4 @@ | ||
# WD.js | ||
# WD.js | ||
[![NPM version](http://img.shields.io/npm/v/wd.svg)](https://npmjs.org/package/wd) | ||
[![NPM version](http://img.shields.io/npm/v/wd.svg)](https://npmjs.org/package/wd) | ||
[![Downloads](http://img.shields.io/npm/dm/wd.svg)](https://npmjs.org/package/wd) | ||
@@ -28,3 +28,3 @@ [![Dependency Status](https://david-dm.org/admc/wd.svg)](https://david-dm.org/admc/wd) | ||
Note: WD.js does not start the selenium server. You may use the [selenium-standalone](https://www.npmjs.com/package/selenium-standalone) package | ||
Note: WD.js does not start the selenium server. You may use the [selenium-standalone](https://www.npmjs.com/package/selenium-standalone) package | ||
to install and start a selenium server. | ||
@@ -88,3 +88,2 @@ | ||
browser.clickElement(el, function() { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -91,0 +90,0 @@ href.should.include('guinea-pig2'); |
@@ -1,2 +0,1 @@ | ||
/*global _:true, Q:true */ | ||
var Mocha = require('mocha'), | ||
@@ -6,3 +5,4 @@ fs = require('fs'), | ||
_ = require('lodash'), | ||
Q = require('Q'); | ||
Q = require('Q'), | ||
log = require('fancy-log'); | ||
@@ -25,3 +25,3 @@ var sauceUsername = process.env.SAUCE_USERNAME; | ||
mocha.reporter('dot'); | ||
_(mochaConfig).each(function(opt) { | ||
_.each(mochaConfig, function(opt) { | ||
var optName = opt.shift(); | ||
@@ -34,3 +34,3 @@ mocha[optName].apply(mocha, opt); | ||
// state in our test setup helpers. | ||
// see https://github.com/visionmedia/mocha/issues/736 | ||
// see https://github.com/mochajs/mocha/issues/736 | ||
_(require.cache) | ||
@@ -54,3 +54,3 @@ .keys() | ||
function() { | ||
console.log('running unit tests'); | ||
log('running unit tests'); | ||
delete process.env.SAUCE_USERNAME; | ||
@@ -61,3 +61,3 @@ delete process.env.SAUCE_ACCESS_KEY; | ||
function() { | ||
console.log('running midway tests(chrome)'); | ||
log('running midway tests(chrome)'); | ||
process.env.SAUCE_USERNAME = sauceUsername; | ||
@@ -69,3 +69,3 @@ process.env.SAUCE_ACCESS_KEY = sauceAccessKey; | ||
function() { | ||
console.log('running midway tests(firefox)'); | ||
log('running midway tests(firefox)'); | ||
process.env.BROWSER='firefox'; | ||
@@ -75,3 +75,3 @@ return runSpecs('test/midway', [['grep',/@skip-firefox|@multi/],['invert']]); | ||
function() { | ||
console.log('running midway tests(multi)'); | ||
log('running midway tests(multi)'); | ||
process.env.BROWSER='chrome'; | ||
@@ -81,3 +81,3 @@ return runSpecs('test/midway', [['grep',/@multi/]]); | ||
function() { | ||
console.log('running e2e tests(chrome)'); | ||
log('running e2e tests(chrome)'); | ||
process.env.BROWSER='chrome'; | ||
@@ -87,3 +87,3 @@ return runSpecs('test/e2e', [['grep',/@skip-chrome/],['invert']]); | ||
function() { | ||
console.log('running e2e tests(firefox)'); | ||
log('running e2e tests(firefox)'); | ||
process.env.BROWSER='firefox'; | ||
@@ -93,3 +93,3 @@ return runSpecs('test/e2e', [['grep',/@skip-firefox/],['invert']]); | ||
function() { | ||
console.log('running sauce e2e tests(chrome)'); | ||
log('running sauce e2e tests(chrome)'); | ||
process.env.SAUCE=1; | ||
@@ -100,3 +100,3 @@ process.env.BROWSER='chrome'; | ||
function() { | ||
console.log('running sauce e2e tests(firefox)'); | ||
log('running sauce e2e tests(firefox)'); | ||
process.env.BROWSER='firefox'; | ||
@@ -103,0 +103,0 @@ return runSpecs('test/e2e', [['grep',/@skip-firefox/],['invert']]); |
@@ -55,3 +55,2 @@ /* global sauceJobTitle, mergeDesired */ | ||
it("eval", function(done) { | ||
/* jshint evil: true */ | ||
browser.eval("window.location.href", function(err, href) { | ||
@@ -63,2 +62,1 @@ href.should.include('http'); | ||
}); | ||
@@ -40,6 +40,5 @@ /* global sauceJobTitle, mergeDesired */ | ||
.title().should.eventually.include("WD"); | ||
}); | ||
}); | ||
it("submit element should be clicked", function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -52,3 +51,1 @@ .elementById("submit") | ||
}); | ||
@@ -31,3 +31,2 @@ /* global sauceJobTitle, mergeDesired */ | ||
}; | ||
/* jshint evil: true */ | ||
browser.chain() | ||
@@ -81,3 +80,2 @@ .init(mergeDesired(env.DESIRED, env.SAUCE? sauceExtra : null )) | ||
it("partial chaining should work", function(done) { | ||
/* jshint evil: true */ | ||
browser.chain() | ||
@@ -124,2 +122,1 @@ .title(function(err, title) { | ||
}); | ||
@@ -61,3 +61,2 @@ /* global sauceJobTitle, mergeDesired */ | ||
it("clicking submit should work", function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -64,0 +63,0 @@ .elementById("submit") |
@@ -55,3 +55,2 @@ /* global sauceJobTitle, mergeDesired */ | ||
}).then(function() { | ||
/* jshint evil: true */ | ||
return browser.eval("window.location.href"); | ||
@@ -62,2 +61,1 @@ }).should.eventually.include("http://"); | ||
}); | ||
/* global sauceJobTitle, mergeDesired */ | ||
require('../helpers/setup'); | ||
var _ = require('lodash'); | ||
@@ -55,3 +56,1 @@ // Testing sauce specific method, it doesn't work | ||
} | ||
@@ -42,6 +42,5 @@ /* global sauceJobTitle, mergeDesired */ | ||
.title().should.eventually.include("WD"); | ||
}); | ||
}); | ||
it("submit element should be clicked", function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -69,3 +68,1 @@ .elementByCss("#submit") | ||
}); | ||
@@ -1,2 +0,1 @@ | ||
var _ = require('lodash'); | ||
var underscoreString = require('underscore.string'); | ||
@@ -6,3 +5,3 @@ var toNumber = underscoreString.toNumber; | ||
/*global env:true */ | ||
var env = global.env = {}; | ||
@@ -73,6 +72,8 @@ | ||
env.TEST_TIME = Math.round(new Date().getTime() / (1000*60)); | ||
env.SAUCE_JOB_ID = | ||
env.TRAVIS_BUILD_NUMBER || | ||
process.env.SAUCE_JOB_ID || | ||
Math.round(new Date().getTime() / (1000*60)); | ||
env.TEST_TIME; | ||
env.SAUCE_USERNAME = process.env.SAUCE_USERNAME; | ||
@@ -79,0 +80,0 @@ env.SAUCE_ACCESS_KEY = process.env.SAUCE_ACCESS_KEY; |
var express = require('express'); | ||
var http = require('http'); | ||
var log = require('fancy-log'); | ||
function Express(rootDir, partials) { | ||
@@ -24,3 +26,3 @@ this.rootDir = rootDir; | ||
res.render('test-page', { | ||
testSuite: req.query.ts? req.query.ts.replace(/\@[\w\-]+/g,'') : '', | ||
testSuite: req.query.ts? req.query.ts.replace(/@[\w-]+/g,'') : '', | ||
testTitle: (req.query.c? req.query.c + ' - ': '') + req.query.p, | ||
@@ -34,3 +36,3 @@ content: content, | ||
this.server = http.createServer(this.app); | ||
console.log('server listening on', env.EXPRESS_PORT); | ||
log('Server listening on', env.EXPRESS_PORT); | ||
this.server.listen(env.EXPRESS_PORT, done); | ||
@@ -37,0 +39,0 @@ }; |
@@ -6,3 +6,3 @@ require('./env'); | ||
if(args[0]='env'){ | ||
if (args[0] === 'env'){ | ||
result = env[args[1]]; | ||
@@ -9,0 +9,0 @@ if(result === undefined) { result = ''; } |
@@ -5,2 +5,4 @@ require('./env'); | ||
var log = require('fancy-log'); | ||
global.wd = require('../../lib/main'); | ||
@@ -11,7 +13,7 @@ var utils = require('../../lib/utils'); | ||
if( env.TRAVIS ){ | ||
console.log("Travis environment detected."); | ||
console.log("TRAVIS_BUILD_NUMBER --> ", env.TRAVIS_BUILD_NUMBER); | ||
console.log("TRAVIS_JOB_NUMBER --> ", env.TRAVIS_JOB_NUMBER); | ||
console.log("TRAVIS_JOB_ID --> ", env.TRAVIS_JOB_ID); | ||
if (env.TRAVIS){ | ||
log("Travis environment detected."); | ||
log("TRAVIS_BUILD_NUMBER --> ", env.TRAVIS_BUILD_NUMBER); | ||
log("TRAVIS_JOB_NUMBER --> ", env.TRAVIS_JOB_NUMBER); | ||
log("TRAVIS_JOB_ID --> ", env.TRAVIS_JOB_ID); | ||
} | ||
@@ -25,9 +27,9 @@ | ||
this.on('status', function(info) { | ||
console.log(info.cyan); | ||
log(info.cyan); | ||
}); | ||
this.on('command', function(eventType, command, response) { | ||
console.log(' > ' + eventType.cyan, command, (response || '').grey); | ||
log(' > ' + eventType.cyan, command, (response || '').grey); | ||
}); | ||
this.on('http', function(meth, path, data) { | ||
console.log(' > ' + meth.magenta, path, (data || '').grey); | ||
log(' > ' + meth.magenta, path, (data || '').grey); | ||
}); | ||
@@ -37,3 +39,3 @@ } | ||
this.on('connection', function(message) { | ||
console.log('connection > ' + message ); | ||
log('connection > ' + message ); | ||
}); | ||
@@ -85,3 +87,3 @@ } | ||
.replace(/\(.*\)/g,'') | ||
.replace(/\@[\w\-]+/g,'') | ||
.replace(/@[\w-]+/g,'') | ||
.trim(); | ||
@@ -88,0 +90,0 @@ }; |
require('../helpers/setup'); | ||
var _ = require('lodash'); | ||
describe('api-el ' + env.ENV_DESC, skip('ios'), function() { | ||
@@ -101,3 +101,3 @@ var partials = {}; | ||
.waitForVisible("css selector", "#wrongsel .child", 0.1 * env.BASE_TIME_UNIT) | ||
.should.be.rejectedWith(/Element didn\'t become visible/); | ||
.should.be.rejectedWith(/Element didn't become visible/); | ||
@@ -104,0 +104,0 @@ }); |
@@ -0,1 +1,2 @@ | ||
/* eslint-disable no-unexpected-multiline */ | ||
// spliting the test cause it takes too long, list of possible suffixes below | ||
@@ -12,3 +13,3 @@ // var suffixes = | ||
beforeEach(function(done) { | ||
setTimeout(function() { console.log('timeout'); done(); }, 1000); | ||
setTimeout(done, 1000); | ||
}); | ||
@@ -119,2 +120,1 @@ | ||
}; | ||
require('../helpers/setup'); | ||
var _ = require('lodash'); | ||
@@ -14,3 +13,2 @@ | ||
it('browser.eval', function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -26,3 +24,2 @@ .eval('1+2').should.become(3) | ||
it('browser.safeEval', function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -40,3 +37,2 @@ .safeEval('1+2').should.become(3) | ||
it('browser.execute', function() { | ||
/* jshint evil: true */ | ||
var jsScript = prepareJs( | ||
@@ -124,3 +120,2 @@ 'var a = arguments[0], b = arguments[1];\n' + | ||
it('browser.safeExecute - noargs', function() { | ||
/* jshint evil: true */ | ||
return browser | ||
@@ -136,3 +131,2 @@ .safeExecute('window.wd_sync_execute_test = "It worked!"') | ||
it('browser.safeExecute - args', skip('android'), function() { | ||
/* jshint evil: true */ | ||
var jsScript = prepareJs( | ||
@@ -201,3 +195,3 @@ 'var a = arguments[0], b = arguments[1];\n' + | ||
.setAsyncScriptTimeout( env.BASE_TIME_UNIT/2 ) | ||
.executeAsync( jsScript, [env.BASE_TIME_UNIT]).should.be.rejectedWith(/status\: 28/) | ||
.executeAsync( jsScript, [env.BASE_TIME_UNIT]).should.be.rejectedWith(/status: 28/) | ||
.setAsyncScriptTimeout( 2* env.BASE_TIME_UNIT ) | ||
@@ -204,0 +198,0 @@ .executeAsync( jsScript, [env.BASE_TIME_UNIT]) |
require('../helpers/setup'); | ||
var _ = require('lodash'); | ||
describe('api-nav ' + env.ENV_DESC, function() { | ||
@@ -64,3 +64,3 @@ var partials = {}; | ||
.elementByCss('#setWaitTimeout .child') | ||
.should.be.rejectedWith(/status\: 7/); | ||
.should.be.rejectedWith(/status: 7/); | ||
} | ||
@@ -102,3 +102,3 @@ }) | ||
it('browser.moveTo', skip('ios', 'android'), function() { | ||
if(true || env.BROWSER === 'explorer') { | ||
if(env.BROWSER === 'explorer') { | ||
// cannot get hover to work in explorer | ||
@@ -266,3 +266,3 @@ return browser | ||
.elementByCss("#theDiv input").clear().getValue().should.become(''); | ||
}); | ||
}); | ||
} | ||
@@ -269,0 +269,0 @@ |
@@ -7,2 +7,3 @@ require('../helpers/setup'); | ||
var tmp = require('../../lib/tmp'); | ||
var assert = require('assert'); | ||
@@ -9,0 +10,0 @@ describe('api-various ' + env.ENV_DESC, function() { |
@@ -7,3 +7,3 @@ require('../helpers/setup'); | ||
beforeEach(function(done) { | ||
setTimeout(function() { console.log('timeout'); done(); }, 500); | ||
setTimeout(done, 500); | ||
}); | ||
@@ -10,0 +10,0 @@ |
@@ -24,10 +24,10 @@ /* global sauceJobTitle, mergeDesired, midwayUrl, Express, uuidLib */ | ||
}; | ||
var desired = mergeDesired(env.DESIRED, env.SAUCE? sauceExtra : null ); | ||
var desired = mergeDesired(env.DESIRED, env.SAUCE ? sauceExtra : null); | ||
return browser | ||
.configureLogging() | ||
.then(function() { | ||
.then(function () { | ||
return browser | ||
.init(desired) | ||
.sleep(500) | ||
.catch(function() { | ||
.catch(function () { | ||
// trying one more time | ||
@@ -44,3 +44,3 @@ return browser.init(desired).sleep(500); | ||
title: this.currentTest.title, | ||
uuid: uuid | ||
uuid: uuid | ||
}); | ||
@@ -57,3 +57,4 @@ return browser | ||
.waitForElementById(uuid, 10000, 500); | ||
}).sleep(100); | ||
}) | ||
.sleep(100); | ||
}); | ||
@@ -60,0 +61,0 @@ |
require('../helpers/setup'); | ||
var _ = require('lodash'); | ||
@@ -4,0 +3,0 @@ |
@@ -125,3 +125,3 @@ /* global sauceJobTitle, mergeDesired, midwayUrl, Express */ | ||
}; | ||
if(newConfig.retryDelay = wdCurrent.retryDelay) { newConfig.retryDelay++; } | ||
if(newConfig.retryDelay === wdCurrent.retryDelay) { newConfig.retryDelay++; } | ||
return browser | ||
@@ -193,3 +193,3 @@ .configureHttp( newConfig).then(function() { | ||
}) | ||
.configureHttp({baseUrl: baseUrl}) | ||
.configureHttp({baseUrl: baseUrl}) | ||
.get(relUrl).title().should.eventually.include('WD Tests - config-http') | ||
@@ -196,0 +196,0 @@ .get(url).title().should.eventually.include('WD Tests - config-http'); |
@@ -27,3 +27,2 @@ /* global sauceJobTitle, mergeDesired */ | ||
browser = wd.promiseChainRemote(env.REMOTE_CONFIG); | ||
setTimeout(function(){ console.log('timeout'); }, 500); | ||
return browser.configureLogging(); | ||
@@ -30,0 +29,0 @@ }); |
@@ -60,4 +60,4 @@ require('../helpers/setup'); | ||
'setTimeout(function() {\n' + | ||
' $("#theDiv").append(' + | ||
'"<div class=\\"child\\" style=\\"display:none;\\">a waitFor child 1</div>' + | ||
' $("#theDiv").append(' + | ||
'"<div class=\\"child\\" style=\\"display:none;\\">a waitFor child 1</div>' + | ||
'<div class=\\"child\\">a waitFor child 2</div>");\n' + | ||
@@ -74,3 +74,3 @@ '}, arguments[0]);\n'; | ||
it('browser.waitForElements', function() { | ||
var childs = | ||
var childs = | ||
'<div class="child">child 1</div>' + | ||
@@ -82,3 +82,3 @@ '<div class="child">child 2</div>' + | ||
'setTimeout(function() {\n' + | ||
' $("#theDiv").append("' + childs.replace(/\"/g, '\\"' ) + '");\n' + | ||
' $("#theDiv").append("' + childs.replace(/"/g, '\\"' ) + '");\n' + | ||
'}, arguments[0]);\n'; | ||
@@ -104,3 +104,3 @@ | ||
it('browser.waitForElements - asserter', function() { | ||
var childs = | ||
var childs = | ||
'<div class="child">child 1</div>' + | ||
@@ -112,3 +112,3 @@ '<div class="child">child 2 OK</div>' + | ||
'setTimeout(function() {\n' + | ||
' $("#theDiv").append("' + childs.replace(/\"/g, '\\"' ) + '");\n' + | ||
' $("#theDiv").append("' + childs.replace(/"/g, '\\"' ) + '");\n' + | ||
'}, arguments[0]);\n'; | ||
@@ -163,3 +163,3 @@ | ||
it('browser.waitForElementsByCss', function() { | ||
var childs = | ||
var childs = | ||
'<div class="child">child 1</div>' + | ||
@@ -171,3 +171,3 @@ '<div class="child">child 2</div>' + | ||
'setTimeout(function() {\n' + | ||
' $("#theDiv").append("' + childs.replace(/\"/g, '\\"' ) + '");\n' + | ||
' $("#theDiv").append("' + childs.replace(/"/g, '\\"' ) + '");\n' + | ||
'}, arguments[0]);\n'; | ||
@@ -174,0 +174,0 @@ return browser |
@@ -43,3 +43,3 @@ require('../helpers/setup'); | ||
function(browser, cb) { | ||
browser.text(function(err, text) { | ||
browser.text(function(err) { | ||
if(err) { return cb(err); } | ||
@@ -46,0 +46,0 @@ cb( new Error("Pretending to be a timeout error"), false, "Error branch" ); |
@@ -10,3 +10,2 @@ var nock = require('nock'); | ||
server = nock('http://127.0.0.1:5555').filteringRequestBody(/.*/, '*'); | ||
server.log(console.log); | ||
server.post('/wd/hub/session', '*').reply(303, "OK", { | ||
@@ -67,3 +66,2 @@ 'Location': '/wd/hub/session/1234' | ||
server = nock('http://127.0.0.1:5555').filteringRequestBody(/.*/, '*'); | ||
server.log(console.log); | ||
server.post('/wd/hub/session', '*').reply(303, "OK", { | ||
@@ -70,0 +68,0 @@ 'Location': '/wd/hub/session/1234' |
@@ -13,3 +13,2 @@ var nock = require('nock'); | ||
server = nock('http://localhost:9515').filteringRequestBody(/.*/, '*'); | ||
server.log(console.log); | ||
server.post('/session', '*').reply(303, "OK", { | ||
@@ -46,8 +45,5 @@ 'Location': '/session/1234' | ||
server = nock('http://localhost:4444'); | ||
server.log(console.log); | ||
server | ||
.filteringRequestBody(function(requestBody) { | ||
requestBody = JSON.parse(requestBody); | ||
console.log(typeof requestBody); | ||
console.log(requestBody); | ||
should.not.exist(requestBody.desiredCapabilities.javascriptEnabled); | ||
@@ -75,2 +71,1 @@ should.not.exist(requestBody.desiredCapabilities.wdNoDefaults); | ||
}); | ||
@@ -574,3 +574,3 @@ var nock = require('nock'), | ||
}); | ||
var el; | ||
var el; // eslint-disable-line no-unused-vars | ||
return browser | ||
@@ -1677,3 +1677,3 @@ .elementById('random').then(function(_el) { el=_el; }) | ||
}); | ||
var el; | ||
var el; // eslint-disable-line no-unused-vars | ||
async.series([ | ||
@@ -1680,0 +1680,0 @@ function(done) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
15591
1020503
9
601
106
+ Addedfancy-log@^1.3.3
+ Addedgulp-mocha@^6.0.0
+ Addedansi-colors@1.1.0(transitive)
+ Addedansi-gray@0.1.1(transitive)
+ Addedansi-wrap@0.1.0(transitive)
+ Addedarchiver@3.1.1(transitive)
+ Addedarchiver-utils@2.1.0(transitive)
+ Addedarr-diff@4.0.0(transitive)
+ Addedarr-union@3.1.0(transitive)
+ Addedassign-symbols@1.0.0(transitive)
+ Addedasync@2.6.4(transitive)
+ Addedbl@4.1.0(transitive)
+ Addedbrowser-stdout@1.3.1(transitive)
+ Addedcolor-support@1.1.3(transitive)
+ Addedcommander@2.15.1(transitive)
+ Addedcompress-commons@2.1.1(transitive)
+ Addedcrc32-stream@3.0.1(transitive)
+ Addedcross-spawn@6.0.5(transitive)
+ Addeddargs@5.1.0(transitive)
+ Addeddebug@3.1.0(transitive)
+ Addeddiff@3.5.0(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedexeca@0.10.0(transitive)
+ Addedextend-shallow@3.0.2(transitive)
+ Addedfancy-log@1.3.3(transitive)
+ Addedget-stream@3.0.0(transitive)
+ Addedglob@7.1.2(transitive)
+ Addedgrowl@1.10.5(transitive)
+ Addedgulp-mocha@6.0.0(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedhe@1.1.1(transitive)
+ Addedis-extendable@1.0.1(transitive)
+ Addedis-plain-object@2.0.4(transitive)
+ Addedis-stream@1.1.0(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedisobject@3.0.1(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedlodash.defaults@4.2.0(transitive)
+ Addedlodash.difference@4.5.0(transitive)
+ Addedlodash.flatten@4.4.0(transitive)
+ Addedlodash.isplainobject@4.0.6(transitive)
+ Addedlodash.union@4.6.0(transitive)
+ Addedminimatch@3.0.4(transitive)
+ Addedminimist@0.0.8(transitive)
+ Addedmkdirp@0.5.1(transitive)
+ Addedmocha@5.2.0(transitive)
+ Addedms@2.0.0(transitive)
+ Addednice-try@1.0.5(transitive)
+ Addednormalize-path@3.0.0(transitive)
+ Addednpm-run-path@2.0.2(transitive)
+ Addedp-finally@1.0.0(transitive)
+ Addedparse-node-version@1.0.1(transitive)
+ Addedpath-key@2.0.1(transitive)
+ Addedplugin-error@1.0.1(transitive)
+ Addedq@1.5.1(transitive)
+ Addedreadable-stream@3.6.2(transitive)
+ Addedsemver@5.7.2(transitive)
+ Addedshebang-command@1.2.0(transitive)
+ Addedshebang-regex@1.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedstrip-eof@1.0.0(transitive)
+ Addedsupports-color@5.4.05.5.0(transitive)
+ Addedtar-stream@2.2.0(transitive)
+ Addedthrough2@2.0.5(transitive)
+ Addedtime-stamp@1.1.0(transitive)
+ Addedwhich@1.3.1(transitive)
+ Addedzip-stream@2.1.3(transitive)
- Removedarchiver@2.1.1(transitive)
- Removedarchiver-utils@1.3.0(transitive)
- Removedasync@2.0.1(transitive)
- Removedbl@1.2.3(transitive)
- Removedbuffer-alloc@1.2.0(transitive)
- Removedbuffer-alloc-unsafe@1.1.0(transitive)
- Removedbuffer-fill@1.0.0(transitive)
- Removedcompress-commons@1.2.2(transitive)
- Removedcrc32-stream@2.0.0(transitive)
- Removedlodash@4.17.11(transitive)
- Removednormalize-path@2.1.1(transitive)
- Removedq@1.4.1(transitive)
- Removedremove-trailing-separator@1.1.0(transitive)
- Removedtar-stream@1.6.2(transitive)
- Removedto-buffer@1.1.1(transitive)
- Removedzip-stream@1.2.0(transitive)
Updatedarchiver@^3.0.0
Updatedasync@^2.0.0
Updatedlodash@^4.0.0
Updatedq@^1.5.1
Updatedvargs@^0.1.0