UNPKG

appium-adb

Version:

Android Debug Bridge interface

796 lines (743 loc) 19.5 kB
import * as emuConstants from './emu-constants'; export type StringRecord<T = any> = Record<string, T>; export interface ApkCreationOptions { /** * Specifies the path to the deployment keystore used * to sign the APKs. This flag is optional. If you don't include it, * bundletool attempts to sign your APKs with a debug signing key. * If the .apk has been already signed and cached then it is not going to be resigned * unless a different keystore or key alias is used. */ keystore?: string; /** * Specifies your keystore’s password. * It is mandatory to provide this value if `keystore` one is assigned * otherwise it is going to be ignored. */ keystorePassword?: string; /** * Specifies the alias of the signing key you want to use. * It is mandatory to provide this value if `keystore` one is assigned * otherwise it is going to be ignored. */ keyAlias?: string; /** * Specifies the password for the signing key. * It is mandatory to provide this value if `keystore` one is assigned * otherwise it is going to be ignored. */ keyPassword?: string; } export interface LogcatOpts { /** * The log print format, where <format> is one of: * brief process tag thread raw time threadtime long * `threadtime` is the default value. */ format?: string; /** * Series of `<tag>[:priority]` * where `<tag>` is a log component tag (or `*` for all) and priority is: * V Verbose * D Debug * I Info * W Warn * E Error * F Fatal * S Silent (suppress all output) * * `'*'` means `'*:d'` and `<tag>` by itself means `<tag>:v` * * If not specified on the commandline, filterspec is set from `ANDROID_LOG_TAGS`. * If no filterspec is found, filter defaults to `'*:I'` */ filterSpecs?: string[]; } export interface ResolveActivityOptions { /** * Whether to prefer `cmd` tool usage for * launchable activity name detection. It might be useful to disable it if * `cmd package resolve-activity` returns 'android/com.android.internal.app.ResolverActivity', * which means the app has no default handler set in system settings. * See https://github.com/appium/appium/issues/17128 for more details. * This option has no effect if the target Android version is below 24 as there * the corresponding `cmd` subcommand is not implemented and dumpsys usage is the only * possible way to detect the launchable activity name. * `true` by default. */ preferCmd?: boolean; } export interface LogEntry { timestamp: number; level: 'ALL'; message: string; } /** * Listener function, which accepts one argument. */ export type LogcatListener = (logEntry: LogEntry) => any; export interface SetPropOpts { /** * Do we run setProp as a privileged command? Default true. */ privileged?: boolean; } export interface ScreenrecordOptions { /** * The format is widthxheight. * The default value is the device's native display resolution (if supported), * 1280x720 if not. For best results, * use a size supported by your device's Advanced Video Coding (AVC) encoder. * For example, "1280x720" */ videoSize?: string; /** * Set it to `true` in order to display additional information on the video overlay, * such as a timestamp, that is helpful in videos captured to illustrate bugs. * This option is only supported since API level 27 (Android P) */ bugReport?: boolean; /** * The maximum recording time, in seconds. * The default (and maximum) value is 180 (3 minutes). */ timeLimit?: string | number; /** * The video bit rate for the video, in megabits per second. * The default value is 4. You can increase the bit rate to improve video quality, * but doing so results in larger movie files. */ bitRate?: string | number; } export type PortFamily = '4' | '6'; export interface PortInfo { /** * The actual port number between 0 and 0xFFFF */ port: number; family: PortFamily; /** * See https://elixir.bootlin.com/linux/v4.14.42/source/include/net/tcp_states.h */ state: number; } export interface APKInfo { /** * The name of application package, for example 'com.acme.app'. */ apkPackage: string; /** * The name of main application activity. */ apkActivity?: string; } export interface ExecTelnetOptions { /** * A timeout used to wait for a server * reply to the given command. 60000ms by default. */ execTimeout?: number; /** * Console connection timeout in milliseconds. * 5000ms by default. */ connTimeout?: number; /** * Telnet console initialization timeout * in milliseconds (the time between connection happens and the command prompt * is available). * 5000ms by default. */ initTimeout?: number; /** * The emulator port number. The script will try to parse it * from the current device identifier if unset */ port?: number | string; } export interface EmuVersionInfo { /** * The actual revision number, for example '30.0.5' */ revision?: string; /** * The build identifier, for example 6306047 */ buildId?: number; } export type GsmSignalStrength = (typeof emuConstants.GSM_SIGNAL_STRENGTHS)[number]; export interface EmuInfo { /** * Emulator name, for example `Pixel_XL_API_30` */ name: string; /** * Full path to the emulator config .ini file, * for example `/Users/user/.android/avd/Pixel_XL_API_30.ini` */ config: string; } export interface KeystoreHash { /** * the md5 hash value of the keystore */ md5?: string; /** * the sha1 hash value of the keystore */ sha1?: string; /** * the sha256 hash value of the keystore */ sha256?: string; /** * the sha512 hash value of the keystore */ sha512?: string; } export type SignedAppCacheValue = {output: string; expected: KeystoreHash; keystorePath: string}; export interface CertCheckOptions { /** * Whether to require that the destination APK * is signed with the default Appium certificate or any valid certificate. This option * only has effect if `useKeystore` property is unset. * `true` by default. */ requireDefaultCert?: boolean; } export interface InstallMultipleApksOptions { /** * The number of milliseconds to wait until * the installation is completed. 20000ms by default. */ timeout?: number | string; /** * The option name * used to increase the install timeout. * `androidInstallTimeout` by default */ timeoutCapName?: string; /** * Set to true in order to allow test * packages installation. `false` by default. */ allowTestPackages?: boolean; /** * Set to true to install the app on sdcard * instead of the device memory. `false` by default. */ useSdcard?: boolean; /** * Set to true in order to grant all the * permissions requested in the application's manifest automatically after the installation * is completed under Android 6+. * `false` by default. */ grantPermissions?: boolean; /** * Install apks partially. It is used for 'install-multiple'. * https://android.stackexchange.com/questions/111064/what-is-a-partial-application-install-via-adb. * `false` by default. */ partialInstall?: boolean; } export interface InstallApksOptions { /** * The number of milliseconds to wait until * the installation is completed. * 120000ms by default. */ timeout?: number | string; /** * The option name * used to increase the install timeout. * `androidInstallTimeout` by default */ timeoutCapName?: string; /** * Set to true in order to allow test * packages installation. `false` by default. */ allowTestPackages?: boolean; /** * Set to true in order to grant all the * permissions requested in the application's manifest automatically after the installation * is completed under Android 6+. * `false` by default. */ grantPermissions?: boolean; } export interface KeyboardState { /** * Whether soft keyboard is currently visible. */ isKeyboardShown: boolean; /** * Whether the keyboard can be closed. */ canCloseKeyboard: boolean; } export type InstallState = | 'unknown' | 'notInstalled' | 'newerVersionInstalled' | 'sameVersionInstalled' | 'olderVersionInstalled'; export interface IsAppInstalledOptions { /** * The user id */ user?: string; } export interface ListInstalledPackagesOptions { /** * The user id */ user?: string; } export interface ListInstalledPackagesResult { /** * The app package name */ appPackage: string; /** * The app package version code for API level 28+, * otherwise null. */ versionCode: string | null; } export interface StartUriOptions { /** * If `false` then adb won't wait * for the started activity to return the control. * `true` by default. */ waitForLaunch?: boolean; } export interface StartAppOptions { /** * The name of the application package */ pkg: string; /** * The name of the main application activity. * This or action is required in order to be able to launch an app. */ activity?: string; /** * The name of the intent action that will launch the required app. * This or activity is required in order to be able to launch an app. */ action?: string; /** * If this property is set to `true` * and the activity name does not start with '.' then the method * will try to add the missing dot and start the activity once more * if the first startup try fails. * `true` by default. */ retry?: boolean; /** * Set it to `true` in order to forcefully * stop the activity if it is already running. * `true` by default. */ stopApp?: boolean; /** * The name of the package to wait to on * startup (this only makes sense if this name is * different from the one, which is set as `pkg`) */ waitPkg?: string; /** * The name of the activity to wait to on * startup (this only makes sense if this name is different * from the one, which is set as `activity`) */ waitActivity?: string; /** * The number of milliseconds to wait until the * `waitActivity` is focused */ waitDuration?: number; /** * The number of the user profile to start * the given activity with. The default OS user profile (usually zero) is used * when this property is unset */ user?: string | number; /** * If `false` then adb won't wait * for the started activity to return the control. * `true` by default. */ waitForLaunch?: boolean; category?: string; flags?: string; optionalIntentArguments?: string; } export interface PackageActivityInfo { /** * The name of application package, * for example 'com.acme.app'. */ appPackage?: string | null; /** * The name of main application activity. */ appActivity?: string | null; } export interface UninstallOptions { /** * The count of milliseconds to wait until the * app is uninstalled. */ timeout?: number; /** * Set to true in order to keep the * application data and cache folders after uninstall. */ keepData?: boolean; /** * Whether to check if the app is installed prior to * uninstalling it. By default this is checked. */ skipInstallCheck?: boolean; } export interface CachingOptions { /** * The count of milliseconds to wait until the * app is uploaded to the remote location. */ timeout?: number; } export interface InstallOptions { /** * The count of milliseconds to wait until the * app is installed. * 20000ms by default. */ timeout?: number; /** * The option name * used to increase the timeout. * `androidInstallTimeout` by default. */ timeoutCapName?: string; /** * Set to true in order to allow test * packages installation. * `false` by default. */ allowTestPackages?: boolean; /** * Set to true to install the app on sdcard * instead of the device memory. * `false` by default. */ useSdcard?: boolean; /** * Set to true in order to grant all the * permissions requested in the application's manifest * automatically after the installation is completed * under Android 6+. * `false` by default. */ grantPermissions?: boolean; /** * Set it to false if you don't want * the application to be upgraded/reinstalled * if it is already present on the device. * `true` by default. */ replace?: boolean; /** * Forcefully disables incremental installs if set to `true`. * Read https://developer.android.com/preview/features#incremental * for more details. * `false` by default. */ noIncremental?: boolean; } export interface InstallOrUpgradeOptions { /** * The count of milliseconds to wait until the * app is installed. * 60000ms by default. */ timeout?: number; /** * Set to true in order to allow test * packages installation. * `false` by default. */ allowTestPackages?: boolean; /** * Set to true to install the app on SDCard * instead of the device memory. * `false` by default. */ useSdcard?: boolean; /** * Set to true in order to grant all the * permissions requested in the application's manifest * automatically after the installation is completed * under Android 6+. * `false` by default. */ grantPermissions?: boolean; /** * Set to `true` in order to always prefer * the current build over any installed packages having * the same identifier. * `false` by default. */ enforceCurrentBuild?: boolean; } export interface InstallOrUpgradeResult { /** * Equals to `true` if the target app has been uninstalled * before being installed */ wasUninstalled: boolean; /** * One of `adb.APP_INSTALL_STATE` states, which reflects * the state of the application before being installed. */ appState: InstallState; } export interface ApkStrings { /** * Parsed resource file * represented as JSON object. */ apkStrings: StringRecord; /** * The path to the extracted file on the local file system */ localPath?: string; } export interface AppInfo { /** * Package name, for example 'com.acme.app'. */ name: string; /** * Version code. */ versionCode?: number; /** * Version name, for example '1.0'. */ versionName?: string; /** * true if the app is installed on the device under test. */ isInstalled?: boolean; } export interface ConnectedDevicesOptions { /** * Whether to get long output, which includes extra properties in each device. * Akin to running `adb devices -l`. */ verbose?: boolean; } export interface Device { /** * The device udid. */ udid: string; /** * Current device state, as it is visible in * _adb devices -l_ output. */ state: string; port?: number; } export interface VerboseDevice extends Device { /** * The product codename of the device, such as "razor". */ product: string; /** * The model name of the device, such as "Nexus_7". */ model: string; /** * The device codename, such as "flow". */ device: string; /** * Represents the USB port the device is connected to, such as "1-1". */ usb?: string; /** * The Transport ID for the device, such as "1". */ transport_id?: string; } export type ExecOutputFormat = 'stdout' | 'full'; export interface ExecResult { /** * The stdout received from exec */ stdout: string; /** * The stderr received from exec */ stderr: string; } export interface SpecialAdbExecOptions { exclusive?: boolean; } export interface ShellExecOptions { /** * The name of the corresponding Appium's timeout capability * (used in the error messages). */ timeoutCapName?: string; /** * command execution timeout */ timeout?: number; /** * Whether to run the given command as root. * `false` by default. */ privileged?: boolean; /** * Whether response should include full exec output or just stdout. * Potential values are full or stdout. * * All other properties are the same as for `exec` call from {@link https://github.com/appium/node-teen_process} * module. * `stdout` by default. */ outputFormat?: ExecOutputFormat; } export type TFullOutputOption = {outputFormat: 'full'}; export interface AvdLaunchOptions { /** * Additional emulator command line arguments */ args?: string | string[]; /** * Additional emulator environment variables */ env?: Record<string, string>; /** * Emulator system language */ language?: string; /** * Emulator system country */ country?: string; /** * Emulator startup timeout in milliseconds. * 60000ms by default. */ launchTimeout?: number; /** * The maximum period of time to wait until Emulator * is ready for usage in milliseconds. * 60000ms by default. */ readyTimeout?: number; /** * The maximum number of startup retries. * `1` by default. */ retryTimes?: number; } export interface BinaryVersion { /** * The ADB binary version number */ version: string; /** * The ADB binary build number */ build: number; } export interface BridgeVersion { /** * The Android Debug Bridge version number */ version: string; } export interface Version { /** * This version number might not be * be present for older ADB releases. */ binary?: BinaryVersion; bridge: BridgeVersion; } export interface RootResult { /** * True if the call to root/unroot was successful */ isSuccessful: boolean; /** * True if the device was already rooted */ wasAlreadyRooted: boolean; } export type Sensors = (typeof emuConstants.SENSORS)[keyof typeof emuConstants.SENSORS]; export type NetworkSpeed = (typeof emuConstants.NETWORK_SPEED)[keyof typeof emuConstants.NETWORK_SPEED]; export type GsmVoiceStates = (typeof emuConstants.GSM_VOICE_STATES)[keyof typeof emuConstants.GSM_VOICE_STATES]; export type GsmCallActions = (typeof emuConstants.GSM_CALL_ACTIONS)[keyof typeof emuConstants.GSM_CALL_ACTIONS]; export type PowerAcStates = (typeof emuConstants.POWER_AC_STATES)[keyof typeof emuConstants.POWER_AC_STATES]; export interface PlatformInfo { /** * The platform name, for example `android-24` * or `null` if it cannot be found */ platform?: string | null; /** * Full path to the platform SDK folder * or `null` if it cannot be found */ platformPath?: string | null; } export interface LaunchableActivity { name: string; label?: string; icon?: string; } export interface ApkManifest { /** * Package name, for example 'io.appium.android.apis' */ name: string; versionCode: number; versionName?: string; platformBuildVersionName?: string; platformBuildVersionCode?: number; compileSdkVersion: number; compileSdkVersionCodename?: string; minSdkVersion: number; targetSdkVersion?: number; /** * List of requested permissions */ usesPermissions: string[]; launchableActivity: LaunchableActivity; /** * List of supported locales */ locales: string[]; /** * List of supported architectures. Could be empty for older apps. */ architectures: string[]; /** * List of supported display densities */ densities: number[]; }