UNPKG

appium-ios-simulator

Version:
137 lines 6.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimulatorXcode15 = void 0; const support_1 = require("@appium/support"); const teen_process_1 = require("teen_process"); const path_1 = __importDefault(require("path")); const lodash_1 = __importDefault(require("lodash")); const bluebird_1 = __importDefault(require("bluebird")); const simulator_xcode_14_1 = require("./simulator-xcode-14"); class SimulatorXcode15 extends simulator_xcode_14_1.SimulatorXcode14 { _systemAppBundleIds; /** * @override * @inheritdoc * * @param bundleId - The bundle id of the application to be checked. * @return True if the given application is installed. */ isAppInstalled = async (bundleId) => { try { const appContainer = await this.simctl.getAppContainer(bundleId); return appContainer.endsWith('.app') && await support_1.fs.exists(appContainer); } catch { // get_app_container subcommand fails for system applications, // as well as the hidden appinfo command return (await this._fetchSystemAppBundleIds()).has(bundleId); } }; /** * @override * @inheritdoc * * @returns The full path to the LaunchDaemons directory */ async getLaunchDaemonsRoot() { return path_1.default.resolve(await this._getSystemRoot(), 'System', 'Library', 'LaunchDaemons'); } /** * Sets the increase contrast configuration for the given simulator. * This function can only be called on a booted simulator. * * @override * @since Xcode SDK 15 (but lower xcode could have this command) * @param value valid increase constrast configuration value. * Acceptable value is 'enabled' or 'disabled' with Xcode 16.2. */ setIncreaseContrast = async (value) => { await this.simctl.setIncreaseContrast(value); }; /** * Retrieves the current increase contrast configuration value from the given simulator. * This function can only be called on a booted simulator. * * @override * @since Xcode SDK 15 (but lower xcode could have this command) * @returns the contrast configuration value. * Possible return value is 'enabled', 'disabled', * 'unsupported' or 'unknown' with Xcode 16.2. */ getIncreaseContrast = async () => await this.simctl.getIncreaseContrast(); /** * Sets content size for the given simulator. * This function can only be called on a booted simulator. * * @override * @since Xcode SDK 15 (but lower xcode could have this command) * @param value valid content size or action value. Acceptable value is * extra-small, small, medium, large, extra-large, extra-extra-large, * extra-extra-extra-large, accessibility-medium, accessibility-large, * accessibility-extra-large, accessibility-extra-extra-large, * accessibility-extra-extra-extra-large with Xcode 16.2. */ setContentSize = async (value) => { await this.simctl.setContentSize(value); }; /** * Retrieves the current content size value from the given simulator. * This function can only be called on a booted simulator. * * @override * @since Xcode SDK 15 (but lower xcode could have this command) * @returns the content size value. Possible return value is * extra-small, small, medium, large, extra-large, extra-extra-large, * extra-extra-extra-large, accessibility-medium, accessibility-large, * accessibility-extra-large, accessibility-extra-extra-large, * accessibility-extra-extra-extra-large, * unknown or unsupported with Xcode 16.2. */ getContentSize = async () => await this.simctl.getContentSize(); /** * Retrives the full path to where the simulator system R/O volume is mounted * * @returns The full path to the system root */ async _getSystemRoot() { const simRoot = await this.simctl.getEnv('IPHONE_SIMULATOR_ROOT'); if (!simRoot) { throw new Error('The IPHONE_SIMULATOR_ROOT environment variable value cannot be retrieved'); } return lodash_1.default.trim(simRoot); } /** * Collects and caches bundle indetifier of system Simulator apps * * @returns A set of system app bundle identifiers */ async _fetchSystemAppBundleIds() { if (this._systemAppBundleIds) { return this._systemAppBundleIds; } const appsRoot = path_1.default.resolve(await this._getSystemRoot(), 'Applications'); const fetchBundleId = async (appRoot) => { const infoPlistPath = path_1.default.resolve(appRoot, 'Info.plist'); try { const { stdout } = await (0, teen_process_1.exec)('/usr/libexec/PlistBuddy', [ '-c', 'print CFBundleIdentifier', infoPlistPath ]); return lodash_1.default.trim(stdout); } catch { return null; } }; const allApps = (await support_1.fs.readdir(appsRoot)) .filter((x) => x.endsWith('.app')) .map((x) => path_1.default.join(appsRoot, x)); const bundleIds = await bluebird_1.default.all(allApps.map(fetchBundleId)); this._systemAppBundleIds = new Set(bundleIds.filter((x) => x !== null)); return this._systemAppBundleIds; } } exports.SimulatorXcode15 = SimulatorXcode15; //# sourceMappingURL=simulator-xcode-15.js.map