appium-android-driver 12.4.6 → 12.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/build/lib/commands/app-management.d.ts +167 -113
- package/build/lib/commands/app-management.d.ts.map +1 -1
- package/build/lib/commands/app-management.js +147 -103
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/file-actions.d.ts +37 -19
- package/build/lib/commands/file-actions.d.ts.map +1 -1
- package/build/lib/commands/file-actions.js +44 -58
- package/build/lib/commands/file-actions.js.map +1 -1
- package/build/lib/commands/find.d.ts +20 -3
- package/build/lib/commands/find.d.ts.map +1 -1
- package/build/lib/commands/find.js +10 -3
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/intent.d.ts +103 -107
- package/build/lib/commands/intent.d.ts.map +1 -1
- package/build/lib/commands/intent.js +103 -97
- package/build/lib/commands/intent.js.map +1 -1
- package/build/lib/commands/performance.d.ts +80 -51
- package/build/lib/commands/performance.d.ts.map +1 -1
- package/build/lib/commands/performance.js +113 -89
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/recordscreen.d.ts +25 -40
- package/build/lib/commands/recordscreen.d.ts.map +1 -1
- package/build/lib/commands/recordscreen.js +46 -63
- package/build/lib/commands/recordscreen.js.map +1 -1
- package/build/lib/commands/shell.d.ts +21 -0
- package/build/lib/commands/shell.d.ts.map +1 -1
- package/build/lib/commands/shell.js +21 -0
- package/build/lib/commands/shell.js.map +1 -1
- package/build/lib/commands/streamscreen.d.ts +34 -64
- package/build/lib/commands/streamscreen.d.ts.map +1 -1
- package/build/lib/commands/streamscreen.js +41 -80
- package/build/lib/commands/streamscreen.js.map +1 -1
- package/build/lib/commands/types.d.ts.map +1 -1
- package/build/lib/driver.d.ts +2 -1
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js.map +1 -1
- package/lib/commands/app-management.ts +639 -0
- package/lib/commands/{file-actions.js → file-actions.ts} +88 -74
- package/lib/commands/find.ts +20 -3
- package/lib/commands/intent.ts +422 -0
- package/lib/commands/{performance.js → performance.ts} +167 -108
- package/lib/commands/{recordscreen.js → recordscreen.ts} +77 -73
- package/lib/commands/shell.ts +21 -0
- package/lib/commands/{streamscreen.js → streamscreen.ts} +86 -109
- package/lib/commands/types.ts +17 -0
- package/lib/driver.ts +2 -1
- package/package.json +1 -1
- package/lib/commands/app-management.js +0 -533
- package/lib/commands/intent.js +0 -409
|
@@ -31,18 +31,19 @@ const SUPPORTED_EXTRA_TYPES = [
|
|
|
31
31
|
'sal',
|
|
32
32
|
];
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* @
|
|
37
|
-
* @param
|
|
38
|
-
* @param
|
|
39
|
-
* @param
|
|
40
|
-
* @param
|
|
41
|
-
* @param
|
|
42
|
-
* @param
|
|
43
|
-
* @param
|
|
44
|
-
* @param
|
|
45
|
-
* @
|
|
34
|
+
* Starts an Android activity.
|
|
35
|
+
*
|
|
36
|
+
* @deprecated Use {@link mobileStartActivity} instead.
|
|
37
|
+
* @param appPackage The package name of the application to start.
|
|
38
|
+
* @param appActivity The activity name to start.
|
|
39
|
+
* @param appWaitPackage The package name to wait for. Defaults to `appPackage` if not provided.
|
|
40
|
+
* @param appWaitActivity The activity name to wait for. Defaults to `appActivity` if not provided.
|
|
41
|
+
* @param intentAction The intent action to use.
|
|
42
|
+
* @param intentCategory The intent category to use.
|
|
43
|
+
* @param intentFlags The intent flags to use.
|
|
44
|
+
* @param optionalIntentArguments Optional intent arguments.
|
|
45
|
+
* @param dontStopAppOnReset If `true`, does not stop the app on reset. If not provided, uses the capability value.
|
|
46
|
+
* @returns Promise that resolves when the activity is started.
|
|
46
47
|
*/
|
|
47
48
|
async function startActivity(appPackage, appActivity, appWaitPackage, appWaitActivity, intentAction, intentCategory, intentFlags, optionalIntentArguments, dontStopAppOnReset) {
|
|
48
49
|
this.log.debug(`Starting package '${appPackage}' and activity '${appActivity}'`);
|
|
@@ -51,8 +52,7 @@ async function startActivity(appPackage, appActivity, appWaitPackage, appWaitAct
|
|
|
51
52
|
if (!support_1.util.hasValue(dontStopAppOnReset)) {
|
|
52
53
|
dontStopAppOnReset = !!this.opts.dontStopAppOnReset;
|
|
53
54
|
}
|
|
54
|
-
|
|
55
|
-
let args = {
|
|
55
|
+
const args = {
|
|
56
56
|
pkg: appPackage,
|
|
57
57
|
activity: appActivity,
|
|
58
58
|
waitPkg: appWaitPackage || appPackage,
|
|
@@ -68,34 +68,35 @@ async function startActivity(appPackage, appActivity, appWaitPackage, appWaitAct
|
|
|
68
68
|
await this.adb.startApp(args);
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
71
|
+
* Starts an Android activity using the activity manager.
|
|
72
|
+
*
|
|
73
|
+
* @param wait Set it to `true` if you want to block the method call
|
|
73
74
|
* until the activity manager's process returns the control to the system.
|
|
74
|
-
* false by default.
|
|
75
|
-
* @param
|
|
76
|
-
* app before starting the activity
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* for more details on possible windowing modes (constants starting with
|
|
82
|
-
* `WINDOWING_MODE_`).
|
|
83
|
-
* @param {string | number} [activityType] The activity type to launch the activity as.
|
|
75
|
+
* `false` by default.
|
|
76
|
+
* @param stop Set it to `true` to force stop the target
|
|
77
|
+
* app before starting the activity. `false` by default.
|
|
78
|
+
* @param windowingMode The windowing mode to launch the activity into.
|
|
79
|
+
* Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java
|
|
80
|
+
* for more details on possible windowing modes (constants starting with `WINDOWING_MODE_`).
|
|
81
|
+
* @param activityType The activity type to launch the activity as.
|
|
84
82
|
* Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java
|
|
85
83
|
* for more details on possible activity types (constants starting with `ACTIVITY_TYPE_`).
|
|
86
|
-
* @param
|
|
87
|
-
* @param
|
|
88
|
-
* @param
|
|
89
|
-
*
|
|
90
|
-
* @param
|
|
91
|
-
* @param
|
|
92
|
-
* @param
|
|
93
|
-
* @param
|
|
94
|
-
* @param
|
|
95
|
-
* @param
|
|
96
|
-
* @param
|
|
97
|
-
* @param
|
|
98
|
-
*
|
|
84
|
+
* @param display The display identifier to launch the activity into.
|
|
85
|
+
* @param user The user ID for which the activity is started.
|
|
86
|
+
* @param intent The name of the activity intent to start, for example
|
|
87
|
+
* `com.some.package.name/.YourActivitySubClassName`.
|
|
88
|
+
* @param action Action name.
|
|
89
|
+
* @param pkg Package name.
|
|
90
|
+
* @param uri Unified resource identifier.
|
|
91
|
+
* @param mimeType Mime type.
|
|
92
|
+
* @param identifier Optional identifier.
|
|
93
|
+
* @param component Component name.
|
|
94
|
+
* @param categories One or more category names.
|
|
95
|
+
* @param extras Optional intent arguments. Must be represented as array of arrays,
|
|
96
|
+
* where each subarray item contains two or three string items: value type, key name and the value itself.
|
|
97
|
+
* See {@link IntentOpts} for supported value types.
|
|
98
|
+
* @param flags Intent startup-specific flags as a hexadecimal string.
|
|
99
|
+
* @returns Promise that resolves to the command output string.
|
|
99
100
|
*/
|
|
100
101
|
async function mobileStartActivity(wait, stop, windowingMode, activityType, display, user, intent, action, pkg, uri, mimeType, identifier, component, categories, extras, flags) {
|
|
101
102
|
const cmd = [
|
|
@@ -135,23 +136,26 @@ async function mobileStartActivity(wait, stop, windowingMode, activityType, disp
|
|
|
135
136
|
return await this.adb.shell(cmd);
|
|
136
137
|
}
|
|
137
138
|
/**
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* @param
|
|
143
|
-
*
|
|
144
|
-
* @param
|
|
145
|
-
*
|
|
146
|
-
* @param
|
|
147
|
-
* @param
|
|
148
|
-
* @param
|
|
149
|
-
* @param
|
|
150
|
-
* @param
|
|
151
|
-
* @param
|
|
152
|
-
* @param
|
|
153
|
-
* @param
|
|
154
|
-
*
|
|
139
|
+
* Sends a broadcast intent to the Android system.
|
|
140
|
+
*
|
|
141
|
+
* @param receiverPermission Require receiver to hold the given permission.
|
|
142
|
+
* @param allowBackgroundActivityStarts Whether the receiver may start activities even if in the background.
|
|
143
|
+
* @param user The user ID for which the broadcast is sent.
|
|
144
|
+
* The `current` alias assumes the current user ID. `all` by default.
|
|
145
|
+
* @param intent The name of the activity intent to broadcast, for example
|
|
146
|
+
* `com.some.package.name/.YourServiceSubClassName`.
|
|
147
|
+
* @param action Action name.
|
|
148
|
+
* @param pkg Package name.
|
|
149
|
+
* @param uri Unified resource identifier.
|
|
150
|
+
* @param mimeType Mime type.
|
|
151
|
+
* @param identifier Optional identifier.
|
|
152
|
+
* @param component Component name.
|
|
153
|
+
* @param categories One or more category names.
|
|
154
|
+
* @param extras Optional intent arguments. Must be represented as array of arrays,
|
|
155
|
+
* where each subarray item contains two or three string items: value type, key name and the value itself.
|
|
156
|
+
* See {@link IntentOpts} for supported value types.
|
|
157
|
+
* @param flags Intent startup-specific flags as a hexadecimal string.
|
|
158
|
+
* @returns Promise that resolves to the command output string.
|
|
155
159
|
*/
|
|
156
160
|
async function mobileBroadcast(receiverPermission, allowBackgroundActivityStarts, user, intent, action, pkg, uri, mimeType, identifier, component, categories, extras, flags) {
|
|
157
161
|
const cmd = ['am', 'broadcast'];
|
|
@@ -179,22 +183,26 @@ async function mobileBroadcast(receiverPermission, allowBackgroundActivityStarts
|
|
|
179
183
|
return await this.adb.shell(cmd);
|
|
180
184
|
}
|
|
181
185
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
* @param
|
|
187
|
-
*
|
|
188
|
-
* @param
|
|
189
|
-
*
|
|
190
|
-
* @param
|
|
191
|
-
* @param
|
|
192
|
-
* @param
|
|
193
|
-
* @param
|
|
194
|
-
* @param
|
|
195
|
-
* @param
|
|
196
|
-
* @param
|
|
197
|
-
* @
|
|
186
|
+
* Starts an Android service.
|
|
187
|
+
*
|
|
188
|
+
* @param foreground Set it to `true` if your service must be started as foreground service.
|
|
189
|
+
* This option is ignored if the API level of the device under test is below 26 (Android 8).
|
|
190
|
+
* @param user The user ID for which the service is started.
|
|
191
|
+
* The `current` user id is used by default.
|
|
192
|
+
* @param intent The name of the activity intent to start, for example
|
|
193
|
+
* `com.some.package.name/.YourServiceSubClassName`.
|
|
194
|
+
* @param action Action name.
|
|
195
|
+
* @param pkg Package name.
|
|
196
|
+
* @param uri Unified resource identifier.
|
|
197
|
+
* @param mimeType Mime type.
|
|
198
|
+
* @param identifier Optional identifier.
|
|
199
|
+
* @param component Component name.
|
|
200
|
+
* @param categories One or more category names.
|
|
201
|
+
* @param extras Optional intent arguments. Must be represented as array of arrays,
|
|
202
|
+
* where each subarray item contains two or three string items: value type, key name and the value itself.
|
|
203
|
+
* See {@link IntentOpts} for supported value types.
|
|
204
|
+
* @param flags Intent startup-specific flags as a hexadecimal string.
|
|
205
|
+
* @returns Promise that resolves to the command output string.
|
|
198
206
|
*/
|
|
199
207
|
async function mobileStartService(foreground, user, intent, action, pkg, uri, mimeType, identifier, component, categories, extras, flags) {
|
|
200
208
|
const cmd = ['am'];
|
|
@@ -217,19 +225,24 @@ async function mobileStartService(foreground, user, intent, action, pkg, uri, mi
|
|
|
217
225
|
return await this.adb.shell(cmd);
|
|
218
226
|
}
|
|
219
227
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* @param
|
|
223
|
-
* @param
|
|
224
|
-
*
|
|
225
|
-
* @param
|
|
226
|
-
* @param
|
|
227
|
-
* @param
|
|
228
|
-
* @param
|
|
229
|
-
* @param
|
|
230
|
-
* @param
|
|
231
|
-
* @param
|
|
232
|
-
* @
|
|
228
|
+
* Stops an Android service.
|
|
229
|
+
*
|
|
230
|
+
* @param user The user ID for which the service is stopped.
|
|
231
|
+
* @param intent The name of the activity intent to stop, for example
|
|
232
|
+
* `com.some.package.name/.YourServiceSubClassName`.
|
|
233
|
+
* @param action Action name.
|
|
234
|
+
* @param pkg Package name.
|
|
235
|
+
* @param uri Unified resource identifier.
|
|
236
|
+
* @param mimeType Mime type.
|
|
237
|
+
* @param identifier Optional identifier.
|
|
238
|
+
* @param component Component name.
|
|
239
|
+
* @param categories One or more category names.
|
|
240
|
+
* @param extras Optional intent arguments. Must be represented as array of arrays,
|
|
241
|
+
* where each subarray item contains two or three string items: value type, key name and the value itself.
|
|
242
|
+
* See {@link IntentOpts} for supported value types.
|
|
243
|
+
* @param flags Intent startup-specific flags as a hexadecimal string.
|
|
244
|
+
* @returns Promise that resolves to the command output string.
|
|
245
|
+
* If the service was already stopped, returns the error message.
|
|
233
246
|
*/
|
|
234
247
|
async function mobileStopService(user, intent, action, pkg, uri, mimeType, identifier, component, categories, extras, flags) {
|
|
235
248
|
const cmd = [
|
|
@@ -256,18 +269,14 @@ async function mobileStopService(user, intent, action, pkg, uri, mimeType, ident
|
|
|
256
269
|
}
|
|
257
270
|
catch (e) {
|
|
258
271
|
// https://github.com/appium/appium-uiautomator2-driver/issues/792
|
|
259
|
-
|
|
260
|
-
|
|
272
|
+
const err = e;
|
|
273
|
+
if (err.code === 255 && err.stderr?.includes('Service stopped')) {
|
|
274
|
+
return err.stderr;
|
|
261
275
|
}
|
|
262
276
|
throw e;
|
|
263
277
|
}
|
|
264
278
|
}
|
|
265
279
|
// #region Internal helpers
|
|
266
|
-
/**
|
|
267
|
-
*
|
|
268
|
-
* @param {import('./types').IntentOpts} opts
|
|
269
|
-
* @returns {string[]}
|
|
270
|
-
*/
|
|
271
280
|
function parseIntentSpec(opts = {}) {
|
|
272
281
|
const { intent, action, uri, mimeType, identifier, categories, component, extras, flags } = opts;
|
|
273
282
|
const resultArgs = [];
|
|
@@ -309,9 +318,9 @@ function parseIntentSpec(opts = {}) {
|
|
|
309
318
|
throw new driver_1.errors.InvalidArgumentError(`Extra argument '${item}' must be an array`);
|
|
310
319
|
}
|
|
311
320
|
const [type, key, value] = item;
|
|
312
|
-
if (!
|
|
321
|
+
if (!SUPPORTED_EXTRA_TYPES.includes(type)) {
|
|
313
322
|
throw new driver_1.errors.InvalidArgumentError(`Extra argument type '${type}' is not known. ` +
|
|
314
|
-
`Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`);
|
|
323
|
+
`Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES.join(', ')}`);
|
|
315
324
|
}
|
|
316
325
|
if (lodash_1.default.isEmpty(key) || (lodash_1.default.isString(key) && lodash_1.default.trim(key) === '')) {
|
|
317
326
|
throw new driver_1.errors.InvalidArgumentError(`Extra argument's key in '${JSON.stringify(item)}' must be a valid string identifier`);
|
|
@@ -334,7 +343,4 @@ function parseIntentSpec(opts = {}) {
|
|
|
334
343
|
return resultArgs;
|
|
335
344
|
}
|
|
336
345
|
// #endregion
|
|
337
|
-
/**
|
|
338
|
-
* @typedef {import('appium-adb').ADB} ADB
|
|
339
|
-
*/
|
|
340
346
|
//# sourceMappingURL=intent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../lib/commands/intent.
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../lib/commands/intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,44 @@
|
|
|
1
|
+
import type { AndroidDriver } from '../driver';
|
|
2
|
+
import type { PerformanceDataType } from './types';
|
|
3
|
+
export declare const NETWORK_KEYS: readonly [readonly ["bucketStart", "activeTime", "rxBytes", "rxPackets", "txBytes", "txPackets", "operations", "bucketDuration"], readonly ["st", "activeTime", "rb", "rp", "tb", "tp", "op", "bucketDuration"]];
|
|
4
|
+
export declare const CPU_KEYS: readonly ["user", "kernel"];
|
|
5
|
+
export declare const BATTERY_KEYS: readonly ["power"];
|
|
6
|
+
export declare const MEMORY_KEYS: readonly ["totalPrivateDirty", "nativePrivateDirty", "dalvikPrivateDirty", "eglPrivateDirty", "glPrivateDirty", "totalPss", "nativePss", "dalvikPss", "eglPss", "glPss", "nativeHeapAllocatedSize", "nativeHeapSize", "nativeRss", "dalvikRss", "totalRss"];
|
|
7
|
+
export declare const SUPPORTED_PERFORMANCE_DATA_TYPES: Readonly<{
|
|
8
|
+
readonly cpuinfo: "the amount of cpu by user and kernel process - cpu information for applications on real devices and simulators";
|
|
9
|
+
readonly memoryinfo: "the amount of memory used by the process - memory information for applications on real devices and simulators";
|
|
10
|
+
readonly batteryinfo: "the remaining battery power - battery power information for applications on real devices and simulators";
|
|
11
|
+
readonly networkinfo: "the network statistics - network rx/tx information for applications on real devices and simulators";
|
|
12
|
+
}>;
|
|
13
|
+
export declare const MEMINFO_TITLES: Readonly<{
|
|
14
|
+
readonly NATIVE: "Native";
|
|
15
|
+
readonly DALVIK: "Dalvik";
|
|
16
|
+
readonly EGL: "EGL";
|
|
17
|
+
readonly GL: "GL";
|
|
18
|
+
readonly MTRACK: "mtrack";
|
|
19
|
+
readonly TOTAL: "TOTAL";
|
|
20
|
+
readonly HEAP: "Heap";
|
|
21
|
+
}>;
|
|
1
22
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
23
|
+
* Retrieves the list of available performance data types.
|
|
24
|
+
*
|
|
25
|
+
* @returns An array of supported performance data type names.
|
|
26
|
+
* The possible values are: 'cpuinfo', 'memoryinfo', 'batteryinfo', 'networkinfo'.
|
|
4
27
|
*/
|
|
5
|
-
export function getPerformanceDataTypes(this:
|
|
28
|
+
export declare function getPerformanceDataTypes(this: AndroidDriver): Promise<PerformanceDataType[]>;
|
|
6
29
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* @param
|
|
10
|
-
*
|
|
11
|
-
* @
|
|
30
|
+
* Retrieves performance data for the specified data type.
|
|
31
|
+
*
|
|
32
|
+
* @param packageName The package name of the application to get performance data for.
|
|
33
|
+
* Required for 'cpuinfo' and 'memoryinfo' data types.
|
|
34
|
+
* @param dataType The type of performance data to retrieve.
|
|
35
|
+
* Must be one of values returned by {@link getPerformanceDataTypes}.
|
|
36
|
+
* @param retries The number of retry attempts if data retrieval fails.
|
|
37
|
+
* @returns A two-dimensional array where the first row contains column names
|
|
38
|
+
* and subsequent rows contain the sampled data values.
|
|
39
|
+
* @throws {Error} If the data type is not supported or data retrieval fails.
|
|
12
40
|
*/
|
|
13
|
-
export function getPerformanceData(this:
|
|
41
|
+
export declare function getPerformanceData(this: AndroidDriver, packageName: string, dataType: string, retries?: number): Promise<any[][]>;
|
|
14
42
|
/**
|
|
15
43
|
* Retrieves performance data about the given Android subsystem.
|
|
16
44
|
* The data is parsed from the output of the dumpsys utility.
|
|
@@ -29,25 +57,42 @@ export function getPerformanceData(this: import("../driver").AndroidDriver, pack
|
|
|
29
57
|
* [1478091600, null, null, 2714683, 11821, 1420564, 12650, 0, 3600], [1478095200, null, null, 10079213, 19962, 2487705, 20015, 0, 3600],
|
|
30
58
|
* [1478098800, null, null, 4444433, 10227, 1430356, 10493, 0, 3600]]
|
|
31
59
|
* - cpuinfo: [[user, kernel], [0.9, 1.3]]
|
|
32
|
-
*
|
|
33
|
-
* @this {AndroidDriver}
|
|
34
|
-
* @param {string} packageName The name of the package identifier to fetch the data for
|
|
35
|
-
* @param {import('./types').PerformanceDataType} dataType One of supported subsystem to fetch the data for.
|
|
36
|
-
* @returns {Promise<any[][]>}
|
|
37
60
|
*/
|
|
38
|
-
export function mobileGetPerformanceData(this:
|
|
61
|
+
export declare function mobileGetPerformanceData(this: AndroidDriver, packageName: string, dataType: PerformanceDataType): Promise<any[][]>;
|
|
39
62
|
/**
|
|
63
|
+
* Retrieves memory information for the specified application package.
|
|
64
|
+
*
|
|
65
|
+
* The data is parsed from the output of `dumpsys meminfo` command.
|
|
66
|
+
* The output format varies depending on the Android API level:
|
|
67
|
+
* - API 18-29: Contains PSS, private dirty, and heap information
|
|
68
|
+
* - API 30+: Additionally includes RSS information
|
|
40
69
|
*
|
|
41
|
-
* @
|
|
42
|
-
* @param
|
|
43
|
-
* @
|
|
70
|
+
* @param packageName The package name of the application to get memory information for.
|
|
71
|
+
* @param retries The number of retry attempts if data retrieval fails.
|
|
72
|
+
* @returns A two-dimensional array where the first row contains memory metric names
|
|
73
|
+
* (totalPrivateDirty, nativePrivateDirty, dalvikPrivateDirty, eglPrivateDirty,
|
|
74
|
+
* glPrivateDirty, totalPss, nativePss, dalvikPss, eglPss, glPss,
|
|
75
|
+
* nativeHeapAllocatedSize, nativeHeapSize, nativeRss, dalvikRss, totalRss)
|
|
76
|
+
* and the second row contains the corresponding values.
|
|
77
|
+
* @throws {Error} If memory data cannot be retrieved or parsed.
|
|
44
78
|
*/
|
|
45
|
-
export function getMemoryInfo(this:
|
|
79
|
+
export declare function getMemoryInfo(this: AndroidDriver, packageName: string, retries?: number): Promise<any[][]>;
|
|
46
80
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
81
|
+
* Retrieves network traffic statistics from the device.
|
|
82
|
+
*
|
|
83
|
+
* The data is parsed from the output of `dumpsys netstats` command.
|
|
84
|
+
* The output format differs between emulators and real devices:
|
|
85
|
+
* - Emulators: Uses full key names (bucketStart, activeTime, rxBytes, etc.)
|
|
86
|
+
* - Real devices (Android 7.1+): Uses abbreviated keys (st, rb, rp, tb, tp, op)
|
|
87
|
+
*
|
|
88
|
+
* @param retries The number of retry attempts if data retrieval fails.
|
|
89
|
+
* @returns A two-dimensional array where the first row contains network metric names
|
|
90
|
+
* (bucketStart/st, activeTime, rxBytes/rb, rxPackets/rp, txBytes/tb, txPackets/tp,
|
|
91
|
+
* operations/op, bucketDuration) and subsequent rows contain the sampled data
|
|
92
|
+
* for each time bucket.
|
|
93
|
+
* @throws {Error} If network traffic data cannot be retrieved or parsed.
|
|
49
94
|
*/
|
|
50
|
-
export function getNetworkTrafficInfo(this:
|
|
95
|
+
export declare function getNetworkTrafficInfo(this: AndroidDriver, retries?: number): Promise<any[][]>;
|
|
51
96
|
/**
|
|
52
97
|
* Return the CPU information related to the given packageName.
|
|
53
98
|
* It raises an exception if the dumped CPU information did not include the given packageName
|
|
@@ -58,39 +103,23 @@ export function getNetworkTrafficInfo(this: import("../driver").AndroidDriver, r
|
|
|
58
103
|
* from 2023-02-07 12:04:40.556 to 2023-02-07 12:09:40.668. No process information
|
|
59
104
|
* exists in the result if the process was not running during the period.
|
|
60
105
|
*
|
|
61
|
-
* @
|
|
62
|
-
* @param
|
|
63
|
-
* @
|
|
64
|
-
* @returns {Promise<[typeof CPU_KEYS, [user: string, kernel: string]]>} The array of the parsed CPU upsage percentages.
|
|
106
|
+
* @param packageName The package name to get the CPU information.
|
|
107
|
+
* @param retries The number of retry count.
|
|
108
|
+
* @returns The array of the parsed CPU upsage percentages.
|
|
65
109
|
* e.g. ['cpuinfo', ['14.3', '28.2']]
|
|
66
110
|
* '14.3' is usage by the user (%), '28.2' is usage by the kernel (%)
|
|
67
111
|
* @throws {Error} If it failed to parse the result of dumpsys, or no package name exists.
|
|
68
112
|
*/
|
|
69
|
-
export function getCPUInfo(this:
|
|
113
|
+
export declare function getCPUInfo(this: AndroidDriver, packageName: string, retries?: number): Promise<[typeof CPU_KEYS, [user: string, kernel: string]]>;
|
|
70
114
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
115
|
+
* Retrieves battery level information from the device.
|
|
116
|
+
*
|
|
117
|
+
* The data is parsed from the output of `dumpsys battery` command.
|
|
118
|
+
*
|
|
119
|
+
* @param retries The number of retry attempts if data retrieval fails.
|
|
120
|
+
* @returns A two-dimensional array where the first row contains the metric name ['power']
|
|
121
|
+
* and the second row contains the battery level as a string (0-100).
|
|
122
|
+
* @throws {Error} If battery data cannot be retrieved or parsed.
|
|
73
123
|
*/
|
|
74
|
-
export function getBatteryInfo(this:
|
|
75
|
-
export const NETWORK_KEYS: string[][];
|
|
76
|
-
export const CPU_KEYS: readonly ["user", "kernel"];
|
|
77
|
-
export const BATTERY_KEYS: string[];
|
|
78
|
-
export const MEMORY_KEYS: string[];
|
|
79
|
-
export const SUPPORTED_PERFORMANCE_DATA_TYPES: Readonly<{
|
|
80
|
-
cpuinfo: "the amount of cpu by user and kernel process - cpu information for applications on real devices and simulators";
|
|
81
|
-
memoryinfo: "the amount of memory used by the process - memory information for applications on real devices and simulators";
|
|
82
|
-
batteryinfo: "the remaining battery power - battery power information for applications on real devices and simulators";
|
|
83
|
-
networkinfo: "the network statistics - network rx/tx information for applications on real devices and simulators";
|
|
84
|
-
}>;
|
|
85
|
-
export const MEMINFO_TITLES: Readonly<{
|
|
86
|
-
NATIVE: "Native";
|
|
87
|
-
DALVIK: "Dalvik";
|
|
88
|
-
EGL: "EGL";
|
|
89
|
-
GL: "GL";
|
|
90
|
-
MTRACK: "mtrack";
|
|
91
|
-
TOTAL: "TOTAL";
|
|
92
|
-
HEAP: "Heap";
|
|
93
|
-
}>;
|
|
94
|
-
export type AndroidDriver = import("../driver").AndroidDriver;
|
|
95
|
-
export type ADB = import("appium-adb").ADB;
|
|
124
|
+
export declare function getBatteryInfo(this: AndroidDriver, retries?: number): Promise<any[][]>;
|
|
96
125
|
//# sourceMappingURL=performance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../lib/commands/performance.
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../lib/commands/performance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,YAAY,kNAYf,CAAC;AAEX,eAAO,MAAM,QAAQ,6BAA8B,CAAC;AACpD,eAAO,MAAM,YAAY,oBAAqB,CAAC;AAC/C,eAAO,MAAM,WAAW,6PAgBd,CAAC;AAEX,eAAO,MAAM,gCAAgC;;;;;EASlC,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;;;;EAQhB,CAAC;AAIZ;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAEhC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAoBlB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAElB;AAwED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAkClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAyKlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAqC5D;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAclB"}
|