UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

91 lines (77 loc) 6.77 kB
/** * * Wait for an element (selected by css selector) for the provided amount of * milliseconds to be (in)visible. If multiple elements get queryied by given * selector, it returns true (or false if reverse flag is set) if at least one * element is visible. * * This function checks for visibility using window.getComputedStyle. An * element will be considered invisible if its visibility is 'none', its * display is 'hidden', its opacity is 0 or its x/y coordinates are not * within the viewport. * * @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 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 waitForVisible = function waitForVisible(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.isVisible(selector).then(function (isVisible) { if (!Array.isArray(isVisible)) { return isVisible !== reverse; } var result = reverse; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = _getIterator(isVisible), _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 + ' visible after ' + ms + 'ms'); }); }; exports['default'] = waitForVisible; module.exports = exports['default']; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy93YWl0Rm9yVmlzaWJsZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FxQjZCLHVCQUF1Qjs7QUFFcEQsSUFBSSxjQUFjLEdBQUcsU0FBakIsY0FBYyxDQUFhLFFBQVEsRUFBRSxFQUFFLEVBQW1COzs7UUFBakIsT0FBTyx5REFBRyxLQUFLOzs7OztBQUl4RCxRQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtBQUN4QixVQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUE7S0FDbkM7O0FBRUQsV0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQU07QUFDeEIsZUFBTyxNQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxTQUFTLEVBQUs7QUFDaEQsZ0JBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQzNCLHVCQUFPLFNBQVMsS0FBSyxPQUFPLENBQUE7YUFDL0I7O0FBRUQsZ0JBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQTs7Ozs7O0FBQ3BCLGtEQUFnQixTQUFTLDRHQUFFO3dCQUFsQixHQUFHOztBQUNSLHdCQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1YsOEJBQU0sR0FBRyxNQUFNLElBQUksR0FBRyxDQUFBO3FCQUN6QixNQUFNO0FBQ0gsOEJBQU0sR0FBRyxNQUFNLElBQUksR0FBRyxDQUFBO3FCQUN6QjtpQkFDSjs7Ozs7Ozs7Ozs7Ozs7OztBQUVELG1CQUFPLE1BQU0sS0FBSyxPQUFPLENBQUE7U0FDNUIsQ0FBQyxDQUFBO0tBQ0wsRUFBRSxFQUFFLENBQUMsU0FBTSxDQUFDLFlBQU07QUFDZixZQUFJLFVBQVUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQTtBQUNyQyxjQUFNLGtEQUE2QixRQUFRLGdCQUFXLFVBQVUsdUJBQWtCLEVBQUUsUUFBSyxDQUFBO0tBQzVGLENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLGNBQWMiLCJmaWxlIjoid2FpdEZvclZpc2libGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBXYWl0IGZvciBhbiBlbGVtZW50IChzZWxlY3RlZCBieSBjc3Mgc2VsZWN0b3IpIGZvciB0aGUgcHJvdmlkZWQgYW1vdW50IG9mXG4gKiBtaWxsaXNlY29uZHMgdG8gYmUgKGluKXZpc2libGUuIElmIG11bHRpcGxlIGVsZW1lbnRzIGdldCBxdWVyeWllZCBieSBnaXZlblxuICogc2VsZWN0b3IsIGl0IHJldHVybnMgdHJ1ZSAob3IgZmFsc2UgaWYgcmV2ZXJzZSBmbGFnIGlzIHNldCkgaWYgYXQgbGVhc3Qgb25lXG4gKiBlbGVtZW50IGlzIHZpc2libGUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIHZpc2liaWxpdHkgdXNpbmcgd2luZG93LmdldENvbXB1dGVkU3R5bGUuIEFuXG4gKiBlbGVtZW50IHdpbGwgYmUgY29uc2lkZXJlZCBpbnZpc2libGUgaWYgaXRzIHZpc2liaWxpdHkgaXMgJ25vbmUnLCBpdHNcbiAqIGRpc3BsYXkgaXMgJ2hpZGRlbicsIGl0cyBvcGFjaXR5IGlzIDAgb3IgaXRzIHgveSBjb29yZGluYXRlcyBhcmUgbm90XG4gKiB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAgIHNlbGVjdG9yIGVsZW1lbnQgdG8gd2FpdCBmb3JcbiAqIEBwYXJhbSB7TnVtYmVyPX0gIG1zICAgICAgIHRpbWUgaW4gbXMgKGRlZmF1bHQ6IDUwMClcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IHJldmVyc2UgIGlmIHRydWUgaXQgd2FpdHMgZm9yIHRoZSBvcHBvc2l0ZSAoZGVmYXVsdDogZmFsc2UpXG4gKlxuICogQHVzZXMgcHJvdG9jb2wvc2VsZWN0b3JFeGVjdXRlQXN5bmMsIHByb3RvY29sL3RpbWVvdXRzQXN5bmNTY3JpcHRcbiAqIEB0eXBlIHV0aWxpdHlcbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgd2FpdEZvclZpc2libGUgPSBmdW5jdGlvbiAoc2VsZWN0b3IsIG1zLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICAvKiFcbiAgICAgKiBlbnN1cmUgdGhhdCBtcyBpcyBzZXQgcHJvcGVybHlcbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIG1zICE9PSAnbnVtYmVyJykge1xuICAgICAgICBtcyA9IHRoaXMub3B0aW9ucy53YWl0Zm9yVGltZW91dFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLndhaXRVbnRpbCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZShzZWxlY3RvcikudGhlbigoaXNWaXNpYmxlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXNWaXNpYmxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc1Zpc2libGUgIT09IHJldmVyc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHJldmVyc2VcbiAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiBpc1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJldmVyc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHZhbFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB2YWxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgIT09IHJldmVyc2VcbiAgICAgICAgfSlcbiAgICB9LCBtcykuY2F0Y2goKCkgPT4ge1xuICAgICAgICBsZXQgaXNSZXZlcnNlZCA9IHJldmVyc2UgPyAnJyA6ICdub3QnXG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoYGVsZW1lbnQgKCR7c2VsZWN0b3J9KSBzdGlsbCAke2lzUmV2ZXJzZWR9IHZpc2libGUgYWZ0ZXIgJHttc31tc2ApXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2FpdEZvclZpc2libGVcbiJdfQ==