AI_UIAutomation/drivers/types.ts

55 lines
2.0 KiB
TypeScript

export type Platform = 'ios' | 'android';
export interface ElementLocator {
name: string;
ios?: { using: 'name' | 'predicate string' | 'class name'; value: string };
android?: { using: 'id' | 'text' | 'content-desc' | '-android uiautomator'; value: string };
}
export interface Rect {
x: number;
y: number;
width: number;
height: number;
}
export interface DeviceDriver {
readonly platform: Platform;
createSession(): Promise<void>;
destroySession(): Promise<void>;
findElement(locator: ElementLocator): Promise<string | null>;
findElements(locator: ElementLocator): Promise<string[]>;
findElementRaw(using: string, value: string): Promise<string | null>;
findElementsRaw(using: string, value: string): Promise<string[]>;
getElementRect(elementId: string): Promise<Rect>;
getElementAttribute(elementId: string, attr: string): Promise<string>;
tap(x: number, y: number): Promise<void>;
doubleTap(x: number, y: number): Promise<void>;
longPress(x: number, y: number, duration?: number): Promise<void>;
tapElement(elementId: string): Promise<void>;
clickElement(elementId: string): Promise<void>;
typeText(elementId: string, text: string): Promise<void>;
clearText(elementId: string): Promise<void>;
swipe(fromX: number, fromY: number, toX: number, toY: number, duration?: number): Promise<void>;
scrollDown(distance?: number): Promise<void>;
scrollUp(distance?: number): Promise<void>;
goBack(): Promise<void>;
getSource(): Promise<string>;
getWindowSize(): Promise<{ width: number; height: number }>;
screenshot(): Promise<string>;
tapByLocator(locator: ElementLocator): Promise<boolean>;
waitForElement(locator: ElementLocator, timeoutMs?: number): Promise<string | null>;
isElementVisible(locator: ElementLocator): Promise<boolean>;
findBotCard(): Promise<string | null>;
findDeviceCard(deviceName: string): Promise<string | null>;
isOnHomepage(): Promise<boolean>;
goBackToHomepage(): Promise<boolean>;
dismissPopupIfPresent(): Promise<boolean>;
}