UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

85 lines (71 loc) 6.3 kB
/** * * Wait for an option or radio/checkbox element (selected by css selector) for the provided amount of * milliseconds to be (un)selected or (un)checked. If multiple elements get queryied by given * selector, it returns true (or false if reverse flag is set) if at least one element is (un)selected. * * @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 * */ 'use strict'; var _getIterator = require('babel-runtime/core-js/get-iterator')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _utilsErrorHandler = require('../utils/ErrorHandler'); var waitForSelected = function waitForSelected(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.isSelected(selector).then(function (isSelected) { if (!Array.isArray(isSelected)) { return isSelected !== reverse; } var result = reverse; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = _getIterator(isSelected), _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 + ' selected after ' + ms + 'ms'); }); }; exports['default'] = waitForSelected; module.exports = exports['default']; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy93YWl0Rm9yU2VsZWN0ZWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUNBZTZCLHVCQUF1Qjs7QUFFcEQsSUFBSSxlQUFlLEdBQUcsU0FBbEIsZUFBZSxDQUFhLFFBQVEsRUFBRSxFQUFFLEVBQW1COzs7UUFBakIsT0FBTyx5REFBRyxLQUFLOzs7OztBQUl6RCxRQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtBQUN4QixVQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUE7S0FDbkM7O0FBRUQsV0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQU07QUFDeEIsZUFBTyxNQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxVQUFVLEVBQUs7QUFDbEQsZ0JBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzVCLHVCQUFPLFVBQVUsS0FBSyxPQUFPLENBQUE7YUFDaEM7O0FBRUQsZ0JBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQTs7Ozs7O0FBQ3BCLGtEQUFnQixVQUFVLDRHQUFFO3dCQUFuQixHQUFHOztBQUNSLHdCQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1YsOEJBQU0sR0FBRyxNQUFNLElBQUksR0FBRyxDQUFBO3FCQUN6QixNQUFNO0FBQ0gsOEJBQU0sR0FBRyxNQUFNLElBQUksR0FBRyxDQUFBO3FCQUN6QjtpQkFDSjs7Ozs7Ozs7Ozs7Ozs7OztBQUVELG1CQUFPLE1BQU0sS0FBSyxPQUFPLENBQUE7U0FDNUIsQ0FBQyxDQUFBO0tBQ0wsRUFBRSxFQUFFLENBQUMsU0FBTSxDQUFDLFlBQU07QUFDZixZQUFJLFVBQVUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQTtBQUNyQyxjQUFNLGtEQUE2QixRQUFRLGdCQUFXLFVBQVUsd0JBQW1CLEVBQUUsUUFBSyxDQUFBO0tBQzdGLENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLGVBQWUiLCJmaWxlIjoid2FpdEZvclNlbGVjdGVkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogV2FpdCBmb3IgYW4gb3B0aW9uIG9yIHJhZGlvL2NoZWNrYm94IGVsZW1lbnQgKHNlbGVjdGVkIGJ5IGNzcyBzZWxlY3RvcikgZm9yIHRoZSBwcm92aWRlZCBhbW91bnQgb2ZcbiAqIG1pbGxpc2Vjb25kcyB0byBiZSAodW4pc2VsZWN0ZWQgb3IgKHVuKWNoZWNrZWQuIElmIG11bHRpcGxlIGVsZW1lbnRzIGdldCBxdWVyeWllZCBieSBnaXZlblxuICogc2VsZWN0b3IsIGl0IHJldHVybnMgdHJ1ZSAob3IgZmFsc2UgaWYgcmV2ZXJzZSBmbGFnIGlzIHNldCkgaWYgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaXMgKHVuKXNlbGVjdGVkLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAgIHNlbGVjdG9yIGVsZW1lbnQgdG8gd2FpdCBmb3JcbiAqIEBwYXJhbSB7TnVtYmVyPX0gIG1zICAgICAgIHRpbWUgaW4gbXMgKGRlZmF1bHQ6IDUwMClcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IHJldmVyc2UgIGlmIHRydWUgaXQgd2FpdHMgZm9yIHRoZSBvcHBvc2l0ZSAoZGVmYXVsdDogZmFsc2UpXG4gKlxuICogQHVzZXMgYWN0aW9uL3NlbGVjdG9yRXhlY3V0ZUFzeW5jLCBwcm90b2NvbC90aW1lb3V0c0FzeW5jU2NyaXB0XG4gKiBAdHlwZSB1dGlsaXR5XG4gKlxuICovXG5cbmltcG9ydCB7IENvbW1hbmRFcnJvciB9IGZyb20gJy4uL3V0aWxzL0Vycm9ySGFuZGxlcidcblxubGV0IHdhaXRGb3JTZWxlY3RlZCA9IGZ1bmN0aW9uIChzZWxlY3RvciwgbXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIC8qIVxuICAgICAqIGVuc3VyZSB0aGF0IG1zIGlzIHNldCBwcm9wZXJseVxuICAgICAqL1xuICAgIGlmICh0eXBlb2YgbXMgIT09ICdudW1iZXInKSB7XG4gICAgICAgIG1zID0gdGhpcy5vcHRpb25zLndhaXRmb3JUaW1lb3V0XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMud2FpdFVudGlsKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZChzZWxlY3RvcikudGhlbigoaXNTZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGlzU2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzU2VsZWN0ZWQgIT09IHJldmVyc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHJldmVyc2VcbiAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiBpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXZlcnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB2YWxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdmFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICE9PSByZXZlcnNlXG4gICAgICAgIH0pXG4gICAgfSwgbXMpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgbGV0IGlzUmV2ZXJzZWQgPSByZXZlcnNlID8gJycgOiAnbm90J1xuICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBlbGVtZW50ICgke3NlbGVjdG9yfSkgc3RpbGwgJHtpc1JldmVyc2VkfSBzZWxlY3RlZCBhZnRlciAke21zfW1zYClcbiAgICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB3YWl0Rm9yU2VsZWN0ZWRcbiJdfQ==