UNPKG

glance-webdriver

Version:
290 lines (260 loc) 8.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _webdriverio = require('webdriverio'); var wdio = _interopRequireWildcard(_webdriverio); var _shortid = require('shortid'); var _shortid2 = _interopRequireDefault(_shortid); var _client = require('../utils/client'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var WebdriverIOAdapter = function () { function WebdriverIOAdapter(config) { _classCallCheck(this, WebdriverIOAdapter); this.driver = wdio.remote(_extends({}, config)); } _createClass(WebdriverIOAdapter, [{ key: 'init', value: function init() { return this.driver.init().catch(function (error) { console.log(error); return Promise.reject(error); }); } }, { key: 'elementReference', value: function elementReference(element) { return this.execute(_client.tagElementWithID, element, _shortid2.default.generate()).then(function (id) { return '[data-glance-id="' + id + '"]'; }); } }, { key: 'getUrl', value: function getUrl(address) { return this.driver.url().then(function (res) { return res.value; }); } }, { key: 'setUrl', value: function setUrl(address) { return this.driver.url(address); } }, { key: 'getTabs', value: function getTabs() { return this.driver.getTabIds(); } }, { key: 'getActiveTab', value: function getActiveTab() { return this.driver.getCurrentTabId(); } }, { key: 'setActiveTab', value: function setActiveTab(id) { return this.driver.switchTab(id); } }, { key: 'closeTab', value: function closeTab(id) { var _this = this; if (id) { return this.driver.switchTab(id).then(function (result) { return _this.driver.close(); }); } else { return this.driver.close(); } } }, { key: 'type', value: function type(keys) { return this.driver.keys(keys.split('')); } }, { key: 'sendKeys', value: function sendKeys() { var _driver; return (_driver = this.driver).keys.apply(_driver, arguments); } }, { key: 'click', value: function click(element) { return this.driver.elementIdClick(element.ELEMENT); } }, { key: 'doubleClick', value: function doubleClick(element) { var _this2 = this; return this.elementReference(element).then(function (reference) { return _this2.driver.doubleClick(reference); }); } }, { key: 'middleClick', value: function middleClick(element) { var _this3 = this; return this.elementReference(element).then(function (reference) { return _this3.driver.middleClick(reference); }); } }, { key: 'moveMouseTo', value: function moveMouseTo(element, xOffset, yOffset) { var _this4 = this; return this.elementReference(element).then(function (reference) { return _this4.driver.moveToObject(reference, xOffset, yOffset); }); } }, { key: 'rightClick', value: function rightClick(elementReference) { var _this5 = this; return this.elementReference(element).then(function (reference) { return _this5.driver.rightClick(reference); }); } }, { key: 'mouseDown', value: function mouseDown(button) { button = button || 0; return this.driver.buttonDown(button); } }, { key: 'mouseUp', value: function mouseUp(button) { button = button || 0; return this.driver.buttonUp(button); } }, { key: 'execute', value: function execute(func) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return this.driver.execute.apply(this.driver, [func].concat(args)).then(function (res) { return res.value; }); } }, { key: 'executeAsync', value: function executeAsync(func) { for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } return this.driver.executeAsync.apply(this.driver, [func].concat(args)).then(function (res) { return res.value; }); } }, { key: 'dragAndDrop', value: function dragAndDrop(elementSource, elementTarget, xOffset, yOffset) { var _this6 = this; return this.elementReference(elementSource).then(function (elementReferenceSource) { return _this6.elementReference(elementTarget).then(function (elementReferenceTarget) { if (_this6.driver.isMobile) { return _this6.driver.getLocation(elementReferenceSource).then(function (location) { return _this6.driver.touchDown(location.x, location.y); }).getLocation(elementReferenceTarget).then(function (location) { return _this6.driver.touchMove(location.x, location.y).touchUp(location.x, location.y); }); } return _this6.driver.moveToObject(elementReferenceSource).buttonDown().moveToObject(elementReferenceTarget, xOffset, yOffset).buttonUp(); }); }); } }, { key: 'pause', value: function pause(delay) { return this.driver.pause(delay); } }, { key: 'saveScreenshot', value: function saveScreenshot(filename) { return this.driver.saveScreenshot(filename); } }, { key: 'end', value: function end() { return this.driver.end(); } }, { key: 'find', value: function find(reference) { return this.element(reference); } }, { key: 'element', value: function element(reference) { return this.driver.element(reference).then(function (res) { return res.value; }); } }, { key: 'elements', value: function elements(reference) { return this.driver.elements(reference).then(function (res) { return res.value; }); } }, { key: 'getValue', value: function getValue(element) { var _this7 = this; return this.elementReference(element).then(function (reference) { return _this7.driver.getValue(reference).then(function (value) { return value; }); }); } }, { key: 'setValue', value: function setValue(element) { var _driver2; for (var _len3 = arguments.length, values = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { values[_key3 - 1] = arguments[_key3]; } return (_driver2 = this.driver).elementIdValue.apply(_driver2, [element.ELEMENT].concat(values)); } }, { key: 'getTitle', value: function getTitle() { return this.driver.getTitle(); } }, { key: 'log', value: function log(type) { return this.driver.log(type); } }, { key: 'setWindowSize', value: function setWindowSize(size) { return this.driver.windowHandleSize(size); } }, { key: 'getWindowSize', value: function getWindowSize() { return this.driver.windowHandleSize(); } }, { key: 'maximize', value: function maximize() { return this.driver.windowHandleMaximize(); } }, { key: 'scroll', value: function scroll(element) { var _this8 = this; return this.elementReference(element).then(function (reference) { return _this8.driver.scroll(reference); }); } }]); return WebdriverIOAdapter; }(); exports.default = WebdriverIOAdapter;