eyes.selenium.v68patch
Version:
Applitools Eyes SDK For Selenium JavaScript WebDriver
101 lines (88 loc) • 3.45 kB
JavaScript
(function() {
'use strict';
var EyesSDK = require('eyes.sdk'),
EyesUtils = require('eyes.utils');
var PositionProvider = EyesSDK.PositionProvider,
ArgumentGuard = EyesUtils.ArgumentGuard;
/**
* @constructor
* @param {Logger} logger A Logger instance.
* @param {EyesWebDriver} eyesDriver
* @param {EyesRemoteWebElement} element
* @param {PromiseFactory} promiseFactory
* @augments PositionProvider
*/
function ElementPositionProvider(logger, eyesDriver, element, promiseFactory) {
ArgumentGuard.notNull(logger, "logger");
ArgumentGuard.notNull(eyesDriver, "executor");
ArgumentGuard.notNull(element, "element");
this._logger = logger;
this._eyesDriver = eyesDriver;
this._promiseFactory = promiseFactory;
this._element = element;
}
ElementPositionProvider.prototype = new PositionProvider();
ElementPositionProvider.prototype.constructor = ElementPositionProvider;
/**
* @returns {Promise<{x: number, y: number}>} The scroll position of the current frame.
*/
ElementPositionProvider.prototype.getCurrentPosition = function () {
var that = this, elScrollLeft;
that._logger.verbose("getCurrentPosition()");
return that._element.getScrollLeft().then(function (value) {
elScrollLeft = value;
return that._element.getScrollTop();
}).then(function (value) {
var location = { x: elScrollLeft, y: value };
that._logger.verbose("Current position: ", location);
return location;
});
};
/**
* Go to the specified location.
* @param {{x: number, y: number}} location The position to scroll to.
* @returns {Promise<void>}
*/
ElementPositionProvider.prototype.setPosition = function (location) {
var that = this;
that._logger.verbose("Scrolling to:", location);
return that._element.scrollTo(location).then(function () {
that._logger.verbose("Done scrolling!");
});
};
/**
* @returns {Promise<{width: number, height: number}>} The entire size of the container which the position is relative to.
*/
ElementPositionProvider.prototype.getEntireSize = function () {
var that = this, elScrollWidth, elScrollHeight;
that._logger.verbose("getEntireSize()");
return that._element.getScrollWidth().then(function (value) {
elScrollWidth = value;
return that._element.getScrollHeight();
}).then(function (value) {
elScrollHeight = value;
that._logger.verbose("Entire size: ", elScrollWidth, ",", elScrollHeight);
return {
width: elScrollWidth,
height: elScrollHeight
};
});
};
/**
* @returns {Promise<{x: number, y: number}>}
*/
ElementPositionProvider.prototype.getState = function () {
return this.getCurrentPosition();
};
/**
* @param {{x: number, y: number}} state The initial state of position
* @returns {Promise<void>}
*/
ElementPositionProvider.prototype.restoreState = function (state) {
var that = this;
return this.setPosition(state).then(function () {
that._logger.verbose("Position restored.");
});
};
module.exports = ElementPositionProvider;
}());