appium-mac2-driver
Version:
XCTest-based Appium driver for macOS apps automation
88 lines (83 loc) • 3.21 kB
text/typescript
import type {Mac2Driver} from '../driver';
import type {StringRecord} from '@appium/types';
/**
* Start an app with given bundle identifier or activates it
* if the app is already running. An exception is thrown if the
* app with the given identifier cannot be found.
*
* @param bundleId - Bundle identifier of the app to be launched or activated.
* Either this property or `path` must be provided
* @param path - Full path to the app bundle. Either this property or
* `bundleId` must be provided
* @param args - The list of command line arguments for the app to be launched with.
* This parameter is ignored if the app is already running.
* @param environment - Environment variables mapping.
* Custom variables are added to the default process environment.
*/
export async function macosLaunchApp(
this: Mac2Driver,
bundleId?: string,
path?: string,
args?: string[],
environment?: StringRecord,
): Promise<unknown> {
return await this.wda.proxy.command('/wda/apps/launch', 'POST', {
arguments: args,
environment,
bundleId,
path,
});
}
/**
* Activate an app with given bundle identifier. An exception is thrown if the
* app cannot be found or is not running.
*
* @param bundleId - Bundle identifier of the app to be activated.
* Either this property or `path` must be provided
* @param path - Full path to the app bundle. Either this property
* or `bundleId` must be provided
*/
export async function macosActivateApp(
this: Mac2Driver,
bundleId?: string,
path?: string,
): Promise<unknown> {
return await this.wda.proxy.command('/wda/apps/activate', 'POST', {bundleId, path});
}
/**
* Terminate an app with given bundle identifier. An exception is thrown if the
* app cannot be found.
*
* @param bundleId - Bundle identifier of the app to be terminated.
* Either this property or `path` must be provided
* @param path - Full path to the app bundle. Either this property
* or `bundleId` must be provided
* @returns `true` if the app was running and has been successfully terminated.
* `false` if the app was not running before.
*/
export async function macosTerminateApp(
this: Mac2Driver,
bundleId?: string,
path?: string,
): Promise<boolean> {
return (await this.wda.proxy.command('/wda/apps/terminate', 'POST', {bundleId, path})) as boolean;
}
/**
* Query an app state with given bundle identifier. An exception is thrown if the
* app cannot be found.
*
* @param bundleId - Bundle identifier of the app whose state should be queried.
* Either this property or `path` must be provided
* @param path - Full path to the app bundle. Either this property
* or `bundleId` must be provided
* @returns The application state code. See
* https://developer.apple.com/documentation/xctest/xcuiapplicationstate?language=objc
* for more details
*/
export async function macosQueryAppState(
this: Mac2Driver,
bundleId?: string,
path?: string,
): Promise<number> {
return (await this.wda.proxy.command('/wda/apps/state', 'POST', {bundleId, path})) as number;
}