@testim/testim-cli
Version:
Command line interface for running Testing on you CI
86 lines (72 loc) • 6.21 kB
JavaScript
/**
*
* Wait for an element (selected by css selector) for the provided amount of
* milliseconds to be (dis/en)abled. If multiple elements get queryied by given
* selector, it returns true (or false if reverse flag is set) if at least one
* element is (dis/en)abled.
*
* @param {String} selector element to wait for
* @param {Number=} ms time in ms (default: 500)
* @param {Boolean=} reverse if true it waits for the opposite (default: false)
*
* @uses action/selectorExecuteAsync, protocol/timeoutsAsyncScript
* @type utility
*
*/
;
var _getIterator = require('babel-runtime/core-js/get-iterator')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var waitForEnabled = function waitForEnabled(selector, ms) {
var _this = this;
var reverse = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
/*!
* ensure that ms is set properly
*/
if (typeof ms !== 'number') {
ms = this.options.waitforTimeout;
}
return this.waitUntil(function () {
return _this.isEnabled(selector).then(function (isEnabled) {
if (!Array.isArray(isEnabled)) {
return isEnabled !== reverse;
}
var result = reverse;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = _getIterator(isEnabled), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var val = _step.value;
if (!reverse) {
result = result || val;
} else {
result = result && val;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator['return']) {
_iterator['return']();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return result !== reverse;
});
}, ms)['catch'](function (e) {
var isReversed = reverse ? '' : 'not';
throw new _utilsErrorHandler.CommandError('element (' + selector + ') still ' + isReversed + ' enabled after ' + ms + 'ms');
});
};
exports['default'] = waitForEnabled;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy93YWl0Rm9yRW5hYmxlZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBZ0I2Qix1QkFBdUI7O0FBRXBELElBQUksY0FBYyxHQUFHLFNBQWpCLGNBQWMsQ0FBYSxRQUFRLEVBQUUsRUFBRSxFQUFtQjs7O1FBQWpCLE9BQU8seURBQUcsS0FBSzs7Ozs7QUFJeEQsUUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7QUFDeEIsVUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFBO0tBQ25DOztBQUVELFdBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFNO0FBQ3hCLGVBQU8sTUFBSyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsU0FBUyxFQUFLO0FBQ2hELGdCQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtBQUMzQix1QkFBTyxTQUFTLEtBQUssT0FBTyxDQUFBO2FBQy9COztBQUVELGdCQUFJLE1BQU0sR0FBRyxPQUFPLENBQUE7Ozs7OztBQUNwQixrREFBZ0IsU0FBUyw0R0FBRTt3QkFBbEIsR0FBRzs7QUFDUix3QkFBSSxDQUFDLE9BQU8sRUFBRTtBQUNWLDhCQUFNLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQTtxQkFDekIsTUFBTTtBQUNILDhCQUFNLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQTtxQkFDekI7aUJBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFRCxtQkFBTyxNQUFNLEtBQUssT0FBTyxDQUFBO1NBQzVCLENBQUMsQ0FBQTtLQUNMLEVBQUUsRUFBRSxDQUFDLFNBQU0sQ0FBQyxVQUFDLENBQUMsRUFBSztBQUNoQixZQUFJLFVBQVUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQTtBQUNyQyxjQUFNLGtEQUE2QixRQUFRLGdCQUFXLFVBQVUsdUJBQWtCLEVBQUUsUUFBSyxDQUFBO0tBQzVGLENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLGNBQWMiLCJmaWxlIjoid2FpdEZvckVuYWJsZWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBXYWl0IGZvciBhbiBlbGVtZW50IChzZWxlY3RlZCBieSBjc3Mgc2VsZWN0b3IpIGZvciB0aGUgcHJvdmlkZWQgYW1vdW50IG9mXG4gKiBtaWxsaXNlY29uZHMgdG8gYmUgKGRpcy9lbilhYmxlZC4gSWYgbXVsdGlwbGUgZWxlbWVudHMgZ2V0IHF1ZXJ5aWVkIGJ5IGdpdmVuXG4gKiBzZWxlY3RvciwgaXQgcmV0dXJucyB0cnVlIChvciBmYWxzZSBpZiByZXZlcnNlIGZsYWcgaXMgc2V0KSBpZiBhdCBsZWFzdCBvbmVcbiAqIGVsZW1lbnQgaXMgKGRpcy9lbilhYmxlZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gICBzZWxlY3RvciBlbGVtZW50IHRvIHdhaXQgZm9yXG4gKiBAcGFyYW0ge051bWJlcj19ICBtcyAgICAgICB0aW1lIGluIG1zIChkZWZhdWx0OiA1MDApXG4gKiBAcGFyYW0ge0Jvb2xlYW49fSByZXZlcnNlICBpZiB0cnVlIGl0IHdhaXRzIGZvciB0aGUgb3Bwb3NpdGUgKGRlZmF1bHQ6IGZhbHNlKVxuICpcbiAqIEB1c2VzIGFjdGlvbi9zZWxlY3RvckV4ZWN1dGVBc3luYywgcHJvdG9jb2wvdGltZW91dHNBc3luY1NjcmlwdFxuICogQHR5cGUgdXRpbGl0eVxuICpcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCB3YWl0Rm9yRW5hYmxlZCA9IGZ1bmN0aW9uIChzZWxlY3RvciwgbXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIC8qIVxuICAgICAqIGVuc3VyZSB0aGF0IG1zIGlzIHNldCBwcm9wZXJseVxuICAgICAqL1xuICAgIGlmICh0eXBlb2YgbXMgIT09ICdudW1iZXInKSB7XG4gICAgICAgIG1zID0gdGhpcy5vcHRpb25zLndhaXRmb3JUaW1lb3V0XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMud2FpdFVudGlsKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbmFibGVkKHNlbGVjdG9yKS50aGVuKChpc0VuYWJsZWQpID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpc0VuYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRW5hYmxlZCAhPT0gcmV2ZXJzZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmV2ZXJzZVxuICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIGlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgdmFsXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHZhbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCAhPT0gcmV2ZXJzZVxuICAgICAgICB9KVxuICAgIH0sIG1zKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBsZXQgaXNSZXZlcnNlZCA9IHJldmVyc2UgPyAnJyA6ICdub3QnXG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoYGVsZW1lbnQgKCR7c2VsZWN0b3J9KSBzdGlsbCAke2lzUmV2ZXJzZWR9IGVuYWJsZWQgYWZ0ZXIgJHttc31tc2ApXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdEZvckVuYWJsZWRcbiJdfQ==