/**
*
* Wait for an element (selected by css selector) for the provided amount of
* milliseconds to be present within the DOM. Returns true if the selector
* matches at least one element that exists in the DOM. If the reverse flag
* is true, the command will instead return true if the selector does not
* match any elements.
*
* @param {String} selector CSS selector to query
* @param {Number=} ms time in ms (default: 500)
* @param {Boolean=} reverse if true it instead waits for the selector to not match any elements (default: false)
*
* @type utility
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var waitForExist = function waitForExist(selector, ms) {
// istanbul ignore next
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.isExisting(selector).then(function (isExisting) {
if (!Array.isArray(isExisting)) {
return isExisting !== reverse;
}
var result = reverse;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = isExisting[Symbol.iterator](), _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) {
if (e.message === 'Promise never resolved with an truthy value') {
var isReversed = reverse ? '' : 'not';
throw new _utilsErrorHandler.CommandError('element (' + selector + ') still ' + isReversed + ' existing after ' + ms + 'ms');
}
throw e;
});
};
exports['default'] = waitForExist;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvd2FpdEZvckV4aXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBZ0I2Qix1QkFBdUI7O0FBRXBELElBQUksWUFBWSxHQUFHLFNBQWYsWUFBWSxDQUFhLFFBQVEsRUFBRSxFQUFFLEVBQW1COzs7OztRQUFqQixPQUFPLHlEQUFHLEtBQUs7Ozs7O0FBSXRELFFBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO0FBQ3hCLFVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQTtLQUNuQzs7QUFFRCxXQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBTTtBQUN4QixlQUFPLE1BQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLFVBQVUsRUFBSztBQUNsRCxnQkFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDNUIsdUJBQU8sVUFBVSxLQUFLLE9BQU8sQ0FBQTthQUNoQzs7QUFFRCxnQkFBSSxNQUFNLEdBQUcsT0FBTyxDQUFBOzs7Ozs7QUFDcEIscUNBQWdCLFVBQVUsOEhBQUU7d0JBQW5CLEdBQUc7O0FBQ1Isd0JBQUksQ0FBQyxPQUFPLEVBQUU7QUFDViw4QkFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUE7cUJBQ3pCLE1BQU07QUFDSCw4QkFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUE7cUJBQ3pCO2lCQUNKOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUQsbUJBQU8sTUFBTSxLQUFLLE9BQU8sQ0FBQTtTQUM1QixDQUFDLENBQUE7S0FDTCxFQUFFLEVBQUUsQ0FBQyxTQUFNLENBQUMsVUFBQyxDQUFDLEVBQUs7QUFDaEIsWUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLDZDQUE2QyxFQUFFO0FBQzdELGdCQUFJLFVBQVUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQTtBQUNyQyxrQkFBTSxrREFBNkIsUUFBUSxnQkFBVyxVQUFVLHdCQUFtQixFQUFFLFFBQUssQ0FBQTtTQUM3RjtBQUNELGNBQU0sQ0FBQyxDQUFBO0tBQ1YsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7cUJBRWMsWUFBWSIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL2NvbW1hbmRzL3dhaXRGb3JFeGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFdhaXQgZm9yIGFuIGVsZW1lbnQgKHNlbGVjdGVkIGJ5IGNzcyBzZWxlY3RvcikgZm9yIHRoZSBwcm92aWRlZCBhbW91bnQgb2ZcbiAqIG1pbGxpc2Vjb25kcyB0byBiZSBwcmVzZW50IHdpdGhpbiB0aGUgRE9NLiBSZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdG9yXG4gKiBtYXRjaGVzIGF0IGxlYXN0IG9uZSBlbGVtZW50IHRoYXQgZXhpc3RzIGluIHRoZSBET00uIElmIHRoZSByZXZlcnNlIGZsYWdcbiAqIGlzIHRydWUsIHRoZSBjb21tYW5kIHdpbGwgaW5zdGVhZCByZXR1cm4gdHJ1ZSBpZiB0aGUgc2VsZWN0b3IgZG9lcyBub3RcbiAqIG1hdGNoIGFueSBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gICBzZWxlY3RvciBDU1Mgc2VsZWN0b3IgdG8gcXVlcnlcbiAqIEBwYXJhbSB7TnVtYmVyPX0gIG1zICAgICAgIHRpbWUgaW4gbXMgKGRlZmF1bHQ6IDUwMClcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IHJldmVyc2UgIGlmIHRydWUgaXQgaW5zdGVhZCB3YWl0cyBmb3IgdGhlIHNlbGVjdG9yIHRvIG5vdCBtYXRjaCBhbnkgZWxlbWVudHMgKGRlZmF1bHQ6IGZhbHNlKVxuICpcbiAqIEB0eXBlIHV0aWxpdHlcbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgd2FpdEZvckV4aXN0ID0gZnVuY3Rpb24gKHNlbGVjdG9yLCBtcywgcmV2ZXJzZSA9IGZhbHNlKSB7XG4gICAgLyohXG4gICAgICogZW5zdXJlIHRoYXQgbXMgaXMgc2V0IHByb3Blcmx5XG4gICAgICovXG4gICAgaWYgKHR5cGVvZiBtcyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgbXMgPSB0aGlzLm9wdGlvbnMud2FpdGZvclRpbWVvdXRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy53YWl0VW50aWwoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0V4aXN0aW5nKHNlbGVjdG9yKS50aGVuKChpc0V4aXN0aW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXNFeGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNFeGlzdGluZyAhPT0gcmV2ZXJzZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gcmV2ZXJzZVxuICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIGlzRXhpc3RpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJldmVyc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHZhbFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB2YWxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgIT09IHJldmVyc2VcbiAgICAgICAgfSlcbiAgICB9LCBtcykuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gJ1Byb21pc2UgbmV2ZXIgcmVzb2x2ZWQgd2l0aCBhbiB0cnV0aHkgdmFsdWUnKSB7XG4gICAgICAgICAgICBsZXQgaXNSZXZlcnNlZCA9IHJldmVyc2UgPyAnJyA6ICdub3QnXG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBlbGVtZW50ICgke3NlbGVjdG9yfSkgc3RpbGwgJHtpc1JldmVyc2VkfSBleGlzdGluZyBhZnRlciAke21zfW1zYClcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdEZvckV4aXN0XG4iXX0= |