UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

66 lines (57 loc) 5.75 kB
/** * * Return true if the selected DOM-element found by given selector is visible and within the viewport. * * <example> :index.html <div id="notDisplayed" style="display: none"></div> <div id="notVisible" style="visibility: hidden"></div> <div id="notInViewport" style="position:absolute; left: 9999999"></div> <div id="zeroOpacity" style="opacity: 0"></div> :isVisibleWithinViewport.js client .isVisibleWithinViewport('#notDisplayed').then(function(isVisible) { console.log(isVisible); // outputs: false }) .isVisibleWithinViewport('#notVisible').then(function(isVisible) { console.log(isVisible); // outputs: false }) .isVisible('#notExisting').then(function(isVisible) { console.log(isVisible); // outputs: false }) .isVisibleWithinViewport('#notInViewport').then(function(isVisible) { console.log(isVisible); // outputs: false }) .isVisibleWithinViewport('#zeroOpacity').then(function(isVisible) { console.log(isVisible); // outputs: false }); * </example> * * @param {String} selector DOM-element * @returns {Boolean|Boolean[]} true if element(s)* [is|are] visible * * @uses protocol/selectorExecute, protocol/timeoutsAsyncScript * @type state * */ 'use strict'; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; var _scriptsIsWithinViewport = require('../scripts/isWithinViewport'); var _scriptsIsWithinViewport2 = _interopRequireDefault(_scriptsIsWithinViewport); module.exports = function isVisibleWithinViewport(selector) { return this.selectorExecute(selector, _scriptsIsWithinViewport2['default']).then(function (res) { if (Array.isArray(res) && res.length === 1) { return res[0]; } return res; }, function (err) { /** * if element does not exist it is automatically not visible :-) */ if (err.message.indexOf('NoSuchElement') > -1) { return true; } throw err; }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9pc1Zpc2libGVXaXRoaW5WaWV3cG9ydC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBc0N3Qyw2QkFBNkI7Ozs7QUFFckUsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLHVCQUF1QixDQUFFLFFBQVEsRUFBRTtBQUN6RCxXQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSx1Q0FBOEIsQ0FBQyxJQUFJLENBQUMsVUFBQyxHQUFHLEVBQUs7QUFDN0UsWUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3hDLG1CQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjs7QUFFRCxlQUFPLEdBQUcsQ0FBQTtLQUNiLEVBQUUsVUFBQyxHQUFHLEVBQUs7Ozs7QUFJUixZQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzNDLG1CQUFPLElBQUksQ0FBQTtTQUNkOztBQUVELGNBQU0sR0FBRyxDQUFBO0tBQ1osQ0FBQyxDQUFBO0NBQ0wsQ0FBQSIsImZpbGUiOiJpc1Zpc2libGVXaXRoaW5WaWV3cG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBzZWxlY3RlZCBET00tZWxlbWVudCBmb3VuZCBieSBnaXZlbiBzZWxlY3RvciBpcyB2aXNpYmxlIGFuZCB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDppbmRleC5odG1sXG4gICAgPGRpdiBpZD1cIm5vdERpc3BsYXllZFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJub3RWaXNpYmxlXCIgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW5cIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwibm90SW5WaWV3cG9ydFwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6IDk5OTk5OTlcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiemVyb09wYWNpdHlcIiBzdHlsZT1cIm9wYWNpdHk6IDBcIj48L2Rpdj5cblxuICAgIDppc1Zpc2libGVXaXRoaW5WaWV3cG9ydC5qc1xuICAgIGNsaWVudFxuICAgICAgICAuaXNWaXNpYmxlV2l0aGluVmlld3BvcnQoJyNub3REaXNwbGF5ZWQnKS50aGVuKGZ1bmN0aW9uKGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coaXNWaXNpYmxlKTsgLy8gb3V0cHV0czogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgLmlzVmlzaWJsZVdpdGhpblZpZXdwb3J0KCcjbm90VmlzaWJsZScpLnRoZW4oZnVuY3Rpb24oaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhpc1Zpc2libGUpOyAvLyBvdXRwdXRzOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICAuaXNWaXNpYmxlKCcjbm90RXhpc3RpbmcnKS50aGVuKGZ1bmN0aW9uKGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coaXNWaXNpYmxlKTsgLy8gb3V0cHV0czogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgLmlzVmlzaWJsZVdpdGhpblZpZXdwb3J0KCcjbm90SW5WaWV3cG9ydCcpLnRoZW4oZnVuY3Rpb24oaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhpc1Zpc2libGUpOyAvLyBvdXRwdXRzOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICAuaXNWaXNpYmxlV2l0aGluVmlld3BvcnQoJyN6ZXJvT3BhY2l0eScpLnRoZW4oZnVuY3Rpb24oaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhpc1Zpc2libGUpOyAvLyBvdXRwdXRzOiBmYWxzZVxuICAgICAgICB9KTtcbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiBAcGFyYW0gICB7U3RyaW5nfSAgICAgICAgICAgICBzZWxlY3RvciAgRE9NLWVsZW1lbnRcbiAqIEByZXR1cm5zIHtCb29sZWFufEJvb2xlYW5bXX0gICAgICAgICAgICB0cnVlIGlmIGVsZW1lbnQocykqIFtpc3xhcmVdIHZpc2libGVcbiAqXG4gKiBAdXNlcyBwcm90b2NvbC9zZWxlY3RvckV4ZWN1dGUsIHByb3RvY29sL3RpbWVvdXRzQXN5bmNTY3JpcHRcbiAqIEB0eXBlIHN0YXRlXG4gKlxuICovXG5cbmltcG9ydCBpc1Zpc2libGVXaXRoaW5WaWV3cG9ydEZ1bmMgZnJvbSAnLi4vc2NyaXB0cy9pc1dpdGhpblZpZXdwb3J0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzVmlzaWJsZVdpdGhpblZpZXdwb3J0IChzZWxlY3Rvcikge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yRXhlY3V0ZShzZWxlY3RvciwgaXNWaXNpYmxlV2l0aGluVmlld3BvcnRGdW5jKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSAmJiByZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzWzBdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzXG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogaWYgZWxlbWVudCBkb2VzIG5vdCBleGlzdCBpdCBpcyBhdXRvbWF0aWNhbGx5IG5vdCB2aXNpYmxlIDotKVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGVyci5tZXNzYWdlLmluZGV4T2YoJ05vU3VjaEVsZW1lbnQnKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbn1cbiJdfQ==