UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

86 lines (72 loc) 6.23 kB
/** * * 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'; var _getIterator = require('babel-runtime/core-js/get-iterator')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _utilsErrorHandler = require('../utils/ErrorHandler'); var waitForValue = function waitForValue(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.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 = _getIterator(value), _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 () { var isReversed = reverse ? 'with' : 'without'; throw new _utilsErrorHandler.CommandError('element (' + selector + ') still ' + isReversed + ' a value after ' + ms + 'ms'); }); }; exports['default'] = waitForValue; module.exports = exports['default']; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy93YWl0Rm9yVmFsdWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDQWdCNkIsdUJBQXVCOztBQUVwRCxJQUFJLFlBQVksR0FBRyxTQUFmLFlBQVksQ0FBYSxRQUFRLEVBQUUsRUFBRSxFQUFtQjs7O1FBQWpCLE9BQU8seURBQUcsS0FBSzs7Ozs7QUFJdEQsUUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7QUFDeEIsVUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFBO0tBQ25DOztBQUVELFdBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFNO0FBQ3hCLGVBQU8sTUFBSyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsS0FBSyxFQUFLO0FBQzNDLGdCQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN2Qix1QkFBTyxBQUFDLEtBQUssS0FBSyxFQUFFLEtBQU0sT0FBTyxDQUFBO2FBQ3BDOztBQUVELGdCQUFJLE1BQU0sR0FBRyxPQUFPLENBQUE7Ozs7OztBQUNwQixrREFBZ0IsS0FBSyw0R0FBRTt3QkFBZCxHQUFHOztBQUNSLHdCQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1YsOEJBQU0sR0FBRyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQTtxQkFDaEMsTUFBTTtBQUNILDhCQUFNLEdBQUcsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUE7cUJBQ2hDO2lCQUNKOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUQsbUJBQU8sTUFBTSxLQUFLLE9BQU8sQ0FBQTtTQUM1QixDQUFDLENBQUE7S0FDTCxFQUFFLEVBQUUsQ0FBQyxTQUFNLENBQUMsWUFBTTtBQUNmLFlBQUksVUFBVSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFBO0FBQzdDLGNBQU0sa0RBQTZCLFFBQVEsZ0JBQVcsVUFBVSx1QkFBa0IsRUFBRSxRQUFLLENBQUE7S0FDNUYsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7cUJBRWMsWUFBWSIsImZpbGUiOiJ3YWl0Rm9yVmFsdWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBXYWl0IGZvciBhbiBlbGVtZW50IChzZWxlY3RlZCBieSBjc3Mgc2VsZWN0b3IpIGZvciB0aGUgcHJvdmlkZWQgYW1vdW50IG9mXG4gKiBtaWxsaXNlY29uZHMgdG8gaGF2ZSBhIHZhbHVlLiBJZiBtdWx0aXBsZSBlbGVtZW50cyBnZXQgcXVlcnlpZWQgYnkgZ2l2ZW5cbiAqIHNlbGVjdG9yLCBpdCByZXR1cm5zIHRydWUgKG9yIGZhbHNlIGlmIHJldmVyc2UgZmxhZyBpcyBzZXQpIGlmIGF0IGxlYXN0IG9uZVxuICogZWxlbWVudCBoYXMgYSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gICBzZWxlY3RvciBlbGVtZW50IHRvIHdhaXRcbiAqIEBwYXJhbSB7TnVtYmVyPX0gIG1zICAgICAgIHRpbWUgaW4gbXMgKGRlZmF1bHQ6IDUwMClcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IHJldmVyc2UgIGlmIHRydWUgaXQgd2FpdHMgZm9yIHRoZSBvcHBvc2l0ZSAoZGVmYXVsdDogZmFsc2UpXG4gKlxuICogQHVzZXMgcHJvdG9jb2wvc2VsZWN0b3JFeGVjdXRlQXN5bmMsIHByb3RvY29sL3RpbWVvdXRzQXN5bmNTY3JpcHRcbiAqIEB0eXBlIHV0aWxpdHlcbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgd2FpdEZvclZhbHVlID0gZnVuY3Rpb24gKHNlbGVjdG9yLCBtcywgcmV2ZXJzZSA9IGZhbHNlKSB7XG4gICAgLyohXG4gICAgICogZW5zdXJlIHRoYXQgbXMgaXMgc2V0IHByb3Blcmx5XG4gICAgICovXG4gICAgaWYgKHR5cGVvZiBtcyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgbXMgPSB0aGlzLm9wdGlvbnMud2FpdGZvclRpbWVvdXRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy53YWl0VW50aWwoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZShzZWxlY3RvcikudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHZhbHVlICE9PSAnJykgIT09IHJldmVyc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHJldmVyc2VcbiAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgdmFsICE9PSAnJ1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB2YWwgPT09ICcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICE9PSByZXZlcnNlXG4gICAgICAgIH0pXG4gICAgfSwgbXMpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgbGV0IGlzUmV2ZXJzZWQgPSByZXZlcnNlID8gJ3dpdGgnIDogJ3dpdGhvdXQnXG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoYGVsZW1lbnQgKCR7c2VsZWN0b3J9KSBzdGlsbCAke2lzUmV2ZXJzZWR9IGEgdmFsdWUgYWZ0ZXIgJHttc31tc2ApXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdEZvclZhbHVlXG4iXX0=