appium-ios-simulator
Version:
iOS Simulator interface for Appium.
137 lines • 6.01 kB
JavaScript
;
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