/**
*
* Wait for an element (selected by css selector) for the provided amount of
* milliseconds to have a value. If multiple elements get queryied by given
* selector, it returns true (or false if reverse flag is set) if at least one
* element has a value.
*
* @param {String} selector element to wait
* @param {Number=} ms time in ms (default: 500)
* @param {Boolean=} reverse if true it waits for the opposite (default: false)
*
* @uses protocol/selectorExecuteAsync, protocol/timeoutsAsyncScript
* @type utility
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var waitForValue = function waitForValue(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.getValue(selector).then(function (value) {
if (!Array.isArray(value)) {
return value !== '' !== reverse;
}
var result = reverse;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = value[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 ? 'with' : 'without';
throw new _utilsErrorHandler.CommandError('element (' + selector + ') still ' + isReversed + ' a value after ' + ms + 'ms');
}
throw e;
});
};
exports['default'] = waitForValue;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvd2FpdEZvclZhbHVlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBZ0I2Qix1QkFBdUI7O0FBRXBELElBQUksWUFBWSxHQUFHLFNBQWYsWUFBWSxDQUFhLFFBQVEsRUFBRSxFQUFFLEVBQW1COzs7OztRQUFqQixPQUFPLHlEQUFHLEtBQUs7Ozs7O0FBSXRELFFBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFO0FBQ3hCLFVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQTtLQUNuQzs7QUFFRCxXQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBTTtBQUN4QixlQUFPLE1BQUssUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUssRUFBSztBQUMzQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdkIsdUJBQU8sQUFBQyxLQUFLLEtBQUssRUFBRSxLQUFNLE9BQU8sQ0FBQTthQUNwQzs7QUFFRCxnQkFBSSxNQUFNLEdBQUcsT0FBTyxDQUFBOzs7Ozs7QUFDcEIscUNBQWdCLEtBQUssOEhBQUU7d0JBQWQsR0FBRzs7QUFDUix3QkFBSSxDQUFDLE9BQU8sRUFBRTtBQUNWLDhCQUFNLEdBQUcsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUE7cUJBQ2hDLE1BQU07QUFDSCw4QkFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFBO3FCQUNoQztpQkFDSjs7Ozs7Ozs7Ozs7Ozs7OztBQUVELG1CQUFPLE1BQU0sS0FBSyxPQUFPLENBQUE7U0FDNUIsQ0FBQyxDQUFBO0tBQ0wsRUFBRSxFQUFFLENBQUMsU0FBTSxDQUFDLFVBQUMsQ0FBQyxFQUFLO0FBQ2hCLFlBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyw2Q0FBNkMsRUFBRTtBQUM3RCxnQkFBSSxVQUFVLEdBQUcsT0FBTyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUE7QUFDN0Msa0JBQU0sa0RBQTZCLFFBQVEsZ0JBQVcsVUFBVSx1QkFBa0IsRUFBRSxRQUFLLENBQUE7U0FDNUY7QUFDRCxjQUFNLENBQUMsQ0FBQTtLQUNWLENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLFlBQVkiLCJmaWxlIjoiL1VzZXJzL2NocmlzdGlhbmJyb21hbm4vU2l0ZXMvV2VicHJvamVrdGUvd2ViZHJpdmVyanMvREVWL2xpYi9jb21tYW5kcy93YWl0Rm9yVmFsdWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBXYWl0IGZvciBhbiBlbGVtZW50IChzZWxlY3RlZCBieSBjc3Mgc2VsZWN0b3IpIGZvciB0aGUgcHJvdmlkZWQgYW1vdW50IG9mXG4gKiBtaWxsaXNlY29uZHMgdG8gaGF2ZSBhIHZhbHVlLiBJZiBtdWx0aXBsZSBlbGVtZW50cyBnZXQgcXVlcnlpZWQgYnkgZ2l2ZW5cbiAqIHNlbGVjdG9yLCBpdCByZXR1cm5zIHRydWUgKG9yIGZhbHNlIGlmIHJldmVyc2UgZmxhZyBpcyBzZXQpIGlmIGF0IGxlYXN0IG9uZVxuICogZWxlbWVudCBoYXMgYSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gICBzZWxlY3RvciBlbGVtZW50IHRvIHdhaXRcbiAqIEBwYXJhbSB7TnVtYmVyPX0gIG1zICAgICAgIHRpbWUgaW4gbXMgKGRlZmF1bHQ6IDUwMClcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IHJldmVyc2UgIGlmIHRydWUgaXQgd2FpdHMgZm9yIHRoZSBvcHBvc2l0ZSAoZGVmYXVsdDogZmFsc2UpXG4gKlxuICogQHVzZXMgcHJvdG9jb2wvc2VsZWN0b3JFeGVjdXRlQXN5bmMsIHByb3RvY29sL3RpbWVvdXRzQXN5bmNTY3JpcHRcbiAqIEB0eXBlIHV0aWxpdHlcbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgd2FpdEZvclZhbHVlID0gZnVuY3Rpb24gKHNlbGVjdG9yLCBtcywgcmV2ZXJzZSA9IGZhbHNlKSB7XG4gICAgLyohXG4gICAgICogZW5zdXJlIHRoYXQgbXMgaXMgc2V0IHByb3Blcmx5XG4gICAgICovXG4gICAgaWYgKHR5cGVvZiBtcyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgbXMgPSB0aGlzLm9wdGlvbnMud2FpdGZvclRpbWVvdXRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy53YWl0VW50aWwoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZShzZWxlY3RvcikudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlICE9PSAnJykgIT09IHJldmVyc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHJldmVyc2VcbiAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgdmFsICE9PSAnJ1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB2YWwgPT09ICcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICE9PSByZXZlcnNlXG4gICAgICAgIH0pXG4gICAgfSwgbXMpLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGlmIChlLm1lc3NhZ2UgPT09ICdQcm9taXNlIG5ldmVyIHJlc29sdmVkIHdpdGggYW4gdHJ1dGh5IHZhbHVlJykge1xuICAgICAgICAgICAgbGV0IGlzUmV2ZXJzZWQgPSByZXZlcnNlID8gJ3dpdGgnIDogJ3dpdGhvdXQnXG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBlbGVtZW50ICgke3NlbGVjdG9yfSkgc3RpbGwgJHtpc1JldmVyc2VkfSBhIHZhbHVlIGFmdGVyICR7bXN9bXNgKVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB3YWl0Rm9yVmFsdWVcbiJdfQ== |