@testim/testim-cli
Version:
Command line interface for running Testing on you CI
64 lines (54 loc) • 6.76 kB
JavaScript
/**
*
* Move the mouse by an offset of the specificed element. If no element is specified,
* the move is relative to the current mouse cursor. If an element is provided but no
* offset, the mouse will be moved to the center of the element. If the element is not
* visible, it will be scrolled into view.
*
* @param {String} selector element to move to
* @param {Number} xoffset X offset to move to, relative to the top-left corner of the element. If not specified, the mouse will move to the middle of the element.
* @param {Number} yoffset Y offset to move to, relative to the top-left corner of the element. If not specified, the mouse will move to the middle of the element.
*
* @uses protocol/element, protocol/elementIdLocation
* @type action
*
*/
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var moveToObject = function moveToObject(selector) {
var _this = this;
var xoffset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];
var yoffset = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2];
/**
* check for offset params
*/
var hasOffsetParams = true;
if (typeof xoffset !== 'number' && typeof yoffset !== 'number') {
hasOffsetParams = false;
}
if (this.isMobile) {
return this.element(selector).then(function (res) {
return _this.elementIdSize(res.value.ELEMENT).then(function (size) {
return _this.elementIdLocation(res.element.value.ELEMENT).then(function (location) {
return { size: size, location: location };
});
});
}).then(function (res) {
var x = res.location.value.x;
var y = res.location.value.y;
if (hasOffsetParams) {
x = res.location.value.x - res.size.value.width / 2 + xoffset;
y = res.location.value.y - res.size.value.height / 2 + yoffset;
}
return _this.touchMove(x, y);
});
}
return this.element(selector).then(function (res) {
return _this.moveTo(res.value.ELEMENT, xoffset, yoffset);
});
};
exports['default'] = moveToObject;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9tb3ZlVG9PYmplY3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLElBQUksWUFBWSxHQUFHLFNBQWYsWUFBWSxDQUFhLFFBQVEsRUFBNEI7OztRQUExQixPQUFPLHlEQUFHLENBQUM7UUFBRSxPQUFPLHlEQUFHLENBQUM7Ozs7O0FBSTNELFFBQUksZUFBZSxHQUFHLElBQUksQ0FBQTtBQUMxQixRQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7QUFDNUQsdUJBQWUsR0FBRyxLQUFLLENBQUE7S0FDMUI7O0FBRUQsUUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2YsZUFBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLEdBQUc7bUJBQ25DLE1BQUssYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBSTt1QkFDNUMsTUFBSyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxRQUFRLEVBQUs7QUFDakUsMkJBQU8sRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLFFBQVEsRUFBUixRQUFRLEVBQUUsQ0FBQTtpQkFDNUIsQ0FBQzthQUFBLENBQ0w7U0FBQSxDQUNKLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLO0FBQ1osZ0JBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUM1QixnQkFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBOztBQUU1QixnQkFBSSxlQUFlLEVBQUU7QUFDakIsaUJBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQUFBQyxHQUFHLE9BQU8sQ0FBQTtBQUMvRCxpQkFBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxBQUFDLEdBQUcsT0FBTyxDQUFBO2FBQ25FOztBQUVELG1CQUFPLE1BQUssU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUM5QixDQUFDLENBQUE7S0FDTDs7QUFFRCxXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLO0FBQ3hDLGVBQU8sTUFBSyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0tBQzFELENBQUMsQ0FBQTtDQUNMLENBQUE7O3FCQUVjLFlBQVkiLCJmaWxlIjoibW92ZVRvT2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogTW92ZSB0aGUgbW91c2UgYnkgYW4gb2Zmc2V0IG9mIHRoZSBzcGVjaWZpY2VkIGVsZW1lbnQuIElmIG5vIGVsZW1lbnQgaXMgc3BlY2lmaWVkLFxuICogdGhlIG1vdmUgaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW91c2UgY3Vyc29yLiBJZiBhbiBlbGVtZW50IGlzIHByb3ZpZGVkIGJ1dCBub1xuICogb2Zmc2V0LCB0aGUgbW91c2Ugd2lsbCBiZSBtb3ZlZCB0byB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50LiBJZiB0aGUgZWxlbWVudCBpcyBub3RcbiAqIHZpc2libGUsIGl0IHdpbGwgYmUgc2Nyb2xsZWQgaW50byB2aWV3LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvciBlbGVtZW50IHRvIG1vdmUgdG9cbiAqIEBwYXJhbSB7TnVtYmVyfSB4b2Zmc2V0ICBYIG9mZnNldCB0byBtb3ZlIHRvLCByZWxhdGl2ZSB0byB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgbW91c2Ugd2lsbCBtb3ZlIHRvIHRoZSBtaWRkbGUgb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0ge051bWJlcn0geW9mZnNldCAgWSBvZmZzZXQgdG8gbW92ZSB0bywgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIG1vdXNlIHdpbGwgbW92ZSB0byB0aGUgbWlkZGxlIG9mIHRoZSBlbGVtZW50LlxuICpcbiAqIEB1c2VzIHByb3RvY29sL2VsZW1lbnQsIHByb3RvY29sL2VsZW1lbnRJZExvY2F0aW9uXG4gKiBAdHlwZSBhY3Rpb25cbiAqXG4gKi9cblxubGV0IG1vdmVUb09iamVjdCA9IGZ1bmN0aW9uIChzZWxlY3RvciwgeG9mZnNldCA9IDAsIHlvZmZzZXQgPSAwKSB7XG4gICAgLyoqXG4gICAgICogY2hlY2sgZm9yIG9mZnNldCBwYXJhbXNcbiAgICAgKi9cbiAgICB2YXIgaGFzT2Zmc2V0UGFyYW1zID0gdHJ1ZVxuICAgIGlmICh0eXBlb2YgeG9mZnNldCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHlvZmZzZXQgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGhhc09mZnNldFBhcmFtcyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudChzZWxlY3RvcikudGhlbigocmVzKSA9PlxuICAgICAgICAgICAgdGhpcy5lbGVtZW50SWRTaXplKHJlcy52YWx1ZS5FTEVNRU5UKS50aGVuKChzaXplKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudElkTG9jYXRpb24ocmVzLmVsZW1lbnQudmFsdWUuRUxFTUVOVCkudGhlbigobG9jYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc2l6ZSwgbG9jYXRpb24gfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICBsZXQgeCA9IHJlcy5sb2NhdGlvbi52YWx1ZS54XG4gICAgICAgICAgICBsZXQgeSA9IHJlcy5sb2NhdGlvbi52YWx1ZS55XG5cbiAgICAgICAgICAgIGlmIChoYXNPZmZzZXRQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICB4ID0gcmVzLmxvY2F0aW9uLnZhbHVlLnggLSAocmVzLnNpemUudmFsdWUud2lkdGggLyAyKSArIHhvZmZzZXRcbiAgICAgICAgICAgICAgICB5ID0gcmVzLmxvY2F0aW9uLnZhbHVlLnkgLSAocmVzLnNpemUudmFsdWUuaGVpZ2h0IC8gMikgKyB5b2Zmc2V0XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvdWNoTW92ZSh4LCB5KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVsZW1lbnQoc2VsZWN0b3IpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb3ZlVG8ocmVzLnZhbHVlLkVMRU1FTlQsIHhvZmZzZXQsIHlvZmZzZXQpXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgbW92ZVRvT2JqZWN0XG4iXX0=