appium-xcuitest-driver-conan
Version:
Appium driver for iOS using XCUITest for backend
140 lines (101 loc) • 9.6 kB
JavaScript
;
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