@testim/testim-cli
Version:
Command line interface for running Testing on you CI
66 lines (57 loc) • 5.75 kB
JavaScript
/**
*
* 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==