@testim/testim-cli
Version:
Command line interface for running Testing on you CI
86 lines (72 loc) • 6.23 kB
JavaScript
/**
*
* Wait for an element (selected by css selector) for the provided amount of
* milliseconds to have text/content. If multiple elements get queryied by given
* selector, it returns true (or false if reverse flag is set) if at least one
* element has text/content.
*
* @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 waitForText = function waitForText(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.getText(selector).then(function (text) {
if (!Array.isArray(text)) {
return text !== '' !== reverse;
}
var result = reverse;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = _getIterator(text), _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 + ' text after ' + ms + 'ms');
});
};
exports['default'] = waitForText;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy93YWl0Rm9yVGV4dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBZ0I2Qix1QkFBdUI7O0FBRXBELElBQUksV0FBVyxHQUFHLFNBQWQsV0FBVyxDQUFhLFFBQVEsRUFBRSxFQUFFLEVBQW1COzs7UUFBakIsT0FBTyx5REFBRyxLQUFLOzs7OztBQUlyRCxRQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtBQUN4QixVQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUE7S0FDbkM7O0FBRUQsV0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQU07QUFDeEIsZUFBTyxNQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJLEVBQUs7QUFDekMsZ0JBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RCLHVCQUFPLEFBQUMsSUFBSSxLQUFLLEVBQUUsS0FBTSxPQUFPLENBQUE7YUFDbkM7O0FBRUQsZ0JBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQTs7Ozs7O0FBQ3BCLGtEQUFnQixJQUFJLDRHQUFFO3dCQUFiLEdBQUc7O0FBQ1Isd0JBQUksQ0FBQyxPQUFPLEVBQUU7QUFDViw4QkFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFBO3FCQUNoQyxNQUFNO0FBQ0gsOEJBQU0sR0FBRyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQTtxQkFDaEM7aUJBQ0o7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFRCxtQkFBTyxNQUFNLEtBQUssT0FBTyxDQUFBO1NBQzVCLENBQUMsQ0FBQTtLQUNMLEVBQUUsRUFBRSxDQUFDLFNBQU0sQ0FBQyxZQUFNO0FBQ2YsWUFBSSxVQUFVLEdBQUcsT0FBTyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUE7QUFDN0MsY0FBTSxrREFBNkIsUUFBUSxnQkFBVyxVQUFVLG9CQUFlLEVBQUUsUUFBSyxDQUFBO0tBQ3pGLENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLFdBQVciLCJmaWxlIjoid2FpdEZvclRleHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBXYWl0IGZvciBhbiBlbGVtZW50IChzZWxlY3RlZCBieSBjc3Mgc2VsZWN0b3IpIGZvciB0aGUgcHJvdmlkZWQgYW1vdW50IG9mXG4gKiBtaWxsaXNlY29uZHMgdG8gaGF2ZSB0ZXh0L2NvbnRlbnQuIElmIG11bHRpcGxlIGVsZW1lbnRzIGdldCBxdWVyeWllZCBieSBnaXZlblxuICogc2VsZWN0b3IsIGl0IHJldHVybnMgdHJ1ZSAob3IgZmFsc2UgaWYgcmV2ZXJzZSBmbGFnIGlzIHNldCkgaWYgYXQgbGVhc3Qgb25lXG4gKiBlbGVtZW50IGhhcyB0ZXh0L2NvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9ICAgc2VsZWN0b3IgZWxlbWVudCB0byB3YWl0IGZvclxuICogQHBhcmFtIHtOdW1iZXI9fSAgbXMgICAgICAgdGltZSBpbiBtcyAoZGVmYXVsdDogNTAwKVxuICogQHBhcmFtIHtCb29sZWFuPX0gcmV2ZXJzZSAgaWYgdHJ1ZSBpdCB3YWl0cyBmb3IgdGhlIG9wcG9zaXRlIChkZWZhdWx0OiBmYWxzZSlcbiAqXG4gKiBAdXNlcyBhY3Rpb24vc2VsZWN0b3JFeGVjdXRlQXN5bmMsIHByb3RvY29sL3RpbWVvdXRzQXN5bmNTY3JpcHRcbiAqIEB0eXBlIHV0aWxpdHlcbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgd2FpdEZvclRleHQgPSBmdW5jdGlvbiAoc2VsZWN0b3IsIG1zLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICAvKiFcbiAgICAgKiBlbnN1cmUgdGhhdCBtcyBpcyBzZXQgcHJvcGVybHlcbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIG1zICE9PSAnbnVtYmVyJykge1xuICAgICAgICBtcyA9IHRoaXMub3B0aW9ucy53YWl0Zm9yVGltZW91dFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLndhaXRVbnRpbCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRleHQoc2VsZWN0b3IpLnRoZW4oKHRleHQpID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodGV4dCAhPT0gJycpICE9PSByZXZlcnNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZXN1bHQgPSByZXZlcnNlXG4gICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdGV4dCkge1xuICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgdmFsICE9PSAnJ1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB2YWwgPT09ICcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICE9PSByZXZlcnNlXG4gICAgICAgIH0pXG4gICAgfSwgbXMpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgbGV0IGlzUmV2ZXJzZWQgPSByZXZlcnNlID8gJ3dpdGgnIDogJ3dpdGhvdXQnXG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoYGVsZW1lbnQgKCR7c2VsZWN0b3J9KSBzdGlsbCAke2lzUmV2ZXJzZWR9IHRleHQgYWZ0ZXIgJHttc31tc2ApXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdEZvclRleHRcbiJdfQ==