UNPKG

derby-webdriverio

Version:
86 lines (76 loc) 2.3 kB
// Generated by CoffeeScript 1.12.7 /* * Original: grunt-wait-server * https://github.com/imyelo/grunt-wait-server */ (function() { var Bluebird, defaults, net, once, request; net = require('net'); request = require('request'); once = require('once'); defaults = require('lodash/defaults'); Bluebird = require('bluebird'); module.exports = function(options) { return new Bluebird(function(resolve, reject) { var callback, client, err, wait; options = defaults({}, options, { timeout: 10 * 1000, interval: 800, print: true }); if (!options.req && !options.net) { err = '[derby-webdriverio] requires the req or net option'; console.error(err); return reject(err); } client = null; callback = once(function(isTimeout) { if (options.print) { console.log(); } if (isTimeout) { err = '[derby-webdriverio] server timeout'; console.error(err); return reject(err); } if (options.print) { console.log('[derby-webdriverio] Server is ready.'); } return resolve(); }); wait = function(callback) { var tryConnection; if (options.print) { process.stdout.write('[derby-webdriverio] Waiting for the server'); } tryConnection = function() { if (options.print) { process.stdout.write('.'); } if (options.req) { return request(options.req, function(err) { if (!err) { return callback(); } return setTimeout(tryConnection, options.interval); }); } else if (options.net) { client = net.connect(options.net, function() { client.destroy(); return callback(); }); return client.on('error', function() { client.destroy(); return setTimeout(tryConnection, options.interval); }); } }; return tryConnection(); }; wait(callback); if (options.timeout > 0) { return setTimeout(callback.bind(null, true), options.timeout); } }); }; }).call(this);