UNPKG

appium-helios-driver

Version:
188 lines (147 loc) 10.6 kB
'use strict'; var _get = require('babel-runtime/helpers/get')['default']; var _inherits = require('babel-runtime/helpers/inherits')['default']; var _createClass = require('babel-runtime/helpers/create-class')['default']; var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default']; var _slicedToArray = require('babel-runtime/helpers/sliced-to-array')['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 _mxAppiumBaseDriver = require('mx-appium-base-driver'); var _appiumSupport = require('appium-support'); var _appiumForHelios = require('./appium-for-helios'); var _logger = require('./logger'); var _logger2 = _interopRequireDefault(_logger); // Appium instantiates this class var HeliosDriver = (function (_BaseDriver) { _inherits(HeliosDriver, _BaseDriver); function HeliosDriver() { var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var shouldValidateCaps = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; _classCallCheck(this, HeliosDriver); _get(Object.getPrototypeOf(HeliosDriver.prototype), 'constructor', this).call(this, opts, shouldValidateCaps); this.jwpProxyActive = false; this.opts.address = opts.address || _appiumForHelios.DEFAULT_A4M_HOST; } _createClass(HeliosDriver, [{ key: 'createSession', value: function createSession() { var _len, args, _key, _ref, _ref2, sessionId, caps, args$2$0 = arguments; return _regeneratorRuntime.async(function createSession$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.prev = 0; for (_len = args$2$0.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = args$2$0[_key]; } context$2$0.next = 4; return _regeneratorRuntime.awrap(_get(Object.getPrototypeOf(HeliosDriver.prototype), 'createSession', this).apply(this, args)); case 4: _ref = context$2$0.sent; _ref2 = _slicedToArray(_ref, 2); sessionId = _ref2[0]; caps = _ref2[1]; context$2$0.next = 10; return _regeneratorRuntime.awrap(this.startHeliosForHeliosSession()); case 10: if (!caps.app) { context$2$0.next = 13; break; } context$2$0.next = 13; return _regeneratorRuntime.awrap(this.a4mDriver.sendCommand('/url', 'POST', { url: caps.app })); case 13: return context$2$0.abrupt('return', [sessionId, caps]); case 16: context$2$0.prev = 16; context$2$0.t0 = context$2$0['catch'](0); context$2$0.next = 20; return _regeneratorRuntime.awrap(this.deleteSession()); case 20: throw context$2$0.t0; case 21: case 'end': return context$2$0.stop(); } }, null, this, [[0, 16]]); } }, { key: 'startHeliosForHeliosSession', value: function startHeliosForHeliosSession() { return _regeneratorRuntime.async(function startHeliosForHeliosSession$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: this.a4mDriver = new _appiumForHelios.AppiumForHelios(); context$2$0.next = 3; return _regeneratorRuntime.awrap(this.a4mDriver.startSession(this.caps)); case 3: this.proxyReqRes = this.a4mDriver.proxyReqRes.bind(this.a4mDriver); // now that everything has started successfully, turn on proxying so all // subsequent session requests go straight to/from AppiumForHelios this.jwpProxyActive = true; case 5: case 'end': return context$2$0.stop(); } }, null, this); } }, { key: 'deleteSession', value: function deleteSession() { return _regeneratorRuntime.async(function deleteSession$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: _logger2['default'].debug('Deleting AppiumForHelios session'); if (!(this.a4mDriver && this.jwpProxyActive)) { context$2$0.next = 7; break; } context$2$0.next = 4; return _regeneratorRuntime.awrap(this.a4mDriver.deleteSession()); case 4: context$2$0.next = 6; return _regeneratorRuntime.awrap(this.a4mDriver.stop()); case 6: this.a4mDriver = null; case 7: this.jwpProxyActive = false; context$2$0.next = 10; return _regeneratorRuntime.awrap(_get(Object.getPrototypeOf(HeliosDriver.prototype), 'deleteSession', this).call(this)); case 10: case 'end': return context$2$0.stop(); } }, null, this); } }, { key: 'proxyActive', value: function proxyActive() { // we always have an active proxy to the AppiumForHelios server return true; } }, { key: 'canProxy', value: function canProxy() { // we can always proxy to the AppiumForHelios server return true; } }, { key: 'driverData', get: function get() { return { A4MPort: this.opts.port }; } }]); return HeliosDriver; })(_mxAppiumBaseDriver.BaseDriver); exports.HeliosDriver = HeliosDriver; exports['default'] = HeliosDriver; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBQTJCLHVCQUF1Qjs7NkJBQzNCLGdCQUFnQjs7K0JBQ1UscUJBQXFCOztzQkFDbkQsVUFBVTs7Ozs7O0lBR3ZCLFlBQVk7WUFBWixZQUFZOztBQUNKLFdBRFIsWUFBWSxHQUNvQztRQUF2QyxJQUFJLHlEQUFHLEVBQUU7UUFBRSxrQkFBa0IseURBQUcsS0FBSzs7MEJBRDlDLFlBQVk7O0FBRWQsK0JBRkUsWUFBWSw2Q0FFUixJQUFJLEVBQUUsa0JBQWtCLEVBQUU7QUFDaEMsUUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFDNUIsUUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8scUNBQW9CLENBQUM7R0FDdEQ7O2VBTEcsWUFBWTs7V0FPSTs7VUFBSSxJQUFJOzs7O1VBRW5CLFNBQVM7VUFBRSxJQUFJOzs7Ozs7Ozt5Q0FGQSxJQUFJO0FBQUosa0JBQUk7Ozs7d0VBUHhCLFlBQVksZ0RBU3lDLElBQUk7Ozs7O0FBQXBELHFCQUFTO0FBQUUsZ0JBQUk7OzZDQUNkLElBQUksQ0FBQywyQkFBMkIsRUFBRTs7O2lCQUNwQyxJQUFJLENBQUMsR0FBRzs7Ozs7OzZDQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBQyxDQUFDOzs7Z0RBRTVELENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQzs7Ozs7OzZDQUVsQixJQUFJLENBQUMsYUFBYSxFQUFFOzs7Ozs7Ozs7O0tBRzdCOzs7V0FFaUM7Ozs7QUFDaEMsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsc0NBQXFCLENBQUM7Ozs2Q0FFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7O0FBQzVDLGdCQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7OztBQUduRSxnQkFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Ozs7Ozs7S0FDNUI7OztXQUVtQjs7OztBQUNsQixnQ0FBTyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQzs7a0JBRTdDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQTs7Ozs7OzZDQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTs7Ozs2Q0FDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7OztBQUMzQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7OztBQUV4QixnQkFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7O3dFQXZDMUIsWUFBWTs7Ozs7OztLQXlDZjs7O1dBRVcsdUJBQUc7O0FBRWIsYUFBTyxJQUFJLENBQUM7S0FDYjs7O1dBRVEsb0JBQUc7O0FBRVYsYUFBTyxJQUFJLENBQUM7S0FDYjs7O1NBRWMsZUFBRztBQUNoQixhQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUM7S0FDbEM7OztTQXZERyxZQUFZOzs7UUEwRFQsWUFBWSxHQUFaLFlBQVk7cUJBQ04sWUFBWSIsImZpbGUiOiJsaWIvZHJpdmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJ214LWFwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBzeXN0ZW0gfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyBBcHBpdW1Gb3JIZWxpb3MsIERFRkFVTFRfQTRNX0hPU1R9IGZyb20gJy4vYXBwaXVtLWZvci1oZWxpb3MnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5cbi8vIEFwcGl1bSBpbnN0YW50aWF0ZXMgdGhpcyBjbGFzc1xuY2xhc3MgSGVsaW9zRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IGZhbHNlKSB7XG4gICAgc3VwZXIob3B0cywgc2hvdWxkVmFsaWRhdGVDYXBzKTtcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5vcHRzLmFkZHJlc3MgPSBvcHRzLmFkZHJlc3MgfHwgREVGQVVMVF9BNE1fSE9TVDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgbGV0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgc3VwZXIuY3JlYXRlU2Vzc2lvbiguLi5hcmdzKTtcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRIZWxpb3NGb3JIZWxpb3NTZXNzaW9uKCk7XG4gICAgICBpZiAoY2Fwcy5hcHApIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hNG1Ecml2ZXIuc2VuZENvbW1hbmQoJy91cmwnLCAnUE9TVCcsIHt1cmw6IGNhcHMuYXBwfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW3Nlc3Npb25JZCwgY2Fwc107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0SGVsaW9zRm9ySGVsaW9zU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5hNG1Ecml2ZXIgPSBuZXcgQXBwaXVtRm9ySGVsaW9zKCk7XG5cbiAgICBhd2FpdCB0aGlzLmE0bURyaXZlci5zdGFydFNlc3Npb24odGhpcy5jYXBzKTtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5hNG1Ecml2ZXIucHJveHlSZXFSZXMuYmluZCh0aGlzLmE0bURyaXZlcik7XG4gICAgLy8gbm93IHRoYXQgZXZlcnl0aGluZyBoYXMgc3RhcnRlZCBzdWNjZXNzZnVsbHksIHR1cm4gb24gcHJveHlpbmcgc28gYWxsXG4gICAgLy8gc3Vic2VxdWVudCBzZXNzaW9uIHJlcXVlc3RzIGdvIHN0cmFpZ2h0IHRvL2Zyb20gQXBwaXVtRm9ySGVsaW9zXG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICBsb2dnZXIuZGVidWcoJ0RlbGV0aW5nIEFwcGl1bUZvckhlbGlvcyBzZXNzaW9uJyk7XG5cbiAgICBpZiAodGhpcy5hNG1Ecml2ZXIgJiYgdGhpcy5qd3BQcm94eUFjdGl2ZSkge1xuICAgICAgYXdhaXQgdGhpcy5hNG1Ecml2ZXIuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgYXdhaXQgdGhpcy5hNG1Ecml2ZXIuc3RvcCgpO1xuICAgICAgdGhpcy5hNG1Ecml2ZXIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG5cbiAgcHJveHlBY3RpdmUgKCkge1xuICAgIC8vIHdlIGFsd2F5cyBoYXZlIGFuIGFjdGl2ZSBwcm94eSB0byB0aGUgQXBwaXVtRm9ySGVsaW9zIHNlcnZlclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuUHJveHkgKCkge1xuICAgIC8vIHdlIGNhbiBhbHdheXMgcHJveHkgdG8gdGhlIEFwcGl1bUZvckhlbGlvcyBzZXJ2ZXJcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBkcml2ZXJEYXRhICgpIHtcbiAgICByZXR1cm4ge0E0TVBvcnQ6IHRoaXMub3B0cy5wb3J0fTtcbiAgfVxufVxuXG5leHBvcnQgeyBIZWxpb3NEcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEhlbGlvc0RyaXZlcjtcbiJdLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==