UNPKG

gst-atom-xcuitest-driver

Version:

ATOM driver for iOS using XCUITest for backend

105 lines (73 loc) 10.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("source-map-support/register"); var _asyncbox = require("asyncbox"); var _lodash = _interopRequireDefault(require("lodash")); var _logger = _interopRequireDefault(require("../logger")); var _appiumSupport = require("appium-support"); let commands = {}; commands.getScreenshot = async function getScreenshot() { const getScreenshotFromWDA = async () => { _logger.default.debug(`Taking screenshot with WDA`); const data = await this.proxyCommand('/screenshot', 'GET'); if (!_lodash.default.isString(data)) { throw new Error(`Unable to take screenshot. WDA returned '${JSON.stringify(data)}'`); } return data; }; if (this.mjpegStream) { _logger.default.info(`mjpeg video stream provided, returning latest frame as screenshot`); const data = await this.mjpegStream.lastChunkPNGBase64(); if (data) { return data; } _logger.default.warn('Tried to get screenshot from active MJPEG stream, but there ' + 'was no data yet. Falling back to regular screenshot methods.'); } try { return await getScreenshotFromWDA(); } catch (err) { _logger.default.warn(`Error getting screenshot: ${err.message}`); } if (this.isSimulator()) { _logger.default.info(`Falling back to 'simctl io screenshot' API`); return await this.opts.device.simctl.getScreenshot(); } return await (0, _asyncbox.retryInterval)(2, 1000, getScreenshotFromWDA); }; commands.getElementScreenshot = async function getElementScreenshot(el) { el = _appiumSupport.util.unwrapElement(el); if (this.isWebContext()) { const atomsElement = this.useAtomsElement(el); return await this.executeAtom('getElementScreenshot', [atomsElement]); } const data = await this.proxyCommand(`/element/${el}/screenshot`, 'GET'); if (!_lodash.default.isString(data)) { _logger.default.errorAndThrow(`Unable to take a screenshot of the element ${el}. WDA returned '${JSON.stringify(data)}'`); } return data; }; commands.getViewportScreenshot = async function getViewportScreenshot() { let statusBarHeight = await this.getStatusBarHeight(); const screenshot = await this.getScreenshot(); if (statusBarHeight === 0) { return screenshot; } const scale = await this.getDevicePixelRatio(); statusBarHeight = Math.round(statusBarHeight * scale); const windowSize = await this.getWindowSize(); let rect = { left: 0, top: statusBarHeight, width: windowSize.width * scale, height: windowSize.height * scale - statusBarHeight }; let newScreenshot = await _appiumSupport.imageUtil.cropBase64Image(screenshot, rect); return newScreenshot; }; var _default = commands; exports.default = _default;require('source-map-support').install(); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zY3JlZW5zaG90cy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFNjcmVlbnNob3QiLCJnZXRTY3JlZW5zaG90RnJvbVdEQSIsImxvZyIsImRlYnVnIiwiZGF0YSIsInByb3h5Q29tbWFuZCIsIl8iLCJpc1N0cmluZyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1qcGVnU3RyZWFtIiwiaW5mbyIsImxhc3RDaHVua1BOR0Jhc2U2NCIsIndhcm4iLCJlcnIiLCJtZXNzYWdlIiwiaXNTaW11bGF0b3IiLCJvcHRzIiwiZGV2aWNlIiwic2ltY3RsIiwiZ2V0RWxlbWVudFNjcmVlbnNob3QiLCJlbCIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwiaXNXZWJDb250ZXh0IiwiYXRvbXNFbGVtZW50IiwidXNlQXRvbXNFbGVtZW50IiwiZXhlY3V0ZUF0b20iLCJlcnJvckFuZFRocm93IiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90Iiwic3RhdHVzQmFySGVpZ2h0IiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwic2NyZWVuc2hvdCIsInNjYWxlIiwiZ2V0RGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJyb3VuZCIsIndpbmRvd1NpemUiLCJnZXRXaW5kb3dTaXplIiwicmVjdCIsImxlZnQiLCJ0b3AiLCJ3aWR0aCIsImhlaWdodCIsIm5ld1NjcmVlbnNob3QiLCJpbWFnZVV0aWwiLCJjcm9wQmFzZTY0SW1hZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7O0FBRUFBLFFBQVEsQ0FBQ0MsYUFBVCxHQUF5QixlQUFlQSxhQUFmLEdBQWdDO0FBQ3ZELFFBQU1DLG9CQUFvQixHQUFHLFlBQVk7QUFDdkNDLG9CQUFJQyxLQUFKLENBQVcsNEJBQVg7O0FBQ0EsVUFBTUMsSUFBSSxHQUFHLE1BQU0sS0FBS0MsWUFBTCxDQUFrQixhQUFsQixFQUFpQyxLQUFqQyxD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QU1DLHlCQUFVQyxlQUFWLENBQTBCZCxVQUExQixFQUFzQ08sSUFBdEMsQ0FBMUI7QUFDQSxTQUFPSyxhQUFQO0FBQ0QsQ0F0QkQ7O2VBd0JlOUMsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgdXRpbCwgaW1hZ2VVdGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuXG5sZXQgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMuZ2V0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3QgKCkge1xuICBjb25zdCBnZXRTY3JlZW5zaG90RnJvbVdEQSA9IGFzeW5jICgpID0+IHtcbiAgICBsb2cuZGVidWcoYFRha2luZyBzY3JlZW5zaG90IHdpdGggV0RBYCk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvc2NyZWVuc2hvdCcsICdHRVQnKTtcbiAgICBpZiAoIV8uaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHRha2Ugc2NyZWVuc2hvdC4gV0RBIHJldHVybmVkICcke0pTT04uc3RyaW5naWZ5KGRhdGEpfSdgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG5cbiAgLy8gaWYgd2UndmUgc3BlY2lmaWVkIGFuIG1qcGVnIHNlcnZlciwgdXNlIHRoYXRcbiAgaWYgKHRoaXMubWpwZWdTdHJlYW0pIHtcbiAgICBsb2cuaW5mbyhgbWpwZWcgdmlkZW8gc3RyZWFtIHByb3ZpZGVkLCByZXR1cm5pbmcgbGF0ZXN0IGZyYW1lIGFzIHNjcmVlbnNob3RgKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5tanBlZ1N0cmVhbS5sYXN0Q2h1bmtQTkdCYXNlNjQoKTtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGxvZy53YXJuKCdUcmllZCB0byBnZXQgc2NyZWVuc2hvdCBmcm9tIGFjdGl2ZSBNSlBFRyBzdHJlYW0sIGJ1dCB0aGVyZSAnICtcbiAgICAgICd3YXMgbm8gZGF0YSB5ZXQuIEZhbGxpbmcgYmFjayB0byByZWd1bGFyIHNjcmVlbnNob3QgbWV0aG9kcy4nKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldFNjcmVlbnNob3RGcm9tV0RBKCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKGBFcnJvciBnZXR0aW5nIHNjcmVlbnNob3Q6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICAvLyBzaW11bGF0b3IgYXR0ZW1wdFxuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgbG9nLmluZm8oYEZhbGxpbmcgYmFjayB0byAnc2ltY3RsIGlvIHNjcmVlbnNob3QnIEFQSWApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNpbWN0bC5nZXRTY3JlZW5zaG90KCk7XG4gIH1cblxuICAvLyBSZXRyeSBmb3IgcmVhbCBkZXZpY2VzIG9ubHkuIEZhaWwgZmFzdCBvbiBTaW11bGF0b3IgaWYgc2ltY3RsIGRvZXMgbm90IHdvcmsgYXMgZXhwZWN0ZWRcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwoMiwgMTAwMCwgZ2V0U2NyZWVuc2hvdEZyb21XREEpO1xufTtcblxuY29tbWFuZHMuZ2V0RWxlbWVudFNjcmVlbnNob3QgPSBhc3luYyBmdW5jdGlvbiBnZXRFbGVtZW50U2NyZWVuc2hvdCAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMudXNlQXRvbXNFbGVtZW50KGVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZ2V0RWxlbWVudFNjcmVlbnNob3QnLCBbYXRvbXNFbGVtZW50XSk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L3NjcmVlbnNob3RgLCAnR0VUJyk7XG4gIGlmICghXy5pc1N0cmluZyhkYXRhKSkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBVbmFibGUgdG8gdGFrZSBhIHNjcmVlbnNob3Qgb2YgdGhlIGVsZW1lbnQgJHtlbH0uIFdEQSByZXR1cm5lZCAnJHtKU09OLnN0cmluZ2lmeShkYXRhKX0nYCk7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59O1xuXG5jb21tYW5kcy5nZXRWaWV3cG9ydFNjcmVlbnNob3QgPSBhc3luYyBmdW5jdGlvbiBnZXRWaWV3cG9ydFNjcmVlbnNob3QgKCkge1xuICBsZXQgc3RhdHVzQmFySGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXNCYXJIZWlnaHQoKTtcbiAgY29uc3Qgc2NyZWVuc2hvdCA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuc2hvdCgpO1xuXG4gIC8vIGlmIHdlIGRvbid0IGhhdmUgYSBzdGF0dXMgYmFyLCB0aGVyZSdzIG5vdGhpbmcgdG8gY3JvcCwgc28gd2UgY2FuIGF2b2lkXG4gIC8vIGV4dHJhIGNhbGxzIGFuZCByZXR1cm4gc3RyYWlnaHRhd2F5XG4gIGlmIChzdGF0dXNCYXJIZWlnaHQgPT09IDApIHtcbiAgICByZXR1cm4gc2NyZWVuc2hvdDtcbiAgfVxuXG4gIGNvbnN0IHNjYWxlID0gYXdhaXQgdGhpcy5nZXREZXZpY2VQaXhlbFJhdGlvKCk7XG4gIC8vIHN0YXR1cyBiYXIgaGVpZ2h0IGNvbWVzIGluIHVuc2NhbGVkLCBzbyBzY2FsZSBpdFxuICBzdGF0dXNCYXJIZWlnaHQgPSBNYXRoLnJvdW5kKHN0YXR1c0JhckhlaWdodCAqIHNjYWxlKTtcbiAgY29uc3Qgd2luZG93U2l6ZSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICBsZXQgcmVjdCA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogc3RhdHVzQmFySGVpZ2h0LFxuICAgIHdpZHRoOiB3aW5kb3dTaXplLndpZHRoICogc2NhbGUsXG4gICAgaGVpZ2h0OiAoKHdpbmRvd1NpemUuaGVpZ2h0ICogc2NhbGUpIC0gc3RhdHVzQmFySGVpZ2h0KVxuICB9O1xuICBsZXQgbmV3U2NyZWVuc2hvdCA9IGF3YWl0IGltYWdlVXRpbC5jcm9wQmFzZTY0SW1hZ2Uoc2NyZWVuc2hvdCwgcmVjdCk7XG4gIHJldHVybiBuZXdTY3JlZW5zaG90O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9zY3JlZW5zaG90cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9