appium-xcuitest-driver
Version:
Appium driver for iOS using XCUITest for backend
39 lines (33 loc) • 1.29 kB
text/typescript
import type {HidButtonName, HidButtonPressOptions, HidIndigoService} from 'appium-ios-remotexpc';
import type {RemoteXPCFacade} from './remote-xpc';
/**
* HID Indigo service on real hardware.
*
* Requires **iOS/tvOS 26+** and the optional **`appium-ios-remotexpc`** package.
*/
export class HidIndigoClient {
constructor(
private readonly udid: string,
private readonly remoteXPCFacade: RemoteXPCFacade,
) {}
async pressButtonByName(name: HidButtonName, options?: HidButtonPressOptions): Promise<void> {
await this.withHidIndigoService((hidIndigoService) => hidIndigoService.pressButton(name, options));
}
async pressButtonByPageAndUsage(
usagePage: number,
usageCode: number,
options?: HidButtonPressOptions,
): Promise<void> {
await this.withHidIndigoService((hidIndigoService) => hidIndigoService.pressButton(usagePage, usageCode, options));
}
private async withHidIndigoService(operation: (hidIndigoService: HidIndigoService) => Promise<void>): Promise<void> {
const hidIndigoService = await this.remoteXPCFacade.requireService('HID Indigo', (Services) =>
Services.startHidIndigoService(this.udid),
);
try {
await operation(hidIndigoService);
} finally {
await hidIndigoService.close();
}
}
}