UNPKG

askui

Version:

Reliable, automated end-to-end-testing that depends on what is shown on your screen instead of the technology you are running on

54 lines (53 loc) 2.26 kB
import { ControlCommand } from '../../core/ui-control-commands'; import { DeviceClient } from '../device-client'; import { UiControllerClientConnectionState } from '../ui-controller-client-connection-state'; export type AndroidKeyboardMode = 'input-text' | 'adb-keyboard'; export interface AndroidAdbClientArgs { /** Select a specific device by its adb serial. Defaults to the first device. */ readonly id?: string; /** Path to the `adb` executable. Defaults to `adb` (must be on PATH). */ readonly adbPath?: string; /** Delay applied after each action, in milliseconds. Defaults to `0`. */ readonly actionDelayInMs?: number; /** * How text is typed. `input-text` uses `adb shell input text` (ASCII, no * setup). `adb-keyboard` uses the ADBKeyboard IME broadcast for full Unicode * support (requires ADBKeyboard installed and set as the default IME). * Defaults to `input-text`. */ readonly keyboard?: AndroidKeyboardMode; } /** * Drives an Android device directly via `adb`, implementing {@link DeviceClient} * so it is interchangeable with the desktop AgentOS gRPC client. Replaces the * legacy UI Controller's WebSocket/adbkit path: every operation is a plain * `adb` invocation, so no separate controller process or binary is required. */ export declare class AndroidAdbClient implements DeviceClient { private args; private static readonly EXEC_MAX_BUFFER; connectionState: UiControllerClientConnectionState; private readonly adbPath; private readonly keyboard; private readonly actionDelayInMs; private deviceId; private screenWidth; private screenHeight; private mousePosition; constructor(args?: AndroidAdbClientArgs); private exec; private shell; private listDevices; private resolveDeviceId; private updateScreenSize; connect(): Promise<UiControllerClientConnectionState>; disconnect(): void; setActiveDisplay(): Promise<void>; private requireConnected; private delay; requestControl(controlCommand: ControlCommand): Promise<void>; private runAction; private typeText; requestScreenshot(): Promise<string>; getStartingArguments(): Promise<Record<string, string | number | boolean>>; }