diff options
Diffstat (limited to 'tasks/common.js')
-rw-r--r-- | tasks/common.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tasks/common.js b/tasks/common.js new file mode 100644 index 0000000..d4ba658 --- /dev/null +++ b/tasks/common.js @@ -0,0 +1,87 @@ +var args = require('yargs').argv; +var chalk = require('chalk'); +var wct = require('web-component-tester').test; +var _ = require('lodash'); +var gutil = require('gulp-util'); + +function cleanDone(done) { + return function(error) { + if (error) { + // Pretty error for gulp. + error = new Error(chalk.red(error.message || error)); + error.showStack = false; + } + done(error); + }; +} + +function checkArguments(arguments) { + _.forEach(arguments, function(a) { + if(!args.hasOwnProperty(a)) { + throw Error('Required argument \'--'+ a +'\' is missing.'); + } + }); +} + +function localAddress() { + var ip, tun, ifaces = require('os').networkInterfaces(); + Object.keys(ifaces).forEach(function (ifname) { + ifaces[ifname].forEach(function (iface) { + if ('IPv4' == iface.family && !iface.internal) { + if (!ip) ip = iface.address; + if (/tun/.test(ifname)) tun = iface.address; + } + }); + }); + return tun || ip; +} + +function test(options, done) { + wct(options, cleanDone(done)); +} + +module.exports = { + localAddress: localAddress, + test: test, + checkArguments: checkArguments, + + testSauce: function(suites, browsers, build, done) { + test( + { + suites: suites, + browserOptions: { + name: localAddress() + ' / ' + new Date(), + build: build + }, + + plugins: { + //local: { + // browsers: ['chrome'] + //}, + sauce: { + username: args.sauceUsername, + accessKey: args.sauceAccessKey, + browsers: browsers + }, + 'teamcity-reporter': args.teamcity + }, + webserver: { + hostname: localAddress() + } + }, done); + }, + + autoRevert: function(err, handler, done) { + if(err) { + gutil.log(err.toString()); + if(args.autoRevert) { + handler(); + } else { + gutil.log('No action. Use --auto-revert to revert changes.') + done(err); + } + } else { + done(); + } + } +}; |