UNPKG

appium-xcuitest-driver-conan

Version:

Appium driver for iOS using XCUITest for backend

140 lines (101 loc) 9.6 kB
'use strict'; var _regeneratorRuntime = require('babel-runtime/regenerator')['default']; var _Object$assign = require('babel-runtime/core-js/object/assign')['default']; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _appiumBaseDriver = require('appium-base-driver'); var _logger = require('../logger'); var _logger2 = _interopRequireDefault(_logger); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var SUPPORTED_METHODS = ['GET', 'POST', 'DELETE']; var GET_STATUS_COMMAND = 'getStatus'; var helpers = {}, extensions = {}; helpers.proxyCommand = function callee$0$0(endpoint, method, body) { var isSessionCommand = arguments.length <= 3 || arguments[3] === undefined ? true : arguments[3]; var proxy, cmdName, timeout, res, isCommandExpired, errMsg; return _regeneratorRuntime.async(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: if (!this.shutdownUnexpectedly) { context$1$0.next = 2; break; } return context$1$0.abrupt('return'); case 2: if (!endpoint) { _logger2['default'].errorAndThrow('Proxying requires an endpoint'); } else if (SUPPORTED_METHODS.indexOf(method) === -1) { _logger2['default'].errorAndThrow('Proxying only works for the following requests: ' + SUPPORTED_METHODS.join(', ')); } if (this.wda) { context$1$0.next = 5; break; } throw new Error("Can't call proxyCommand without WDA driver active"); case 5: proxy = isSessionCommand ? this.wda.jwproxy : this.wda.noSessionProxy; if (proxy) { context$1$0.next = 8; break; } throw new Error("Can't call proxyCommand without WDA proxy active"); case 8: cmdName = (0, _appiumBaseDriver.routeToCommandName)(endpoint, method); timeout = this._getCommandTimeout(cmdName); res = null; if (!timeout) { context$1$0.next = 25; break; } _logger2['default'].debug('Setting custom timeout to ' + timeout + ' ms for "' + cmdName + '" command'); isCommandExpired = false; context$1$0.next = 16; return _regeneratorRuntime.awrap(_bluebird2['default'].Promise.resolve(proxy.command(endpoint, method, body)).timeout(timeout)['catch'](_bluebird2['default'].Promise.TimeoutError, function () { isCommandExpired = true; })); case 16: res = context$1$0.sent; if (!isCommandExpired) { context$1$0.next = 23; break; } proxy.cancelActiveRequests(); errMsg = 'Appium did not get any response from "' + cmdName + '" command in ' + timeout + ' ms'; context$1$0.next = 22; return _regeneratorRuntime.awrap(this.startUnexpectedShutdown(new _appiumBaseDriver.errors.TimeoutError(errMsg))); case 22: _logger2['default'].errorAndThrow(errMsg); case 23: context$1$0.next = 28; break; case 25: context$1$0.next = 27; return _regeneratorRuntime.awrap(proxy.command(endpoint, method, body)); case 27: res = context$1$0.sent; case 28: if (!(res && res.status && parseInt(res.status, 10) !== 0)) { context$1$0.next = 30; break; } throw (0, _appiumBaseDriver.errorFromCode)(res.status, res.value); case 30: if (res && cmdName === GET_STATUS_COMMAND) { this.cachedWdaStatus = res; } return context$1$0.abrupt('return', res); case 32: case 'end': return context$1$0.stop(); } }, null, this); }; _Object$assign(extensions, helpers); exports.helpers = helpers; exports['default'] = extensions; // temporarily handle errors that can be returned //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wcm94eS1oZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O2dDQUEwRCxvQkFBb0I7O3NCQUM5RCxXQUFXOzs7O3dCQUNiLFVBQVU7Ozs7QUFFeEIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDcEQsSUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7O0FBRXZDLElBQUksT0FBTyxHQUFHLEVBQUU7SUFBRSxVQUFVLEdBQUcsRUFBRSxDQUFDOztBQUVsQyxPQUFPLENBQUMsWUFBWSxHQUFHLG9CQUFnQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUk7TUFBRSxnQkFBZ0IseURBQUcsSUFBSTtNQWM5RSxLQUFLLEVBS0wsT0FBTyxFQUNQLE9BQU8sRUFDVCxHQUFHLEVBR0QsZ0JBQWdCLEVBUVosTUFBTTs7OzthQS9CWixJQUFJLENBQUMsb0JBQW9COzs7Ozs7Ozs7QUFJN0IsWUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNiLDhCQUFJLGFBQWEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3BELE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDbkQsOEJBQUksYUFBYSxzREFBb0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFHLENBQUM7U0FDdEc7O1lBRUksSUFBSSxDQUFDLEdBQUc7Ozs7O2NBQ0wsSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUM7OztBQUVoRSxhQUFLLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjOztZQUN0RSxLQUFLOzs7OztjQUNGLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDOzs7QUFHL0QsZUFBTyxHQUFHLDBDQUFtQixRQUFRLEVBQUUsTUFBTSxDQUFDO0FBQzlDLGVBQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO0FBQzVDLFdBQUcsR0FBRyxJQUFJOzthQUNWLE9BQU87Ozs7O0FBQ1QsNEJBQUksS0FBSyxnQ0FBOEIsT0FBTyxpQkFBWSxPQUFPLGVBQVksQ0FBQztBQUMxRSx3QkFBZ0IsR0FBRyxLQUFLOzt5Q0FDaEIsc0JBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDckQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUNYLENBQUMsc0JBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxZQUFNO0FBQ25DLDBCQUFnQixHQUFHLElBQUksQ0FBQztTQUN6QixDQUFDOzs7QUFKaEIsV0FBRzs7YUFLQyxnQkFBZ0I7Ozs7O0FBQ2xCLGFBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQ3ZCLGNBQU0sOENBQTRDLE9BQU8scUJBQWdCLE9BQU87O3lDQUNoRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSx5QkFBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7OztBQUNuRSw0QkFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Ozs7Ozs7O3lDQUdoQixLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDOzs7QUFBakQsV0FBRzs7O2NBSUQsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBOzs7OztjQUMvQyxxQ0FBYyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUM7Ozs7QUFHNUMsWUFBSSxHQUFHLElBQUksT0FBTyxLQUFLLGtCQUFrQixFQUFFO0FBQ3pDLGNBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1NBQzVCOzs0Q0FFTSxHQUFHOzs7Ozs7O0NBQ1gsQ0FBQzs7QUFFRixlQUFjLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixPQUFPLEdBQVAsT0FBTztxQkFDRCxVQUFVIiwiZmlsZSI6ImxpYi9jb21tYW5kcy9wcm94eS1oZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvckZyb21Db2RlLCBlcnJvcnMsIHJvdXRlVG9Db21tYW5kTmFtZSB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IFNVUFBPUlRFRF9NRVRIT0RTID0gWydHRVQnLCAnUE9TVCcsICdERUxFVEUnXTtcbmNvbnN0IEdFVF9TVEFUVVNfQ09NTUFORCA9ICdnZXRTdGF0dXMnO1xuXG5sZXQgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmhlbHBlcnMucHJveHlDb21tYW5kID0gYXN5bmMgZnVuY3Rpb24gKGVuZHBvaW50LCBtZXRob2QsIGJvZHksIGlzU2Vzc2lvbkNvbW1hbmQgPSB0cnVlKSB7XG4gIGlmICh0aGlzLnNodXRkb3duVW5leHBlY3RlZGx5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFlbmRwb2ludCkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KCdQcm94eWluZyByZXF1aXJlcyBhbiBlbmRwb2ludCcpO1xuICB9IGVsc2UgaWYgKFNVUFBPUlRFRF9NRVRIT0RTLmluZGV4T2YobWV0aG9kKSA9PT0gLTEpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgUHJveHlpbmcgb25seSB3b3JrcyBmb3IgdGhlIGZvbGxvd2luZyByZXF1ZXN0czogJHtTVVBQT1JURURfTUVUSE9EUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgaWYgKCF0aGlzLndkYSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGNhbGwgcHJveHlDb21tYW5kIHdpdGhvdXQgV0RBIGRyaXZlciBhY3RpdmVcIik7XG4gIH1cbiAgY29uc3QgcHJveHkgPSBpc1Nlc3Npb25Db21tYW5kID8gdGhpcy53ZGEuandwcm94eSA6IHRoaXMud2RhLm5vU2Vzc2lvblByb3h5O1xuICBpZiAoIXByb3h5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY2FsbCBwcm94eUNvbW1hbmQgd2l0aG91dCBXREEgcHJveHkgYWN0aXZlXCIpO1xuICB9XG5cbiAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZShlbmRwb2ludCwgbWV0aG9kKTtcbiAgY29uc3QgdGltZW91dCA9IHRoaXMuX2dldENvbW1hbmRUaW1lb3V0KGNtZE5hbWUpO1xuICBsZXQgcmVzID0gbnVsbDtcbiAgaWYgKHRpbWVvdXQpIHtcbiAgICBsb2cuZGVidWcoYFNldHRpbmcgY3VzdG9tIHRpbWVvdXQgdG8gJHt0aW1lb3V0fSBtcyBmb3IgXCIke2NtZE5hbWV9XCIgY29tbWFuZGApO1xuICAgIGxldCBpc0NvbW1hbmRFeHBpcmVkID0gZmFsc2U7XG4gICAgcmVzID0gYXdhaXQgQi5Qcm9taXNlLnJlc29sdmUocHJveHkuY29tbWFuZChlbmRwb2ludCwgbWV0aG9kLCBib2R5KSlcbiAgICAgICAgICAgICAgICAgIC50aW1lb3V0KHRpbWVvdXQpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goQi5Qcm9taXNlLlRpbWVvdXRFcnJvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpc0NvbW1hbmRFeHBpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgIGlmIChpc0NvbW1hbmRFeHBpcmVkKSB7XG4gICAgICBwcm94eS5jYW5jZWxBY3RpdmVSZXF1ZXN0cygpO1xuICAgICAgY29uc3QgZXJyTXNnID0gYEFwcGl1bSBkaWQgbm90IGdldCBhbnkgcmVzcG9uc2UgZnJvbSBcIiR7Y21kTmFtZX1cIiBjb21tYW5kIGluICR7dGltZW91dH0gbXNgO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgZXJyb3JzLlRpbWVvdXRFcnJvcihlcnJNc2cpKTtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGVyck1zZyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlcyA9IGF3YWl0IHByb3h5LmNvbW1hbmQoZW5kcG9pbnQsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICAvLyB0ZW1wb3JhcmlseSBoYW5kbGUgZXJyb3JzIHRoYXQgY2FuIGJlIHJldHVybmVkXG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiBwYXJzZUludChyZXMuc3RhdHVzLCAxMCkgIT09IDApIHtcbiAgICB0aHJvdyBlcnJvckZyb21Db2RlKHJlcy5zdGF0dXMsIHJlcy52YWx1ZSk7XG4gIH1cblxuICBpZiAocmVzICYmIGNtZE5hbWUgPT09IEdFVF9TVEFUVVNfQ09NTUFORCkge1xuICAgIHRoaXMuY2FjaGVkV2RhU3RhdHVzID0gcmVzO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgaGVscGVycyk7XG5leHBvcnQgeyBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9