gst-atom-xcuitest-driver
Version:
ATOM driver for iOS using XCUITest for backend
95 lines (71 loc) • 9.24 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.helpers = exports.commands = void 0;
require("source-map-support/register");
var _gstAtomBaseDriver = require("gst-atom-base-driver");
var _lodash = _interopRequireDefault(require("lodash"));
var _logger = _interopRequireDefault(require("../logger"));
var _asyncbox = require("asyncbox");
let commands = {},
helpers = {},
extensions = {};
exports.helpers = helpers;
exports.commands = commands;
const CLOSE_WINDOW_TIMEOUT = 5000;
const CLOSE_WINDOW_INTERVAL = 100;
commands.back = async function back() {
if (!this.isWebContext()) {
await this.nativeBack();
} else {
await this.mobileWebNav('back');
}
};
helpers.nativeBack = async function nativeBack() {
try {
let navBar = await this.findNativeElementOrElements('class name', 'XCUIElementTypeNavigationBar', false);
let buttons = await this.findNativeElementOrElements('class name', 'XCUIElementTypeButton', true, navBar);
if (buttons.length === 0) {
throw new Error('No buttons found in navigation bar');
}
let backButton = _lodash.default.filter(buttons, value => value.label === 'Back')[0];
if (backButton) {
_logger.default.debug(`Found navigation bar 'back' button. Clicking.`);
} else {
_logger.default.debug(`Unable to find 'Back' button. Trying first button in navigation bar`);
backButton = buttons[0];
}
await this.nativeClick(backButton);
} catch (err) {
_logger.default.error(`Unable to find navigation bar and back button: ${err.message}`);
}
};
commands.forward = async function forward() {
if (!this.isWebContext()) {}
await this.mobileWebNav('forward');
};
commands.closeWindow = async function closeWindow() {
if (!this.isWebContext()) {
throw new _gstAtomBaseDriver.errors.NotImplementedError();
}
const script = `setTimeout(function () {window.open('','_self').close();}, 0); return true;`;
const context = this.curContext;
try {
return await this.executeAtom('execute_script', [script, []], true);
} finally {
try {
await (0, _asyncbox.waitForCondition)(() => this.curContext !== context, {
waitMs: CLOSE_WINDOW_TIMEOUT,
intervalMs: CLOSE_WINDOW_INTERVAL
});
} catch (ign) {
_logger.default.debug('Context has not yet been changed after closing window. Continuing...');
}
}
};
Object.assign(extensions, commands, helpers);
var _default = extensions;
exports.default = _default;require('source-map-support').install();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uYXZpZ2F0aW9uLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJDTE9TRV9XSU5ET1dfVElNRU9VVCIsIkNMT1NFX1dJTkRPV19JTlRFUlZBTCIsImJhY2siLCJpc1dlYkNvbnRleHQiLCJuYXRpdmVCYWNrIiwibW9iaWxlV2ViTmF2IiwibmF2QmFyIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiYnV0dG9ucyIsImxlbmd0aCIsIkVycm9yIiwiYmFja0J1dHRvbiIsIl8iLCJmaWx0ZXIiLCJ2YWx1ZSIsImxhYmVsIiwibG9nIiwiZGVidWciLCJuYXRpdmVDbGljayIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImZvcndhcmQiLCJjbG9zZVdpbmRvdyIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJzY3JpcHQiLCJjb250ZXh0IiwiY3VyQ29udGV4dCIsImV4ZWN1dGVBdG9tIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImlnbiIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7QUFHQSxNQUFNQyxvQkFBb0IsR0FBRyxJQUE3QjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLEdBQTlCOztBQUVBSixRQUFRLENBQUNLLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixHQUF1QjtBQUNyQyxNQUFJLENBQUMsS0FBS0MsWUFBTCxFQUFMLEVBQTBCO0FBQ3hCLFVBQU0sS0FBS0MsVUFBTCxFQUFOO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsVUFBTSxLQUFLQyxZQUFMLENBQWtCLE1BQWxCLENBQU47QUFDRDtBQUNGLENBTkQ7O0FBUUFQLE9BQU8sQ0FBQ00sVUFBUixHQUFxQixlQUFlQSxVQUFmLEdBQTZCO0FBQ2hELE1BQUk7QUFDRixRQUFJRSxNQUFNLEdBQUcsTUFBTSxLQUFLQywyQkFBTCxDQUFpQyxZQUFqQyxFQUErQyw4QkFBL0MsRUFBK0UsS0FBL0UsQ0FBbkI7QUFDQSxRQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLRCwyQkFBTCxDQUFpQyxZQUFqQyxFQUErQyx1QkFBL0MsRUFBd0UsSUFBeEUsRUFBOEVELE1BQTlFLENBQXBCOztBQUNBLFFBQUlFLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQixDQUF2QixFQUEwQjtBQUN4QixZQUFNLElBQUlDLEtBQUosQ0FBVSxvQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsUUFBSUMsVUFBVSxHQUFHQyxnQkFBRUMsTUFBRixDQUFTTCxPQUFULEVBQW1CTSxLQUFELElBQVdBLEtBQUssQ0FBQ0MsS0FBTixLQUFnQixNQUE3QyxFQUFxRCxDQUFyRCxDQUFqQjs7QUFDQSxRQUFJSixVQUFKLEVBQWdCO0FBQ2RLLHNCQUFJQyxLQUFKLENBQVcsK0NBQVg7QUFDRCxLQUZELE1BRU87QUFDTEQsc0JBQUlDLEtBQUosQ0FBVyxxRUFBWDs7QUFDQU4sTUFBQUEsVUFBVSxHQUFHSCxPQUFPLENBQUMsQ0FBRCxDQUFwQjtBQUNEOztBQUNELFVBQU0sS0FBS1UsV0FBTCxDQUFpQlAsVUFBakIsQ0FBTjtBQUNELEdBZkQsQ0FlRSxPQUFPUSxHQUFQLEVBQVk7QUFDWkgsb0JBQUlJLEtBQUosQ0FBVyxrREFBaURELEdBQUcsQ0FBQ0UsT0FBUSxFQUF4RTtBQUNEO0FBQ0YsQ0FuQkQ7O0FBcUJBeEIsUUFBUSxDQUFDeUIsT0FBVCxHQUFtQixlQUFlQSxPQUFmLEdBQTBCO0FBQzNDLE1BQUksQ0FBQyxLQUFLbkIsWUFBTCxFQUFMLEVBQTBCLENBQ3pCOztBQUNELFFBQU0sS0FBS0UsWUFBTCxDQUFrQixTQUFsQixDQUFOO0FBQ0QsQ0FKRDs7QUFNQVIsUUFBUSxDQUFDMEIsV0FBVCxHQUF1QixlQUFlQSxXQUFmLEdBQThCO0FBQ25ELE1BQUksQ0FBQyxLQUFLcEIsWUFBTCxFQUFMLEVBQTBCO0FBQ3hCLFVBQU0sSUFBSXFCLDBCQUFPQyxtQkFBWCxFQUFOO0FBQ0Q7O0FBSUQsUUFBTUMsTUFBTSxHQUFJLDZFQUFoQjtBQUNBLFFBQU1DLE9BQU8sR0FBRyxLQUFLQyxVQUFyQjs7QUFDQSxNQUFJO0FBQ0YsV0FBTyxNQUFNLEtBQUtDLFdBQUwsQ0FBaUIsZ0JBQWpCLEVBQW1DLENBQUNILE1BQUQsRUFBUyxFQUFULENBQW5DLEVBQWlELElBQWpELENBQWI7QUFDRCxHQUZELFNBRVU7QUFFUixRQUFJO0FBQ0YsWUFBTSxnQ0FBaUIsTUFBTSxLQUFLRSxVQUFMLEtBQW9CRCxPQUEzQyxFQUFvRDtBQUN4REcsUUFBQUEsTUFBTSxFQUFFOUIsb0JBRGdEO0FBRXhEK0IsUUFBQUEsVUFBVSxFQUFFOUI7QUFGNEMsT0FBcEQsQ0FBTjtBQUlELEtBTEQsQ0FLRSxPQUFPK0IsR0FBUCxFQUFZO0FBQ1poQixzQkFBSUMsS0FBSixDQUFVLHNFQUFWO0FBQ0Q7QUFDRjtBQUNGLENBdEJEOztBQXlCQWdCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjbkMsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdnc3QtYXRvbS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG4vLyB0aGVzZSB0d28gY29uc3RpdHV0ZSB0aGUgd2FpdCBhZnRlciBjbG9zaW5nIGEgd2luZG93XG5jb25zdCBDTE9TRV9XSU5ET1dfVElNRU9VVCA9IDUwMDA7XG5jb25zdCBDTE9TRV9XSU5ET1dfSU5URVJWQUwgPSAxMDA7XG5cbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiBiYWNrICgpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgYXdhaXQgdGhpcy5uYXRpdmVCYWNrKCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgdGhpcy5tb2JpbGVXZWJOYXYoJ2JhY2snKTtcbiAgfVxufTtcblxuaGVscGVycy5uYXRpdmVCYWNrID0gYXN5bmMgZnVuY3Rpb24gbmF0aXZlQmFjayAoKSB7XG4gIHRyeSB7XG4gICAgbGV0IG5hdkJhciA9IGF3YWl0IHRoaXMuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZU5hdmlnYXRpb25CYXInLCBmYWxzZSk7XG4gICAgbGV0IGJ1dHRvbnMgPSBhd2FpdCB0aGlzLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVCdXR0b24nLCB0cnVlLCBuYXZCYXIpO1xuICAgIGlmIChidXR0b25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBidXR0b25zIGZvdW5kIGluIG5hdmlnYXRpb24gYmFyJyk7XG4gICAgfVxuXG4gICAgbGV0IGJhY2tCdXR0b24gPSBfLmZpbHRlcihidXR0b25zLCAodmFsdWUpID0+IHZhbHVlLmxhYmVsID09PSAnQmFjaycpWzBdO1xuICAgIGlmIChiYWNrQnV0dG9uKSB7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIG5hdmlnYXRpb24gYmFyICdiYWNrJyBidXR0b24uIENsaWNraW5nLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBmaW5kICdCYWNrJyBidXR0b24uIFRyeWluZyBmaXJzdCBidXR0b24gaW4gbmF2aWdhdGlvbiBiYXJgKTtcbiAgICAgIGJhY2tCdXR0b24gPSBidXR0b25zWzBdO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm5hdGl2ZUNsaWNrKGJhY2tCdXR0b24pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3IoYFVuYWJsZSB0byBmaW5kIG5hdmlnYXRpb24gYmFyIGFuZCBiYWNrIGJ1dHRvbjogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuY29tbWFuZHMuZm9yd2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGZvcndhcmQgKCkge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgfVxuICBhd2FpdCB0aGlzLm1vYmlsZVdlYk5hdignZm9yd2FyZCcpO1xufTtcblxuY29tbWFuZHMuY2xvc2VXaW5kb3cgPSBhc3luYyBmdW5jdGlvbiBjbG9zZVdpbmRvdyAoKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgLy8gc2luY2UgdGhlIHdpbmRvdyB3aWxsIGJlIGNsb3NlZCBhbmQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGdvbmUsIHJldHVyblxuICAvLyBmaXJzdCBiZWZvcmUgY2xvc2luZy4gV2FpdGluZyBmb3IgY2xvc2Ugd2lsbCBoYXBwZW4gaW4gdGhlIGZpbmFsbHkgYmxvY2tcbiAgY29uc3Qgc2NyaXB0ID0gYHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge3dpbmRvdy5vcGVuKCcnLCdfc2VsZicpLmNsb3NlKCk7fSwgMCk7IHJldHVybiB0cnVlO2A7XG4gIGNvbnN0IGNvbnRleHQgPSB0aGlzLmN1ckNvbnRleHQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW3NjcmlwdCwgW11dLCB0cnVlKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyB3YWl0IGZvciB0aGUgd2luZG93IHRvIHN1Y2Nlc3NmdWxseSBjaGFuZ2UuLi5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiB0aGlzLmN1ckNvbnRleHQgIT09IGNvbnRleHQsIHtcbiAgICAgICAgd2FpdE1zOiBDTE9TRV9XSU5ET1dfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogQ0xPU0VfV0lORE9XX0lOVEVSVkFMLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICBsb2cuZGVidWcoJ0NvbnRleHQgaGFzIG5vdCB5ZXQgYmVlbiBjaGFuZ2VkIGFmdGVyIGNsb3Npbmcgd2luZG93LiBDb250aW51aW5nLi4uJyk7XG4gICAgfVxuICB9XG59O1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9uYXZpZ2F0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=