gst-atom-xcuitest-driver
Version:
ATOM driver for iOS using XCUITest for backend
139 lines (112 loc) • 12.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.helpers = void 0;
require("source-map-support/register");
var _gstAtomBaseDriver = require("gst-atom-base-driver");
var _logger = _interopRequireDefault(require("../logger"));
var _bluebird = _interopRequireDefault(require("bluebird"));
const GET = 'GET';
const POST = 'POST';
const DELETE = 'DELETE';
const SUPPORTED_METHODS = [GET, POST, DELETE];
let helpers = {},
extensions = {};
exports.helpers = helpers;
const WDA_ROUTES = {
'/wda/touch/perform': {
POST: 'performTouch'
},
'/wda/touch/multi/perform': {
POST: 'performMultiAction'
},
'/wda/screen': {
GET: 'getScreenInfo'
},
'/wda/alert/buttons': {
GET: 'getAlertButtons'
},
'/wda/apps/launch': {
POST: 'mobileLaunchApp'
},
'/wda/apps/terminate': {
POST: 'mobileTerminateApp'
},
'/wda/apps/activate': {
POST: 'mobileActivateApp'
},
'/wda/apps/state': {
POST: 'mobileQueryAppState'
},
'/wda/keys': {
POST: 'keys'
},
'/wda/touch_id': {
POST: 'touchId'
},
'/wda/keyboard/dismiss': {
POST: 'hideKeyboard'
},
'/wda/lock': {
POST: 'lock'
},
'/wda/unlock': {
POST: 'unlock'
},
'/wda/locked': {
GET: 'isLocked'
},
'/wda/tap/nil': {
POST: 'clickCoords'
},
'/window/size': {
GET: 'getWindowSize'
}
};
function wdaRouteToCommandName(endpoint, method) {
return WDA_ROUTES[endpoint] ? WDA_ROUTES[endpoint][method] : null;
}
helpers.proxyCommand = async function proxyCommand(endpoint, method, body, isSessionCommand = true) {
if (this.shutdownUnexpectedly) {
return;
}
if (!endpoint) {
_logger.default.errorAndThrow('Proxying requires an endpoint');
} else if (!SUPPORTED_METHODS.includes(method)) {
_logger.default.errorAndThrow(`Proxying only works for the following requests: ${SUPPORTED_METHODS.join(', ')}`);
}
if (!this.wda) {
throw new Error('Cannot call proxyCommand without WDA driver active');
}
const proxy = isSessionCommand ? this.wda.jwproxy : this.wda.noSessionProxy;
if (!proxy) {
throw new Error('Cannot call proxyCommand without WDA proxy active');
}
let cmdName = wdaRouteToCommandName(endpoint, method) || (0, _gstAtomBaseDriver.routeToCommandName)(endpoint, method);
const timeout = this._getCommandTimeout(cmdName);
if (!cmdName) {
cmdName = 'Unknown';
_logger.default.info(`Proxying to WDA with an unknown route: ${method} ${endpoint}`);
}
if (!timeout) {
return await proxy.command(endpoint, method, body);
}
_logger.default.debug(`Setting custom timeout to ${timeout} ms for '${cmdName}' command`);
let isCommandExpired = false;
const res = await _bluebird.default.resolve(proxy.command(endpoint, method, body)).timeout(timeout).catch(_bluebird.default.Promise.TimeoutError, () => {
isCommandExpired = true;
});
if (isCommandExpired) {
proxy.cancelActiveRequests();
const errMsg = `Appium did not get any response from '${cmdName}' command in ${timeout} ms`;
await this.startUnexpectedShutdown(new _gstAtomBaseDriver.errors.TimeoutError(errMsg));
_logger.default.errorAndThrow(errMsg);
}
return res;
};
Object.assign(extensions, helpers);
var _default = extensions;
exports.default = _default;require('source-map-support').install();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wcm94eS1oZWxwZXIuanMiXSwibmFtZXMiOlsiR0VUIiwiUE9TVCIsIkRFTEVURSIsIlNVUFBPUlRFRF9NRVRIT0RTIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJXREFfUk9VVEVTIiwid2RhUm91dGVUb0NvbW1hbmROYW1lIiwiZW5kcG9pbnQiLCJtZXRob2QiLCJwcm94eUNvbW1hbmQiLCJib2R5IiwiaXNTZXNzaW9uQ29tbWFuZCIsInNodXRkb3duVW5leHBlY3RlZGx5IiwibG9nIiwiZXJyb3JBbmRUaHJvdyIsImluY2x1ZGVzIiwiam9pbiIsIndkYSIsIkVycm9yIiwicHJveHkiLCJqd3Byb3h5Iiwibm9TZXNzaW9uUHJveHkiLCJjbWROYW1lIiwidGltZW91dCIsIl9nZXRDb21tYW5kVGltZW91dCIsImluZm8iLCJjb21tYW5kIiwiZGVidWciLCJpc0NvbW1hbmRFeHBpcmVkIiwicmVzIiwiQiIsInJlc29sdmUiLCJjYXRjaCIsIlByb21pc2UiLCJUaW1lb3V0RXJyb3IiLCJjYW5jZWxBY3RpdmVSZXF1ZXN0cyIsImVyck1zZyIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwiZXJyb3JzIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLEdBQUcsR0FBRyxLQUFaO0FBQ0EsTUFBTUMsSUFBSSxHQUFHLE1BQWI7QUFDQSxNQUFNQyxNQUFNLEdBQUcsUUFBZjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHLENBQUNILEdBQUQsRUFBTUMsSUFBTixFQUFZQyxNQUFaLENBQTFCO0FBRUEsSUFBSUUsT0FBTyxHQUFHLEVBQWQ7QUFBQSxJQUFrQkMsVUFBVSxHQUFHLEVBQS9COztBQUVBLE1BQU1DLFVBQVUsR0FBRztBQUNqQix3QkFBc0I7QUFDcEJMLElBQUFBLElBQUksRUFBRTtBQURjLEdBREw7QUFJakIsOEJBQTRCO0FBQzFCQSxJQUFBQSxJQUFJLEVB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QUFXLDZCQUE0QkosT0FBUSxZQUFXRCxPQUFRLFdBQWxFOztBQUNBLE1BQUlNLGdCQUFnQixHQUFHLEtBQXZCO0FBQ0EsUUFBTUMsR0FBRyxHQUFHLE1BQU1DLGtCQUFFQyxPQUFGLENBQVVaLEtBQUssQ0FBQ08sT0FBTixDQUFjbkIsUUFBZCxFQUF3QkMsTUFBeEIsRUFBZ0NFLElBQWhDLENBQVYsRUFDSGEsT0FERyxDQUNLQSxPQURMLEVBRUhTLEtBRkcsQ0FFR0Ysa0JBQUVHLE9BQUYsQ0FBVUMsWUFGYixFQUUyQixNQUFNO0FBQ25DTixJQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNELEdBSkcsQ0FBbEI7O0FBS0EsTUFBSUEsZ0JBQUosRUFBc0I7QUFDcEJULElBQUFBLEtBQUssQ0FBQ2dCLG9CQUFOO0FBQ0EsVUFBTUMsTUFBTSxHQUFJLHlDQUF3Q2QsT0FBUSxnQkFBZUMsT0FBUSxLQUF2RjtBQUNBLFVBQU0sS0FBS2MsdUJBQUwsQ0FBNkIsSUFBSUMsMEJBQU9KLFlBQVgsQ0FBd0JFLE1BQXhCLENBQTdCLENBQU47O0FBQ0F2QixvQkFBSUMsYUFBSixDQUFrQnNCLE1BQWxCO0FBQ0Q7O0FBQ0QsU0FBT1AsR0FBUDtBQUNELENBN0NEOztBQStDQVUsTUFBTSxDQUFDQyxNQUFQLENBQWNwQyxVQUFkLEVBQTBCRCxPQUExQjtlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzLCByb3V0ZVRvQ29tbWFuZE5hbWUgfSBmcm9tICdnc3QtYXRvbS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cblxuY29uc3QgR0VUID0gJ0dFVCc7XG5jb25zdCBQT1NUID0gJ1BPU1QnO1xuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XG5jb25zdCBTVVBQT1JURURfTUVUSE9EUyA9IFtHRVQsIFBPU1QsIERFTEVURV07XG5cbmxldCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0RBX1JPVVRFUyA9IHtcbiAgJy93ZGEvdG91Y2gvcGVyZm9ybSc6IHtcbiAgICBQT1NUOiAncGVyZm9ybVRvdWNoJyxcbiAgfSxcbiAgJy93ZGEvdG91Y2gvbXVsdGkvcGVyZm9ybSc6IHtcbiAgICBQT1NUOiAncGVyZm9ybU11bHRpQWN0aW9uJyxcbiAgfSxcbiAgJy93ZGEvc2NyZWVuJzoge1xuICAgIEdFVDogJ2dldFNjcmVlbkluZm8nLFxuICB9LFxuICAnL3dkYS9hbGVydC9idXR0b25zJzoge1xuICAgIEdFVDogJ2dldEFsZXJ0QnV0dG9ucycsXG4gIH0sXG4gICcvd2RhL2FwcHMvbGF1bmNoJzoge1xuICAgIFBPU1Q6ICdtb2JpbGVMYXVuY2hBcHAnLFxuICB9LFxuICAnL3dkYS9hcHBzL3Rlcm1pbmF0ZSc6IHtcbiAgICBQT1NUOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgfSxcbiAgJy93ZGEvYXBwcy9hY3RpdmF0ZSc6IHtcbiAgICBQT1NUOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICB9LFxuICAnL3dkYS9hcHBzL3N0YXRlJzoge1xuICAgIFBPU1Q6ICdtb2JpbGVRdWVyeUFwcFN0YXRlJyxcbiAgfSxcbiAgJy93ZGEva2V5cyc6IHtcbiAgICBQT1NUOiAna2V5cycsXG4gIH0sXG4gICcvd2RhL3RvdWNoX2lkJzoge1xuICAgIFBPU1Q6ICd0b3VjaElkJyxcbiAgfSxcbiAgJy93ZGEva2V5Ym9hcmQvZGlzbWlzcyc6IHtcbiAgICBQT1NUOiAnaGlkZUtleWJvYXJkJyxcbiAgfSxcbiAgJy93ZGEvbG9jayc6IHtcbiAgICBQT1NUOiAnbG9jaycsXG4gIH0sXG4gICcvd2RhL3VubG9jayc6IHtcbiAgICBQT1NUOiAndW5sb2NrJyxcbiAgfSxcbiAgJy93ZGEvbG9ja2VkJzoge1xuICAgIEdFVDogJ2lzTG9ja2VkJyxcbiAgfSxcbiAgJy93ZGEvdGFwL25pbCc6IHtcbiAgICBQT1NUOiAnY2xpY2tDb29yZHMnLFxuICB9LFxuICAnL3dpbmRvdy9zaXplJzoge1xuICAgIEdFVDogJ2dldFdpbmRvd1NpemUnLFxuICB9LFxufTtcblxuZnVuY3Rpb24gd2RhUm91dGVUb0NvbW1hbmROYW1lIChlbmRwb2ludCwgbWV0aG9kKSB7XG4gIHJldHVybiBXREFfUk9VVEVTW2VuZHBvaW50XSA/IFdEQV9ST1VURVNbZW5kcG9pbnRdW21ldGhvZF0gOiBudWxsO1xufVxuXG5oZWxwZXJzLnByb3h5Q29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIHByb3h5Q29tbWFuZCAoZW5kcG9pbnQsIG1ldGhvZCwgYm9keSwgaXNTZXNzaW9uQ29tbWFuZCA9IHRydWUpIHtcbiAgaWYgKHRoaXMuc2h1dGRvd25VbmV4cGVjdGVkbHkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWVuZHBvaW50KSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ1Byb3h5aW5nIHJlcXVpcmVzIGFuIGVuZHBvaW50Jyk7XG4gIH0gZWxzZSBpZiAoIVNVUFBPUlRFRF9NRVRIT0RTLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgUHJveHlpbmcgb25seSB3b3JrcyBmb3IgdGhlIGZvbGxvd2luZyByZXF1ZXN0czogJHtTVVBQT1JURURfTUVUSE9EUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgaWYgKCF0aGlzLndkYSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgcHJveHlDb21tYW5kIHdpdGhvdXQgV0RBIGRyaXZlciBhY3RpdmUnKTtcbiAgfVxuICBjb25zdCBwcm94eSA9IGlzU2Vzc2lvbkNvbW1hbmQgPyB0aGlzLndkYS5qd3Byb3h5IDogdGhpcy53ZGEubm9TZXNzaW9uUHJveHk7XG4gIGlmICghcHJveHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjYWxsIHByb3h5Q29tbWFuZCB3aXRob3V0IFdEQSBwcm94eSBhY3RpdmUnKTtcbiAgfVxuXG4gIGxldCBjbWROYW1lID0gd2RhUm91dGVUb0NvbW1hbmROYW1lKGVuZHBvaW50LCBtZXRob2QpIHx8IHJvdXRlVG9Db21tYW5kTmFtZShlbmRwb2ludCwgbWV0aG9kKTtcbiAgY29uc3QgdGltZW91dCA9IHRoaXMuX2dldENvbW1hbmRUaW1lb3V0KGNtZE5hbWUpO1xuICBpZiAoIWNtZE5hbWUpIHtcbiAgICAvLyB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gZXhjZXB0IHdoZW4gYWRkaW5nIG5ldyByb3V0ZXNcbiAgICBjbWROYW1lID0gJ1Vua25vd24nOyAvLyBqdXN0IGZvciBsb2dnaW5nIHB1cnBvc2VzIGJlbG93XG4gICAgbG9nLmluZm8oYFByb3h5aW5nIHRvIFdEQSB3aXRoIGFuIHVua25vd24gcm91dGU6ICR7bWV0aG9kfSAke2VuZHBvaW50fWApO1xuICB9XG5cbiAgaWYgKCF0aW1lb3V0KSB7XG4gICAgcmV0dXJuIGF3YWl0IHByb3h5LmNvbW1hbmQoZW5kcG9pbnQsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBsb2cuZGVidWcoYFNldHRpbmcgY3VzdG9tIHRpbWVvdXQgdG8gJHt0aW1lb3V0fSBtcyBmb3IgJyR7Y21kTmFtZX0nIGNvbW1hbmRgKTtcbiAgbGV0IGlzQ29tbWFuZEV4cGlyZWQgPSBmYWxzZTtcbiAgY29uc3QgcmVzID0gYXdhaXQgQi5yZXNvbHZlKHByb3h5LmNvbW1hbmQoZW5kcG9pbnQsIG1ldGhvZCwgYm9keSkpXG4gICAgICAgICAgICAgICAgLnRpbWVvdXQodGltZW91dClcbiAgICAgICAgICAgICAgICAuY2F0Y2goQi5Qcm9taXNlLlRpbWVvdXRFcnJvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaXNDb21tYW5kRXhwaXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gIGlmIChpc0NvbW1hbmRFeHBpcmVkKSB7XG4gICAgcHJveHkuY2FuY2VsQWN0aXZlUmVxdWVzdHMoKTtcbiAgICBjb25zdCBlcnJNc2cgPSBgQXBwaXVtIGRpZCBub3QgZ2V0IGFueSByZXNwb25zZSBmcm9tICcke2NtZE5hbWV9JyBjb21tYW5kIGluICR7dGltZW91dH0gbXNgO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IGVycm9ycy5UaW1lb3V0RXJyb3IoZXJyTXNnKSk7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coZXJyTXNnKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9wcm94eS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==