appium-webdriveragent-driver
Version:
Appium driver for WebDriverAgent
198 lines (160 loc) • 13.2 kB
JavaScript
;
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
var _chai = require('chai');
var _chai2 = _interopRequireDefault(_chai);
var _chaiAsPromised = require('chai-as-promised');
var _chaiAsPromised2 = _interopRequireDefault(_chaiAsPromised);
var _nodeSimctl = require('node-simctl');
var _appiumIosSimulator = require('appium-ios-simulator');
var _requestPromise = require('request-promise');
var _requestPromise2 = _interopRequireDefault(_requestPromise);
var _libWebDriverAgentJs = require('../../lib/webDriverAgent.js');
var _libWebDriverAgentJs2 = _interopRequireDefault(_libWebDriverAgentJs);
var _teen_process = require('teen_process');
_chai2['default'].should();
_chai2['default'].use(_chaiAsPromised2['default']);
var PLATFORM_VERSION = '9.0';
var testUrl = 'http://localhost:8100/tree';
describe('WebDriverAgent', function () {
describe('with fresh sim', function () {
var sim = undefined;
before(function callee$2$0() {
var simUdid;
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {
case 0:
this.timeout(2 * 60 * 1000);
context$3$0.next = 3;
return _regeneratorRuntime.awrap((0, _nodeSimctl.createDevice)('webDriverAgentTest', 'iPhone 6', PLATFORM_VERSION));
case 3:
simUdid = context$3$0.sent;
context$3$0.next = 6;
return _regeneratorRuntime.awrap((0, _appiumIosSimulator.getSimulator)(simUdid));
case 6:
sim = context$3$0.sent;
case 7:
case 'end':
return context$3$0.stop();
}
}, null, this);
});
after(function callee$2$0() {
return _regeneratorRuntime.async(function callee$2$0$(context$3$0) {
while (1) switch (context$3$0.prev = context$3$0.next) {
case 0:
this.timeout(2 * 60 * 1000);
context$3$0.next = 3;
return _regeneratorRuntime.awrap((0, _nodeSimctl.deleteDevice)(sim.udid));
case 3:
case 'end':
return context$3$0.stop();
}
}, null, this);
});
describe('with running sim', function () {
afterEach(function callee$3$0() {
return _regeneratorRuntime.async(function callee$3$0$(context$4$0) {
while (1) switch (context$4$0.prev = context$4$0.next) {
case 0:
this.timeout(60 * 1000);
context$4$0.next = 3;
return _regeneratorRuntime.awrap(sim.shutdown());
case 3:
case 'end':
return context$4$0.stop();
}
}, null, this);
});
it('should launch agent on a sim', function callee$3$0() {
var agent;
return _regeneratorRuntime.async(function callee$3$0$(context$4$0) {
while (1) switch (context$4$0.prev = context$4$0.next) {
case 0:
this.timeout(6 * 60 * 1000);
context$4$0.next = 3;
return _regeneratorRuntime.awrap(sim.run());
case 3:
agent = new _libWebDriverAgentJs2['default']({
sim: sim,
platformVersion: PLATFORM_VERSION,
host: 'localhost',
port: 8100
});
context$4$0.next = 6;
return _regeneratorRuntime.awrap(agent.launch('sessionId'));
case 6:
context$4$0.next = 8;
return _regeneratorRuntime.awrap((0, _requestPromise2['default'])(testUrl));
case 8:
context$4$0.next = 10;
return _regeneratorRuntime.awrap(agent.quit());
case 10:
case 'end':
return context$4$0.stop();
}
}, null, this);
});
});
describe('with sim not booted', function () {
it('should boot sim if not booted', function callee$3$0() {
var agent;
return _regeneratorRuntime.async(function callee$3$0$(context$4$0) {
while (1) switch (context$4$0.prev = context$4$0.next) {
case 0:
this.timeout(75 * 1000);
agent = new _libWebDriverAgentJs2['default']({
sim: sim,
platformVersion: PLATFORM_VERSION,
host: 'localhost',
port: 8100
});
context$4$0.next = 4;
return _regeneratorRuntime.awrap(agent.launch('sessionId'));
case 4:
context$4$0.next = 6;
return _regeneratorRuntime.awrap((0, _requestPromise2['default'])(testUrl));
case 6:
context$4$0.next = 8;
return _regeneratorRuntime.awrap(agent.quit());
case 8:
context$4$0.next = 10;
return _regeneratorRuntime.awrap(sim.shutdown());
case 10:
case 'end':
return context$4$0.stop();
}
}, null, this);
});
it('should fail if xcodebuild fails', function callee$3$0() {
var agent, prom;
return _regeneratorRuntime.async(function callee$3$0$(context$4$0) {
while (1) switch (context$4$0.prev = context$4$0.next) {
case 0:
this.timeout(35 * 1000);
agent = new _libWebDriverAgentJs2['default']({
sim: sim,
platformVersion: PLATFORM_VERSION,
host: 'localhost',
port: 8100
});
agent.createXcodeBuildSubProcess = function () {
var args = ['-workspace', this.agentPath,
// '-scheme',
// 'XCTUITestRunner',
'-destination', 'id=' + this.sim.udid, 'test'];
return new _teen_process.SubProcess('xcodebuild', args);
};
prom = agent.launch('sessionId');
context$4$0.next = 6;
return _regeneratorRuntime.awrap(prom.should.be.rejectedWith('xcodebuild failed'));
case 6:
case 'end':
return context$4$0.stop();
}
}, null, this);
});
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZnVuY3Rpb25hbC93ZWJkcml2ZXJhZ2VudC1lMmUtc3BlY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O29CQUFpQixNQUFNOzs7OzhCQUNJLGtCQUFrQjs7OzswQkFDRixhQUFhOztrQ0FDM0Isc0JBQXNCOzs4QkFDL0IsaUJBQWlCOzs7O21DQUNWLDZCQUE2Qjs7Ozs0QkFDN0IsY0FBYzs7QUFFekMsa0JBQUssTUFBTSxFQUFFLENBQUM7QUFDZCxrQkFBSyxHQUFHLDZCQUFnQixDQUFDOztBQUV6QixJQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUMvQixJQUFJLE9BQU8sR0FBRyw0QkFBNEIsQ0FBQzs7QUFFM0MsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQU07QUFDL0IsVUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQU07QUFDL0IsUUFBSSxHQUFHLFlBQUEsQ0FBQztBQUNSLFVBQU0sQ0FBQztVQUVELE9BQU87Ozs7QUFEWCxnQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDOzs2Q0FDUiw4QkFBYSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7OztBQUFoRixtQkFBTzs7NkNBQ0Msc0NBQWEsT0FBTyxDQUFDOzs7QUFBakMsZUFBRzs7Ozs7OztLQUNKLENBQUMsQ0FBQzs7QUFFSCxTQUFLLENBQUM7Ozs7QUFDSixnQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDOzs2Q0FDdEIsOEJBQWEsR0FBRyxDQUFDLElBQUksQ0FBQzs7Ozs7OztLQUM3QixDQUFDLENBQUM7O0FBRUgsWUFBUSxDQUFDLGtCQUFrQixFQUFFLFlBQU07QUFDakMsZUFBUyxDQUFDOzs7O0FBQ1Isa0JBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDOzsrQ0FDbEIsR0FBRyxDQUFDLFFBQVEsRUFBRTs7Ozs7OztPQUNyQixDQUFDLENBQUM7O0FBRUgsUUFBRSxDQUFDLDhCQUE4QixFQUFFO1lBRzdCLEtBQUs7Ozs7QUFGVCxrQkFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDOzsrQ0FDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRTs7O0FBQ1gsbUJBQUssR0FBRyxxQ0FBbUI7QUFDN0IsbUJBQUcsRUFBRSxHQUFHO0FBQ1IsK0JBQWUsRUFBRSxnQkFBZ0I7QUFDakMsb0JBQUksRUFBRSxXQUFXO0FBQ2pCLG9CQUFJLEVBQUUsSUFBSTtlQUNYLENBQUM7OytDQUVJLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDOzs7OytDQUN6QixpQ0FBUSxPQUFPLENBQUM7Ozs7K0NBQ2hCLEtBQUssQ0FBQyxJQUFJLEVBQUU7Ozs7Ozs7T0FDbkIsQ0FBQyxDQUFDO0tBQ0osQ0FBQyxDQUFDOztBQUVILFlBQVEsQ0FBQyxxQkFBcUIsRUFBRSxZQUFNO0FBQ3BDLFFBQUUsQ0FBQywrQkFBK0IsRUFBRTtZQUU5QixLQUFLOzs7O0FBRFQsa0JBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3BCLG1CQUFLLEdBQUcscUNBQW1CO0FBQzdCLG1CQUFHLEVBQUUsR0FBRztBQUNSLCtCQUFlLEVBQUUsZ0JBQWdCO0FBQ2pDLG9CQUFJLEVBQUUsV0FBVztBQUNqQixvQkFBSSxFQUFFLElBQUk7ZUFDWCxDQUFDOzsrQ0FFSSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQzs7OzsrQ0FDekIsaUNBQVEsT0FBTyxDQUFDOzs7OytDQUNoQixLQUFLLENBQUMsSUFBSSxFQUFFOzs7OytDQUNaLEdBQUcsQ0FBQyxRQUFRLEVBQUU7Ozs7Ozs7T0FDckIsQ0FBQyxDQUFDOztBQUVILFFBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtZQUdoQyxLQUFLLEVBb0JMLElBQUk7Ozs7QUF0QlIsa0JBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDOztBQUVwQixtQkFBSyxHQUFHLHFDQUFtQjtBQUM3QixtQkFBRyxFQUFFLEdBQUc7QUFDUiwrQkFBZSxFQUFFLGdCQUFnQjtBQUNqQyxvQkFBSSxFQUFFLFdBQVc7QUFDakIsb0JBQUksRUFBRSxJQUFJO2VBQ1gsQ0FBQzs7QUFFRixtQkFBSyxDQUFDLDBCQUEwQixHQUFHLFlBQVk7QUFDN0Msb0JBQUksSUFBSSxHQUFHLENBQ1QsWUFBWSxFQUNaLElBQUksQ0FBQyxTQUFTOzs7QUFHZCw4QkFBYyxVQUNSLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUNuQixNQUFNLENBQ1AsQ0FBQztBQUNGLHVCQUFPLDZCQUFlLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztlQUMzQyxDQUFDOztBQUVFLGtCQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7OytDQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUM7Ozs7Ozs7T0FDdkQsQ0FBQyxDQUFDO0tBQ0osQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDO0NBQ0osQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvZnVuY3Rpb25hbC93ZWJkcml2ZXJhZ2VudC1lMmUtc3BlY3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmltcG9ydCB7IGNyZWF0ZURldmljZSwgZGVsZXRlRGV2aWNlIH0gZnJvbSAnbm9kZS1zaW1jdGwnO1xuaW1wb3J0IHsgZ2V0U2ltdWxhdG9yIH0gZnJvbSAnYXBwaXVtLWlvcy1zaW11bGF0b3InO1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdC1wcm9taXNlJztcbmltcG9ydCBXZWJEcml2ZXJBZ2VudCBmcm9tICcuLi8uLi9saWIvd2ViRHJpdmVyQWdlbnQuanMnO1xuaW1wb3J0IHsgU3ViUHJvY2VzcyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmNvbnN0IFBMQVRGT1JNX1ZFUlNJT04gPSAnOS4wJztcbmxldCB0ZXN0VXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODEwMC90cmVlJztcblxuZGVzY3JpYmUoJ1dlYkRyaXZlckFnZW50JywgKCkgPT4ge1xuICBkZXNjcmliZSgnd2l0aCBmcmVzaCBzaW0nLCAoKSA9PiB7XG4gICAgbGV0IHNpbTtcbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy50aW1lb3V0KDIgKiA2MCAqIDEwMDApO1xuICAgICAgbGV0IHNpbVVkaWQgPSBhd2FpdCBjcmVhdGVEZXZpY2UoJ3dlYkRyaXZlckFnZW50VGVzdCcsICdpUGhvbmUgNicsIFBMQVRGT1JNX1ZFUlNJT04pO1xuICAgICAgc2ltID0gYXdhaXQgZ2V0U2ltdWxhdG9yKHNpbVVkaWQpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy50aW1lb3V0KDIgKiA2MCAqIDEwMDApO1xuICAgICAgYXdhaXQgZGVsZXRlRGV2aWNlKHNpbS51ZGlkKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd3aXRoIHJ1bm5pbmcgc2ltJywgKCkgPT4ge1xuICAgICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0KDYwICogMTAwMCk7XG4gICAgICAgIGF3YWl0IHNpbS5zaHV0ZG93bigpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbGF1bmNoIGFnZW50IG9uIGEgc2ltJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQoNiAqIDYwICogMTAwMCk7XG4gICAgICAgIGF3YWl0IHNpbS5ydW4oKTtcbiAgICAgICAgbGV0IGFnZW50ID0gbmV3IFdlYkRyaXZlckFnZW50KHtcbiAgICAgICAgICBzaW06IHNpbSxcbiAgICAgICAgICBwbGF0Zm9ybVZlcnNpb246IFBMQVRGT1JNX1ZFUlNJT04sXG4gICAgICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICAgICAgcG9ydDogODEwMFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBhZ2VudC5sYXVuY2goJ3Nlc3Npb25JZCcpO1xuICAgICAgICBhd2FpdCByZXF1ZXN0KHRlc3RVcmwpO1xuICAgICAgICBhd2FpdCBhZ2VudC5xdWl0KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd3aXRoIHNpbSBub3QgYm9vdGVkJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBib290IHNpbSBpZiBub3QgYm9vdGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQoNzUgKiAxMDAwKTtcbiAgICAgICAgbGV0IGFnZW50ID0gbmV3IFdlYkRyaXZlckFnZW50KHtcbiAgICAgICAgICBzaW06IHNpbSxcbiAgICAgICAgICBwbGF0Zm9ybVZlcnNpb246IFBMQVRGT1JNX1ZFUlNJT04sXG4gICAgICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICAgICAgcG9ydDogODEwMFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBhZ2VudC5sYXVuY2goJ3Nlc3Npb25JZCcpO1xuICAgICAgICBhd2FpdCByZXF1ZXN0KHRlc3RVcmwpO1xuICAgICAgICBhd2FpdCBhZ2VudC5xdWl0KCk7XG4gICAgICAgIGF3YWl0IHNpbS5zaHV0ZG93bigpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCBpZiB4Y29kZWJ1aWxkIGZhaWxzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpbWVvdXQoMzUgKiAxMDAwKTtcblxuICAgICAgICBsZXQgYWdlbnQgPSBuZXcgV2ViRHJpdmVyQWdlbnQoe1xuICAgICAgICAgIHNpbTogc2ltLFxuICAgICAgICAgIHBsYXRmb3JtVmVyc2lvbjogUExBVEZPUk1fVkVSU0lPTixcbiAgICAgICAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICAgICAgICBwb3J0OiA4MTAwXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFnZW50LmNyZWF0ZVhjb2RlQnVpbGRTdWJQcm9jZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBhcmdzID0gW1xuICAgICAgICAgICAgJy13b3Jrc3BhY2UnLFxuICAgICAgICAgICAgdGhpcy5hZ2VudFBhdGgsXG4gICAgICAgICAgICAvLyAnLXNjaGVtZScsXG4gICAgICAgICAgICAvLyAnWENUVUlUZXN0UnVubmVyJyxcbiAgICAgICAgICAgICctZGVzdGluYXRpb24nLFxuICAgICAgICAgICAgYGlkPSR7dGhpcy5zaW0udWRpZH1gLFxuICAgICAgICAgICAgJ3Rlc3QnXG4gICAgICAgICAgXTtcbiAgICAgICAgICByZXR1cm4gbmV3IFN1YlByb2Nlc3MoJ3hjb2RlYnVpbGQnLCBhcmdzKTtcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgcHJvbSA9IGFnZW50LmxhdW5jaCgnc2Vzc2lvbklkJyk7XG4gICAgICAgIGF3YWl0IHByb20uc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgneGNvZGVidWlsZCBmYWlsZWQnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19