UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

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