UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

98 lines (83 loc) 7.08 kB
/** * * Determine an element’s location on the page. The point (0, 0) refers to * the upper-left corner of the page. * * <example> :getLocation.js client .url('http://github.com') .getLocation('.header-logo-wordmark').then(location) { console.log(location); // outputs: { x: 100, y: 200 } }) .getLocation('.header-logo-wordmark', 'x').then(location) { console.log(location); // outputs: 100 }) .getLocation('.header-logo-wordmark', 'y').then(location) { console.log(location); // outputs: 200 }); * </example> * * @param {String} selector element with requested position offset * @returns {Object|Object[]} The X and Y coordinates for the element on the page (`{x:number, y:number}`) * * @uses protocol/elements, protocol/elementIdLocation * @type property * */ 'use strict'; var _getIterator = require('babel-runtime/core-js/get-iterator')['default']; var _Promise = require('babel-runtime/core-js/promise')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _utilsErrorHandler = require('../utils/ErrorHandler'); var getLocation = function getLocation(selector, prop) { var _this = this; return this.elements(selector).then(function (res) { /** * throw NoSuchElement error if no element was found */ if (!res.value || res.value.length === 0) { throw new _utilsErrorHandler.CommandError(7); } var elementIdLocationCommands = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = _getIterator(res.value), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var elem = _step.value; elementIdLocationCommands.push(_this.elementIdLocation(elem.ELEMENT)); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator['return']) { _iterator['return'](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return _Promise.all(elementIdLocationCommands); }).then(function (locations) { locations = locations.map(function (location) { if (typeof prop === 'string' && prop.match(/(x|y)/)) { return location.value[prop]; } return { x: location.value.x, y: location.value.y }; }); return locations.length === 1 ? locations[0] : locations; }); }; exports['default'] = getLocation; module.exports = exports['default']; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9nZXRMb2NhdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0E0QjZCLHVCQUF1Qjs7QUFFcEQsSUFBSSxXQUFXLEdBQUcsU0FBZCxXQUFXLENBQWEsUUFBUSxFQUFFLElBQUksRUFBRTs7O0FBQ3hDLFdBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxHQUFHLEVBQUs7Ozs7QUFJekMsWUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3RDLGtCQUFNLG9DQUFpQixDQUFDLENBQUMsQ0FBQTtTQUM1Qjs7QUFFRCxZQUFJLHlCQUF5QixHQUFHLEVBQUUsQ0FBQTs7Ozs7O0FBQ2xDLDhDQUFpQixHQUFHLENBQUMsS0FBSyw0R0FBRTtvQkFBbkIsSUFBSTs7QUFDVCx5Q0FBeUIsQ0FBQyxJQUFJLENBQUMsTUFBSyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUN2RTs7Ozs7Ozs7Ozs7Ozs7OztBQUVELGVBQU8sU0FBUSxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQTtLQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsU0FBUyxFQUFLO0FBQ25CLGlCQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFDLFFBQVEsRUFBSztBQUNwQyxnQkFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqRCx1QkFBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2FBQzlCOztBQUVELG1CQUFPO0FBQ0gsaUJBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkIsaUJBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEIsQ0FBQTtTQUNKLENBQUMsQ0FBQTs7QUFFRixlQUFPLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUE7S0FDM0QsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7cUJBRWMsV0FBVyIsImZpbGUiOiJnZXRMb2NhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIERldGVybWluZSBhbiBlbGVtZW504oCZcyBsb2NhdGlvbiBvbiB0aGUgcGFnZS4gVGhlIHBvaW50ICgwLCAwKSByZWZlcnMgdG9cbiAqIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgcGFnZS5cbiAqXG4gKiA8ZXhhbXBsZT5cbiAgICA6Z2V0TG9jYXRpb24uanNcbiAgICBjbGllbnRcbiAgICAgICAgLnVybCgnaHR0cDovL2dpdGh1Yi5jb20nKVxuICAgICAgICAuZ2V0TG9jYXRpb24oJy5oZWFkZXItbG9nby13b3JkbWFyaycpLnRoZW4obG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGxvY2F0aW9uKTsgLy8gb3V0cHV0czogeyB4OiAxMDAsIHk6IDIwMCB9XG4gICAgICAgIH0pXG4gICAgICAgIC5nZXRMb2NhdGlvbignLmhlYWRlci1sb2dvLXdvcmRtYXJrJywgJ3gnKS50aGVuKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhsb2NhdGlvbik7IC8vIG91dHB1dHM6IDEwMFxuICAgICAgICB9KVxuICAgICAgICAuZ2V0TG9jYXRpb24oJy5oZWFkZXItbG9nby13b3JkbWFyaycsICd5JykudGhlbihsb2NhdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2cobG9jYXRpb24pOyAvLyBvdXRwdXRzOiAyMDBcbiAgICAgICAgfSk7XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9yICAgIGVsZW1lbnQgd2l0aCByZXF1ZXN0ZWQgcG9zaXRpb24gb2Zmc2V0XG4gKiBAcmV0dXJucyB7T2JqZWN0fE9iamVjdFtdfSAgVGhlIFggYW5kIFkgY29vcmRpbmF0ZXMgZm9yIHRoZSBlbGVtZW50IG9uIHRoZSBwYWdlIChge3g6bnVtYmVyLCB5Om51bWJlcn1gKVxuICpcbiAqIEB1c2VzIHByb3RvY29sL2VsZW1lbnRzLCBwcm90b2NvbC9lbGVtZW50SWRMb2NhdGlvblxuICogQHR5cGUgcHJvcGVydHlcbiAqXG4gKi9cblxuaW1wb3J0IHsgQ29tbWFuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvRXJyb3JIYW5kbGVyJ1xuXG5sZXQgZ2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoc2VsZWN0b3IsIHByb3ApIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50cyhzZWxlY3RvcikudGhlbigocmVzKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aHJvdyBOb1N1Y2hFbGVtZW50IGVycm9yIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIXJlcy52YWx1ZSB8fCByZXMudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKDcpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZWxlbWVudElkTG9jYXRpb25Db21tYW5kcyA9IFtdXG4gICAgICAgIGZvciAobGV0IGVsZW0gb2YgcmVzLnZhbHVlKSB7XG4gICAgICAgICAgICBlbGVtZW50SWRMb2NhdGlvbkNvbW1hbmRzLnB1c2godGhpcy5lbGVtZW50SWRMb2NhdGlvbihlbGVtLkVMRU1FTlQpKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGVsZW1lbnRJZExvY2F0aW9uQ29tbWFuZHMpXG4gICAgfSkudGhlbigobG9jYXRpb25zKSA9PiB7XG4gICAgICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5tYXAoKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIHByb3AubWF0Y2goLyh4fHkpLykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb24udmFsdWVbcHJvcF1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiBsb2NhdGlvbi52YWx1ZS54LFxuICAgICAgICAgICAgICAgIHk6IGxvY2F0aW9uLnZhbHVlLnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gbG9jYXRpb25zLmxlbmd0aCA9PT0gMSA/IGxvY2F0aW9uc1swXSA6IGxvY2F0aW9uc1xuICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldExvY2F0aW9uXG4iXX0=