UNPKG

appium-xcuitest-driver

Version:

Appium driver for iOS using XCUITest for backend

61 lines 2.58 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_TIMEOUT_KEY = void 0; exports.requireArgs = requireArgs; exports.checkAppPresent = checkAppPresent; exports.normalizeCommandTimeouts = normalizeCommandTimeouts; const driver_1 = require("appium/driver"); const support_1 = require("appium/support"); const lodash_1 = __importDefault(require("lodash")); const logger_1 = require("../logger"); exports.DEFAULT_TIMEOUT_KEY = 'default'; /** Assert the presence of particular keys in the given object. */ function requireArgs(argNames, opts = {}) { for (const argName of lodash_1.default.isArray(argNames) ? argNames : [argNames]) { if (!lodash_1.default.has(opts, argName)) { throw new driver_1.errors.InvalidArgumentError(`'${argName}' argument must be provided`); } } return opts; } /** Ensures application path exists before attempting installation. */ async function checkAppPresent(app) { logger_1.log.debug(`Checking whether app '${app}' is actually present on file system`); if (!(await support_1.fs.exists(app))) { throw logger_1.log.errorWithException(`Could not find app at '${app}'`); } logger_1.log.debug('App is present'); } /** Normalizes command timeout capability into a validated milliseconds map. */ function normalizeCommandTimeouts(value) { // The value is normalized already if (typeof value !== 'string') { return value; } let result = {}; // Use as default timeout for all commands if a single integer value is provided if (!isNaN(Number(value))) { result[exports.DEFAULT_TIMEOUT_KEY] = lodash_1.default.toInteger(value); return result; } // JSON object has been provided. Let's parse it try { result = JSON.parse(value); if (!lodash_1.default.isPlainObject(result)) { throw new Error(); } } catch { throw logger_1.log.errorWithException(`"commandTimeouts" capability should be a valid JSON object. "${value}" was given instead`); } for (const [cmd, timeout] of lodash_1.default.toPairs(result)) { if (!lodash_1.default.isInteger(timeout) || timeout <= 0) { throw logger_1.log.errorWithException(`The timeout for "${cmd}" should be a valid natural number of milliseconds. "${timeout}" was given instead`); } } return result; } //# sourceMappingURL=validation.js.map