appium-xcuitest-driver-conan
Version:
Appium driver for iOS using XCUITest for backend
163 lines (132 loc) • 8.86 kB
JavaScript
;
var _createClass = require('babel-runtime/helpers/create-class')['default'];
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _teen_process = require('teen_process');
var _appiumSupport = require('appium-support');
var _logger = require('./logger');
var _logger2 = _interopRequireDefault(_logger);
var IOSDEPLOY_PATH = 'ios-deploy';
var IOSDeploy = (function () {
function IOSDeploy(udid) {
_classCallCheck(this, IOSDeploy);
this.udid = udid;
this.cmd = IOSDEPLOY_PATH; // this.cmd is in accordance with iDevice
}
_createClass(IOSDeploy, [{
key: 'checkStatus',
value: function checkStatus() {
return _regeneratorRuntime.async(function checkStatus$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _regeneratorRuntime.awrap(_appiumSupport.fs.which(this.cmd));
case 2:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'remove',
value: function remove(bundleid) {
var remove;
return _regeneratorRuntime.async(function remove$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
remove = ['--uninstall_only', '--id', this.udid, '--bundle_id', bundleid];
context$2$0.prev = 1;
context$2$0.next = 4;
return _regeneratorRuntime.awrap((0, _teen_process.exec)(this.cmd, remove));
case 4:
context$2$0.next = 10;
break;
case 6:
context$2$0.prev = 6;
context$2$0.t0 = context$2$0['catch'](1);
_logger2['default'].debug('Error : ' + context$2$0.t0.message);
throw new Error('Could not remove app: \'' + context$2$0.t0.message + '\'');
case 10:
case 'end':
return context$2$0.stop();
}
}, null, this, [[1, 6]]);
}
}, {
key: 'removeApp',
value: function removeApp(bundleId) {
return _regeneratorRuntime.async(function removeApp$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _regeneratorRuntime.awrap(this.remove(bundleId));
case 2:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'install',
value: function install(app) {
var install;
return _regeneratorRuntime.async(function install$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
install = ['--id', this.udid, '--uninstall', '--bundle', app];
context$2$0.prev = 1;
context$2$0.next = 4;
return _regeneratorRuntime.awrap((0, _teen_process.exec)(this.cmd, install));
case 4:
context$2$0.next = 9;
break;
case 6:
context$2$0.prev = 6;
context$2$0.t0 = context$2$0['catch'](1);
throw new Error('Could not install app: \'' + context$2$0.t0.message + '\'');
case 9:
case 'end':
return context$2$0.stop();
}
}, null, this, [[1, 6]]);
}
}, {
key: 'isAppInstalled',
value: function isAppInstalled(bundleid) {
var isInstalled, _ref, stdout;
return _regeneratorRuntime.async(function isAppInstalled$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
isInstalled = ['--exists', '--id', this.udid, '--bundle_id', bundleid];
context$2$0.prev = 1;
context$2$0.next = 4;
return _regeneratorRuntime.awrap((0, _teen_process.exec)(this.cmd, isInstalled));
case 4:
_ref = context$2$0.sent;
stdout = _ref.stdout;
return context$2$0.abrupt('return', stdout && stdout.indexOf("true") > -1);
case 9:
context$2$0.prev = 9;
context$2$0.t0 = context$2$0['catch'](1);
// error 255 is just ios-deploy's way of saying it is not installed
if (context$2$0.t0.code !== 255) {
_logger2['default'].debug('Error checking install status: \'' + context$2$0.t0.message + '\'');
}
return context$2$0.abrupt('return', false);
case 13:
case 'end':
return context$2$0.stop();
}
}, null, this, [[1, 9]]);
}
}]);
return IOSDeploy;
})();
exports['default'] = IOSDeploy;
module.exports = exports['default'];
// make sure we actually have the program
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pb3MtZGVwbG95LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OzRCQUFxQixjQUFjOzs2QkFDaEIsZ0JBQWdCOztzQkFDaEIsVUFBVTs7OztBQUU3QixJQUFNLGNBQWMsZUFBZSxDQUFDOztJQUU5QixTQUFTO0FBRUQsV0FGUixTQUFTLENBRUEsSUFBSSxFQUFFOzBCQUZmLFNBQVM7O0FBR1gsUUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsUUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUM7R0FDM0I7O2VBTEcsU0FBUzs7V0FPSzs7Ozs7NkNBRVYsa0JBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Ozs7Ozs7S0FDekI7OztXQUVZLGdCQUFDLFFBQVE7VUFDaEIsTUFBTTs7OztBQUFOLGtCQUFNLEdBQUcsNkJBQTZCLElBQUksQ0FBQyxJQUFJLGlCQUFpQixRQUFRLENBQUM7Ozs2Q0FFckUsd0JBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFFNUIsZ0NBQU8sS0FBSyxjQUFZLGVBQUksT0FBTyxDQUFHLENBQUM7a0JBQ2pDLElBQUksS0FBSyw4QkFBMkIsZUFBSSxPQUFPLFFBQUk7Ozs7Ozs7S0FFNUQ7OztXQUVlLG1CQUFDLFFBQVE7Ozs7OzZDQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztLQUM1Qjs7O1dBRWEsaUJBQUMsR0FBRztVQUNaLE9BQU87Ozs7QUFBUCxtQkFBTyxHQUFHLFNBQVMsSUFBSSxDQUFDLElBQUksNkJBQTZCLEdBQUcsQ0FBQzs7OzZDQUV6RCx3QkFBSyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQzs7Ozs7Ozs7O2tCQUV2QixJQUFJLEtBQUssK0JBQTRCLGVBQUksT0FBTyxRQUFJOzs7Ozs7O0tBRTdEOzs7V0FFb0Isd0JBQUMsUUFBUTtVQUN4QixXQUFXLFFBRVIsTUFBTTs7Ozs7QUFGVCx1QkFBVyxHQUFHLHFCQUFxQixJQUFJLENBQUMsSUFBSSxpQkFBaUIsUUFBUSxDQUFDOzs7NkNBRW5ELHdCQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDOzs7O0FBQTNDLGtCQUFNLFFBQU4sTUFBTTtnREFDSCxNQUFNLElBQUssTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQUFBQzs7Ozs7OztBQUcvQyxnQkFBSSxlQUFJLElBQUksS0FBSyxHQUFHLEVBQUU7QUFDcEIsa0NBQU8sS0FBSyx1Q0FBb0MsZUFBSSxPQUFPLFFBQUksQ0FBQzthQUNqRTtnREFDTSxLQUFLOzs7Ozs7O0tBRWY7OztTQS9DRyxTQUFTOzs7cUJBa0RBLFNBQVMiLCJmaWxlIjoibGliL2lvcy1kZXBsb3kuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5cbmNvbnN0IElPU0RFUExPWV9QQVRIID0gYGlvcy1kZXBsb3lgO1xuXG5jbGFzcyBJT1NEZXBsb3kge1xuXG4gIGNvbnN0cnVjdG9yICh1ZGlkKSB7XG4gICAgdGhpcy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLmNtZCA9IElPU0RFUExPWV9QQVRIOyAvLyB0aGlzLmNtZCBpcyBpbiBhY2NvcmRhbmNlIHdpdGggaURldmljZVxuICB9XG5cbiAgYXN5bmMgY2hlY2tTdGF0dXMgKCkge1xuICAgIC8vIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYXZlIHRoZSBwcm9ncmFtXG4gICAgYXdhaXQgZnMud2hpY2godGhpcy5jbWQpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlIChidW5kbGVpZCkge1xuICAgIGxldCByZW1vdmUgPSBbYC0tdW5pbnN0YWxsX29ubHlgLCBgLS1pZGAsIHRoaXMudWRpZCwgYC0tYnVuZGxlX2lkYCwgYnVuZGxlaWRdO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjKHRoaXMuY21kLCByZW1vdmUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBFcnJvciA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCByZW1vdmUgYXBwOiAnJHtlcnIubWVzc2FnZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlQXBwIChidW5kbGVJZCkge1xuICAgIGF3YWl0IHRoaXMucmVtb3ZlKGJ1bmRsZUlkKTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGwgKGFwcCkge1xuICAgIGxldCBpbnN0YWxsID0gW2AtLWlkYCwgdGhpcy51ZGlkLCBgLS11bmluc3RhbGxgLCBgLS1idW5kbGVgLCBhcHBdO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjKHRoaXMuY21kLCBpbnN0YWxsKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGluc3RhbGwgYXBwOiAnJHtlcnIubWVzc2FnZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNBcHBJbnN0YWxsZWQgKGJ1bmRsZWlkKSB7XG4gICAgbGV0IGlzSW5zdGFsbGVkID0gW2AtLWV4aXN0c2AsIGAtLWlkYCwgdGhpcy51ZGlkLCBgLS1idW5kbGVfaWRgLCBidW5kbGVpZF07XG4gICAgdHJ5IHtcbiAgICAgIGxldCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWModGhpcy5jbWQsIGlzSW5zdGFsbGVkKTtcbiAgICAgIHJldHVybiAoc3Rkb3V0ICYmIChzdGRvdXQuaW5kZXhPZihcInRydWVcIikgPiAtMSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gZXJyb3IgMjU1IGlzIGp1c3QgaW9zLWRlcGxveSdzIHdheSBvZiBzYXlpbmcgaXQgaXMgbm90IGluc3RhbGxlZFxuICAgICAgaWYgKGVyci5jb2RlICE9PSAyNTUpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBFcnJvciBjaGVja2luZyBpbnN0YWxsIHN0YXR1czogJyR7ZXJyLm1lc3NhZ2V9J2ApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJT1NEZXBsb3k7XG4iXSwic291cmNlUm9vdCI6Ii4uLy4uIn0=