appium-xcuitest-driver-conan
Version:
Appium driver for iOS using XCUITest for backend
142 lines (110 loc) • 7.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 _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _logger = require('../logger');
var _logger2 = _interopRequireDefault(_logger);
var commands = {},
helpers = {},
extensions = {};
commands.back = function callee$0$0() {
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.isWebContext()) {
context$1$0.next = 5;
break;
}
context$1$0.next = 3;
return _regeneratorRuntime.awrap(this.nativeBack());
case 3:
context$1$0.next = 7;
break;
case 5:
context$1$0.next = 7;
return _regeneratorRuntime.awrap(this.mobileWebNav('back'));
case 7:
case 'end':
return context$1$0.stop();
}
}, null, this);
};
helpers.nativeBack = function callee$0$0() {
var navBar, buttons, backButton;
return _regeneratorRuntime.async(function callee$0$0$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.prev = 0;
context$1$0.next = 3;
return _regeneratorRuntime.awrap(this.findNativeElementOrElements('class name', 'XCUIElementTypeNavigationBar', false));
case 3:
navBar = context$1$0.sent;
context$1$0.next = 6;
return _regeneratorRuntime.awrap(this.findNativeElementOrElements('class name', 'XCUIElementTypeButton', true, navBar));
case 6:
buttons = context$1$0.sent;
backButton = _lodash2['default'].filter(buttons, function (value) {
return value.label === 'Back';
})[0];
_logger2['default'].debug('Found navigation bar \'back\' button. Clicking.');
context$1$0.next = 11;
return _regeneratorRuntime.awrap(this.nativeClick(backButton));
case 11:
context$1$0.next = 16;
break;
case 13:
context$1$0.prev = 13;
context$1$0.t0 = context$1$0['catch'](0);
_logger2['default'].error('Unable to find navigation bar and back button.');
case 16:
case 'end':
return context$1$0.stop();
}
}, null, this, [[0, 13]]);
};
commands.forward = function callee$0$0() {
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.isWebContext()) {}
context$1$0.next = 3;
return _regeneratorRuntime.awrap(this.mobileWebNav('forward'));
case 3:
case 'end':
return context$1$0.stop();
}
}, null, this);
};
commands.closeWindow = function callee$0$0() {
var script;
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.isWebContext()) {
context$1$0.next = 2;
break;
}
throw new _appiumBaseDriver.errors.NotImplementedError();
case 2:
script = "return window.open('','_self').close();";
context$1$0.next = 5;
return _regeneratorRuntime.awrap(this.executeAtom('execute_script', [script, []], true));
case 5:
return context$1$0.abrupt('return', context$1$0.sent);
case 6:
case 'end':
return context$1$0.stop();
}
}, null, this);
};
_Object$assign(extensions, commands, helpers);
exports.commands = commands;
exports.helpers = helpers;
exports['default'] = extensions;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uYXZpZ2F0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztnQ0FBdUIsb0JBQW9COztzQkFDN0IsUUFBUTs7OztzQkFDTixXQUFXOzs7O0FBRzNCLElBQUksUUFBUSxHQUFHLEVBQUU7SUFBRSxPQUFPLEdBQUcsRUFBRTtJQUFFLFVBQVUsR0FBRyxFQUFFLENBQUM7O0FBRWpELFFBQVEsQ0FBQyxJQUFJLEdBQUc7Ozs7WUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFOzs7Ozs7eUNBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUU7Ozs7Ozs7O3lDQUVqQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQzs7Ozs7OztDQUVsQyxDQUFDOztBQUVGLE9BQU8sQ0FBQyxVQUFVLEdBQUc7TUFFYixNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVU7Ozs7Ozt5Q0FGSyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQzs7O0FBQXBHLGNBQU07O3lDQUNVLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQzs7O0FBQXJHLGVBQU87QUFDUCxrQkFBVSxHQUFHLG9CQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBQyxLQUFLO2lCQUFLLEtBQUssQ0FBQyxLQUFLLEtBQUssTUFBTTtTQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBQ3hFLDRCQUFJLEtBQUssbURBQWlELENBQUM7O3lDQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQUVsQyw0QkFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQzs7Ozs7OztDQUUvRCxDQUFDOztBQUVGLFFBQVEsQ0FBQyxPQUFPLEdBQUc7Ozs7QUFDakIsWUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUN6Qjs7eUNBQ0ssSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7Ozs7Ozs7Q0FDbkMsQ0FBQzs7QUFFRixRQUFRLENBQUMsV0FBVyxHQUFHO01BSWpCLE1BQU07Ozs7WUFITCxJQUFJLENBQUMsWUFBWSxFQUFFOzs7OztjQUNoQixJQUFJLHlCQUFPLG1CQUFtQixFQUFFOzs7QUFFcEMsY0FBTSxHQUFHLHlDQUF5Qzs7eUNBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDOzs7Ozs7Ozs7O0NBQ3BFLENBQUM7O0FBR0YsZUFBYyxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsR0FBUixRQUFRO1FBQUUsT0FBTyxHQUFQLE9BQU87cUJBQ1gsVUFBVSIsImZpbGUiOiJsaWIvY29tbWFuZHMvbmF2aWdhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuYmFjayA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgYXdhaXQgdGhpcy5uYXRpdmVCYWNrKCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgdGhpcy5tb2JpbGVXZWJOYXYoJ2JhY2snKTtcbiAgfVxufTtcblxuaGVscGVycy5uYXRpdmVCYWNrID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIGxldCBuYXZCYXIgPSBhd2FpdCB0aGlzLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVOYXZpZ2F0aW9uQmFyJywgZmFsc2UpO1xuICAgIGxldCBidXR0b25zID0gYXdhaXQgdGhpcy5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoJ2NsYXNzIG5hbWUnLCAnWENVSUVsZW1lbnRUeXBlQnV0dG9uJywgdHJ1ZSwgbmF2QmFyKTtcbiAgICBsZXQgYmFja0J1dHRvbiA9IF8uZmlsdGVyKGJ1dHRvbnMsICh2YWx1ZSkgPT4gdmFsdWUubGFiZWwgPT09ICdCYWNrJylbMF07XG4gICAgbG9nLmRlYnVnKGBGb3VuZCBuYXZpZ2F0aW9uIGJhciAnYmFjaycgYnV0dG9uLiBDbGlja2luZy5gKTtcbiAgICBhd2FpdCB0aGlzLm5hdGl2ZUNsaWNrKGJhY2tCdXR0b24pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3IoJ1VuYWJsZSB0byBmaW5kIG5hdmlnYXRpb24gYmFyIGFuZCBiYWNrIGJ1dHRvbi4nKTtcbiAgfVxufTtcblxuY29tbWFuZHMuZm9yd2FyZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gIH1cbiAgYXdhaXQgdGhpcy5tb2JpbGVXZWJOYXYoJ2ZvcndhcmQnKTtcbn07XG5cbmNvbW1hbmRzLmNsb3NlV2luZG93ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuICBsZXQgc2NyaXB0ID0gXCJyZXR1cm4gd2luZG93Lm9wZW4oJycsJ19zZWxmJykuY2xvc2UoKTtcIjtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW3NjcmlwdCwgW11dLCB0cnVlKTtcbn07XG5cblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==