derby-webdriverio
Version:
Webdriver.io for Derby.js
86 lines (76 loc) • 2.3 kB
JavaScript
// 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);