UNPKG

appium-ios-simulator

Version:
198 lines (147 loc) 13.4 kB
'use strict'; var _regeneratorRuntime = require('babel-runtime/regenerator')['default']; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _simulatorXcode6 = require('./simulator-xcode-6'); var _simulatorXcode62 = _interopRequireDefault(_simulatorXcode6); var _simulatorXcode7 = require('./simulator-xcode-7'); var _simulatorXcode72 = _interopRequireDefault(_simulatorXcode7); var _simulatorXcode73 = require('./simulator-xcode-7.3'); var _simulatorXcode732 = _interopRequireDefault(_simulatorXcode73); var _simulatorXcode8 = require('./simulator-xcode-8'); var _simulatorXcode82 = _interopRequireDefault(_simulatorXcode8); var _simulatorXcode9 = require('./simulator-xcode-9'); var _simulatorXcode92 = _interopRequireDefault(_simulatorXcode9); var _utils = require('./utils'); var _appiumXcode = require('appium-xcode'); var _appiumXcode2 = _interopRequireDefault(_appiumXcode); var _logger = require('./logger'); var _logger2 = _interopRequireDefault(_logger); function handleUnsupportedXcode(xcodeVersion) { if (xcodeVersion.major < 6) { throw new Error('Tried to use an iOS simulator with xcode ' + ('version ' + xcodeVersion.versionString + ' but only Xcode version ') + '6.0.0 and up are supported'); } else if (xcodeVersion.major >= 10) { throw new Error('Xcode version ' + xcodeVersion.versionString + ' is ' + 'not yet supported'); } } /** * Finds and returns the corresponding Simulator instance for the given ID. * * @param {string} udid - The ID of an existing Simulator. * @throws {Error} If the Simulator with given udid does not exist in devices list. * If you want to create a new simulator, you can use the `createDevice()` method of * [node-simctl](github.com/appium/node-simctl). * @return {object} Simulator object associated with the udid passed in. */ function getSimulator(udid) { var xcodeVersion; return _regeneratorRuntime.async(function getSimulator$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: context$1$0.next = 2; return _regeneratorRuntime.awrap(_appiumXcode2['default'].getVersion(true)); case 2: xcodeVersion = context$1$0.sent; context$1$0.next = 5; return _regeneratorRuntime.awrap((0, _utils.simExists)(udid)); case 5: if (context$1$0.sent) { context$1$0.next = 7; break; } throw new Error('No sim found with udid ' + udid); case 7: handleUnsupportedXcode(xcodeVersion); _logger2['default'].info('Constructing iOS simulator for Xcode version ' + xcodeVersion.versionString + ' ' + ('with udid \'' + udid + '\'')); if (!(xcodeVersion.major === 6)) { context$1$0.next = 13; break; } return context$1$0.abrupt('return', new _simulatorXcode62['default'](udid, xcodeVersion)); case 13: if (!(xcodeVersion.major >= 7 && xcodeVersion.major < 8)) { context$1$0.next = 21; break; } if (!(xcodeVersion.minor < 3)) { context$1$0.next = 18; break; } return context$1$0.abrupt('return', new _simulatorXcode72['default'](udid, xcodeVersion)); case 18: return context$1$0.abrupt('return', new _simulatorXcode732['default'](udid, xcodeVersion)); case 19: context$1$0.next = 27; break; case 21: if (!(xcodeVersion.major === 8)) { context$1$0.next = 25; break; } return context$1$0.abrupt('return', new _simulatorXcode82['default'](udid, xcodeVersion)); case 25: if (!(xcodeVersion.major === 9)) { context$1$0.next = 27; break; } return context$1$0.abrupt('return', new _simulatorXcode92['default'](udid, xcodeVersion)); case 27: case 'end': return context$1$0.stop(); } }, null, this); } /** * Takes a set of options and finds the correct device string in order for Instruments to * identify the correct simulator. * * @param {object} opts - The options available are: * - `deviceName` - a name for the device. If the given device name starts with `=`, the name, less the equals sign, is returned. * - `platformVersion` - the version of iOS to use. Defaults to the current Xcode's maximum SDK version. * - `forceIphone` - force the configuration of the device string to iPhone. Defaults to `false`. * - `forceIpad` - force the configuration of the device string to iPad. Defaults to `false`. * If both `forceIphone` and `forceIpad` are true, the device will be forced to iPhone. * * @return {string} The found device string, for example: * 'iPhone 5 (8.4)' with Xcode 7+ * 'iPhone 5 (8.4 Simulator)' with Xcode 6+ */ function getDeviceString(opts) { var xcodeVersion; return _regeneratorRuntime.async(function getDeviceString$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: context$1$0.next = 2; return _regeneratorRuntime.awrap(_appiumXcode2['default'].getVersion(true)); case 2: xcodeVersion = context$1$0.sent; handleUnsupportedXcode(xcodeVersion); _logger2['default'].info('Retrieving device name string for Xcode version ' + xcodeVersion.versionString); if (!(xcodeVersion.major >= 8)) { context$1$0.next = 9; break; } return context$1$0.abrupt('return', _simulatorXcode72['default'].getDeviceString(opts)); case 9: if (!(xcodeVersion.major === 7)) { context$1$0.next = 13; break; } return context$1$0.abrupt('return', _simulatorXcode72['default'].getDeviceString(opts)); case 13: if (!(xcodeVersion.major === 6)) { context$1$0.next = 15; break; } return context$1$0.abrupt('return', _simulatorXcode62['default'].getDeviceString(opts)); case 15: case 'end': return context$1$0.stop(); } }, null, this); } exports.getSimulator = getSimulator; exports.getDeviceString = getDeviceString; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zaW11bGF0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OzsrQkFBNEIscUJBQXFCOzs7OytCQUNyQixxQkFBcUI7Ozs7Z0NBQ3BCLHVCQUF1Qjs7OzsrQkFDeEIscUJBQXFCOzs7OytCQUNyQixxQkFBcUI7Ozs7cUJBQ3ZCLFNBQVM7OzJCQUNqQixjQUFjOzs7O3NCQUNoQixVQUFVOzs7O0FBRzFCLFNBQVMsc0JBQXNCLENBQUUsWUFBWSxFQUFFO0FBQzdDLE1BQUksWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDMUIsVUFBTSxJQUFJLEtBQUssQ0FBQyw0REFDVyxZQUFZLENBQUMsYUFBYSw4QkFBMEIsK0JBQ25DLENBQUMsQ0FBQztHQUMvQyxNQUFNLElBQUksWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7QUFDbkMsVUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBaUIsWUFBWSxDQUFDLGFBQWEsK0JBQ3hCLENBQUMsQ0FBQztHQUN0QztDQUNGOzs7Ozs7Ozs7OztBQVdELFNBQWUsWUFBWSxDQUFFLElBQUk7TUFDM0IsWUFBWTs7Ozs7eUNBQVMseUJBQU0sVUFBVSxDQUFDLElBQUksQ0FBQzs7O0FBQTNDLG9CQUFZOzt5Q0FFTCxzQkFBVSxJQUFJLENBQUM7Ozs7Ozs7O2NBQ2xCLElBQUksS0FBSyw2QkFBMkIsSUFBSSxDQUFHOzs7O0FBR25ELDhCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUVyQyw0QkFBSSxJQUFJLENBQUMsa0RBQWdELFlBQVksQ0FBQyxhQUFhLDJCQUM1RCxJQUFJLFFBQUcsQ0FBQyxDQUFDOztjQUM1QixZQUFZLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQTs7Ozs7NENBQ25CLGlDQUFvQixJQUFJLEVBQUUsWUFBWSxDQUFDOzs7Y0FDckMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7Ozs7O2NBQ3RELFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBOzs7Ozs0Q0FDakIsaUNBQW9CLElBQUksRUFBRSxZQUFZLENBQUM7Ozs0Q0FFdkMsa0NBQXFCLElBQUksRUFBRSxZQUFZLENBQUM7Ozs7Ozs7Y0FFeEMsWUFBWSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUE7Ozs7OzRDQUMxQixpQ0FBb0IsSUFBSSxFQUFFLFlBQVksQ0FBQzs7O2NBQ3JDLFlBQVksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFBOzs7Ozs0Q0FDMUIsaUNBQW9CLElBQUksRUFBRSxZQUFZLENBQUM7Ozs7Ozs7Q0FFakQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJELFNBQWUsZUFBZSxDQUFFLElBQUk7TUFDOUIsWUFBWTs7Ozs7eUNBQVMseUJBQU0sVUFBVSxDQUFDLElBQUksQ0FBQzs7O0FBQTNDLG9CQUFZOztBQUVoQiw4QkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQzs7QUFFckMsNEJBQUksSUFBSSxzREFBb0QsWUFBWSxDQUFDLGFBQWEsQ0FBRyxDQUFDOztjQUN0RixZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTs7Ozs7NENBQ2xCLDZCQUFnQixlQUFlLENBQUMsSUFBSSxDQUFDOzs7Y0FDbkMsWUFBWSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUE7Ozs7OzRDQUMxQiw2QkFBZ0IsZUFBZSxDQUFDLElBQUksQ0FBQzs7O2NBQ25DLFlBQVksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFBOzs7Ozs0Q0FDMUIsNkJBQWdCLGVBQWUsQ0FBQyxJQUFJLENBQUM7Ozs7Ozs7Q0FFL0M7O1FBRVEsWUFBWSxHQUFaLFlBQVk7UUFBRSxlQUFlLEdBQWYsZUFBZSIsImZpbGUiOiJsaWIvc2ltdWxhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpbXVsYXRvclhjb2RlNiBmcm9tICcuL3NpbXVsYXRvci14Y29kZS02JztcbmltcG9ydCBTaW11bGF0b3JYY29kZTcgZnJvbSAnLi9zaW11bGF0b3IteGNvZGUtNyc7XG5pbXBvcnQgU2ltdWxhdG9yWGNvZGU3MyBmcm9tICcuL3NpbXVsYXRvci14Y29kZS03LjMnO1xuaW1wb3J0IFNpbXVsYXRvclhjb2RlOCBmcm9tICcuL3NpbXVsYXRvci14Y29kZS04JztcbmltcG9ydCBTaW11bGF0b3JYY29kZTkgZnJvbSAnLi9zaW11bGF0b3IteGNvZGUtOSc7XG5pbXBvcnQgeyBzaW1FeGlzdHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB4Y29kZSBmcm9tICdhcHBpdW0teGNvZGUnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cblxuZnVuY3Rpb24gaGFuZGxlVW5zdXBwb3J0ZWRYY29kZSAoeGNvZGVWZXJzaW9uKSB7XG4gIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPCA2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUcmllZCB0byB1c2UgYW4gaU9TIHNpbXVsYXRvciB3aXRoIHhjb2RlIGAgK1xuICAgICAgICAgICAgICAgICAgICBgdmVyc2lvbiAke3hjb2RlVmVyc2lvbi52ZXJzaW9uU3RyaW5nfSBidXQgb25seSBYY29kZSB2ZXJzaW9uIGAgK1xuICAgICAgICAgICAgICAgICAgICBgNi4wLjAgYW5kIHVwIGFyZSBzdXBwb3J0ZWRgKTtcbiAgfSBlbHNlIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPj0gMTApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFhjb2RlIHZlcnNpb24gJHt4Y29kZVZlcnNpb24udmVyc2lvblN0cmluZ30gaXMgYCArXG4gICAgICAgICAgICAgICAgICAgIGBub3QgeWV0IHN1cHBvcnRlZGApO1xuICB9XG59XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgU2ltdWxhdG9yIGluc3RhbmNlIGZvciB0aGUgZ2l2ZW4gSUQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgLSBUaGUgSUQgb2YgYW4gZXhpc3RpbmcgU2ltdWxhdG9yLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBTaW11bGF0b3Igd2l0aCBnaXZlbiB1ZGlkIGRvZXMgbm90IGV4aXN0IGluIGRldmljZXMgbGlzdC5cbiAqICAgSWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IHNpbXVsYXRvciwgeW91IGNhbiB1c2UgdGhlIGBjcmVhdGVEZXZpY2UoKWAgbWV0aG9kIG9mXG4gKiAgIFtub2RlLXNpbWN0bF0oZ2l0aHViLmNvbS9hcHBpdW0vbm9kZS1zaW1jdGwpLlxuICogQHJldHVybiB7b2JqZWN0fSBTaW11bGF0b3Igb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgdWRpZCBwYXNzZWQgaW4uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFNpbXVsYXRvciAodWRpZCkge1xuICBsZXQgeGNvZGVWZXJzaW9uID0gYXdhaXQgeGNvZGUuZ2V0VmVyc2lvbih0cnVlKTtcblxuICBpZiAoIWF3YWl0IHNpbUV4aXN0cyh1ZGlkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gc2ltIGZvdW5kIHdpdGggdWRpZCAke3VkaWR9YCk7XG4gIH1cblxuICBoYW5kbGVVbnN1cHBvcnRlZFhjb2RlKHhjb2RlVmVyc2lvbik7XG5cbiAgbG9nLmluZm8oYENvbnN0cnVjdGluZyBpT1Mgc2ltdWxhdG9yIGZvciBYY29kZSB2ZXJzaW9uICR7eGNvZGVWZXJzaW9uLnZlcnNpb25TdHJpbmd9IGAgK1xuICAgICAgICAgICBgd2l0aCB1ZGlkICcke3VkaWR9J2ApO1xuICBpZiAoeGNvZGVWZXJzaW9uLm1ham9yID09PSA2KSB7XG4gICAgcmV0dXJuIG5ldyBTaW11bGF0b3JYY29kZTYodWRpZCwgeGNvZGVWZXJzaW9uKTtcbiAgfSBlbHNlIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPj0gNyAmJiB4Y29kZVZlcnNpb24ubWFqb3IgPCA4KSB7XG4gICAgaWYgKHhjb2RlVmVyc2lvbi5taW5vciA8IDMpIHtcbiAgICAgIHJldHVybiBuZXcgU2ltdWxhdG9yWGNvZGU3KHVkaWQsIHhjb2RlVmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgU2ltdWxhdG9yWGNvZGU3Myh1ZGlkLCB4Y29kZVZlcnNpb24pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPT09IDgpIHtcbiAgICByZXR1cm4gbmV3IFNpbXVsYXRvclhjb2RlOCh1ZGlkLCB4Y29kZVZlcnNpb24pO1xuICB9IGVsc2UgaWYgKHhjb2RlVmVyc2lvbi5tYWpvciA9PT0gOSkge1xuICAgIHJldHVybiBuZXcgU2ltdWxhdG9yWGNvZGU5KHVkaWQsIHhjb2RlVmVyc2lvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBUYWtlcyBhIHNldCBvZiBvcHRpb25zIGFuZCBmaW5kcyB0aGUgY29ycmVjdCBkZXZpY2Ugc3RyaW5nIGluIG9yZGVyIGZvciBJbnN0cnVtZW50cyB0b1xuICogaWRlbnRpZnkgdGhlIGNvcnJlY3Qgc2ltdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRzIC0gVGhlIG9wdGlvbnMgYXZhaWxhYmxlIGFyZTpcbiAqICAgLSBgZGV2aWNlTmFtZWAgLSBhIG5hbWUgZm9yIHRoZSBkZXZpY2UuIElmIHRoZSBnaXZlbiBkZXZpY2UgbmFtZSBzdGFydHMgd2l0aCBgPWAsIHRoZSBuYW1lLCBsZXNzIHRoZSBlcXVhbHMgc2lnbiwgaXMgcmV0dXJuZWQuXG4gKiAgIC0gYHBsYXRmb3JtVmVyc2lvbmAgLSB0aGUgdmVyc2lvbiBvZiBpT1MgdG8gdXNlLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBYY29kZSdzIG1heGltdW0gU0RLIHZlcnNpb24uXG4gKiAgIC0gYGZvcmNlSXBob25lYCAtIGZvcmNlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBkZXZpY2Ugc3RyaW5nIHRvIGlQaG9uZS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAqICAgLSBgZm9yY2VJcGFkYCAtIGZvcmNlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBkZXZpY2Ugc3RyaW5nIHRvIGlQYWQuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gKiAgIElmIGJvdGggYGZvcmNlSXBob25lYCBhbmQgYGZvcmNlSXBhZGAgYXJlIHRydWUsIHRoZSBkZXZpY2Ugd2lsbCBiZSBmb3JjZWQgdG8gaVBob25lLlxuICpcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvdW5kIGRldmljZSBzdHJpbmcsIGZvciBleGFtcGxlOlxuICogICAnaVBob25lIDUgKDguNCknIHdpdGggWGNvZGUgNytcbiAqICAgJ2lQaG9uZSA1ICg4LjQgU2ltdWxhdG9yKScgd2l0aCBYY29kZSA2K1xuICovXG5hc3luYyBmdW5jdGlvbiBnZXREZXZpY2VTdHJpbmcgKG9wdHMpIHtcbiAgbGV0IHhjb2RlVmVyc2lvbiA9IGF3YWl0IHhjb2RlLmdldFZlcnNpb24odHJ1ZSk7XG5cbiAgaGFuZGxlVW5zdXBwb3J0ZWRYY29kZSh4Y29kZVZlcnNpb24pO1xuXG4gIGxvZy5pbmZvKGBSZXRyaWV2aW5nIGRldmljZSBuYW1lIHN0cmluZyBmb3IgWGNvZGUgdmVyc2lvbiAke3hjb2RlVmVyc2lvbi52ZXJzaW9uU3RyaW5nfWApO1xuICBpZiAoeGNvZGVWZXJzaW9uLm1ham9yID49IDgpIHtcbiAgICByZXR1cm4gU2ltdWxhdG9yWGNvZGU3LmdldERldmljZVN0cmluZyhvcHRzKTtcbiAgfSBlbHNlIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPT09IDcpIHtcbiAgICByZXR1cm4gU2ltdWxhdG9yWGNvZGU3LmdldERldmljZVN0cmluZyhvcHRzKTtcbiAgfSBlbHNlIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPT09IDYpIHtcbiAgICByZXR1cm4gU2ltdWxhdG9yWGNvZGU2LmdldERldmljZVN0cmluZyhvcHRzKTtcbiAgfVxufVxuXG5leHBvcnQgeyBnZXRTaW11bGF0b3IsIGdldERldmljZVN0cmluZyB9O1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLiJ9