appium-adb
Version:
Android Debug Bridge interface
796 lines (743 loc) • 19.5 kB
text/typescript
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[];
}