io.appium.settings 7.1.10 → 8.0.0
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 +16 -0
- package/apks/settings_apk-debug.apk +0 -0
- package/build/lib/client.d.ts +11 -11
- package/build/lib/client.d.ts.map +1 -1
- package/build/lib/client.js +47 -51
- package/build/lib/client.js.map +1 -1
- package/build/lib/commands/animation.d.ts +1 -1
- package/build/lib/commands/animation.d.ts.map +1 -1
- package/build/lib/commands/animation.js +1 -4
- package/build/lib/commands/animation.js.map +1 -1
- package/build/lib/commands/bluetooth.d.ts +1 -1
- package/build/lib/commands/bluetooth.d.ts.map +1 -1
- package/build/lib/commands/bluetooth.js +6 -10
- package/build/lib/commands/bluetooth.js.map +1 -1
- package/build/lib/commands/clipboard.d.ts +1 -1
- package/build/lib/commands/clipboard.d.ts.map +1 -1
- package/build/lib/commands/clipboard.js +6 -9
- package/build/lib/commands/clipboard.js.map +1 -1
- package/build/lib/commands/geolocation.d.ts +2 -2
- package/build/lib/commands/geolocation.d.ts.map +1 -1
- package/build/lib/commands/geolocation.js +14 -19
- package/build/lib/commands/geolocation.js.map +1 -1
- package/build/lib/commands/locale.d.ts +2 -2
- package/build/lib/commands/locale.d.ts.map +1 -1
- package/build/lib/commands/locale.js +8 -12
- package/build/lib/commands/locale.js.map +1 -1
- package/build/lib/commands/media-projection.d.ts +2 -2
- package/build/lib/commands/media-projection.d.ts.map +1 -1
- package/build/lib/commands/media-projection.js +19 -28
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/media.d.ts +1 -1
- package/build/lib/commands/media.d.ts.map +1 -1
- package/build/lib/commands/media.js +5 -8
- package/build/lib/commands/media.js.map +1 -1
- package/build/lib/commands/network.d.ts +1 -1
- package/build/lib/commands/network.d.ts.map +1 -1
- package/build/lib/commands/network.js +5 -9
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/notifications.d.ts +1 -1
- package/build/lib/commands/notifications.d.ts.map +1 -1
- package/build/lib/commands/notifications.js +7 -11
- package/build/lib/commands/notifications.js.map +1 -1
- package/build/lib/commands/sms.d.ts +2 -2
- package/build/lib/commands/sms.d.ts.map +1 -1
- package/build/lib/commands/sms.js +5 -8
- package/build/lib/commands/sms.js.map +1 -1
- package/build/lib/commands/types.js +1 -2
- package/build/lib/commands/typing.d.ts +1 -1
- package/build/lib/commands/typing.d.ts.map +1 -1
- package/build/lib/commands/typing.js +9 -13
- package/build/lib/commands/typing.js.map +1 -1
- package/build/lib/commands/utf7.js +4 -10
- package/build/lib/commands/utf7.js.map +1 -1
- package/build/lib/constants.js +33 -36
- package/build/lib/constants.js.map +1 -1
- package/build/lib/index.d.ts +2 -2
- package/build/lib/index.d.ts.map +1 -1
- package/build/lib/index.js +4 -22
- package/build/lib/index.js.map +1 -1
- package/build/lib/logger.d.ts +1 -1
- package/build/lib/logger.d.ts.map +1 -1
- package/build/lib/logger.js +3 -9
- package/build/lib/logger.js.map +1 -1
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +11 -16
- package/build/lib/utils.js.map +1 -1
- package/lib/client.ts +13 -13
- package/lib/commands/animation.ts +1 -1
- package/lib/commands/bluetooth.ts +2 -2
- package/lib/commands/clipboard.ts +3 -3
- package/lib/commands/geolocation.ts +4 -4
- package/lib/commands/locale.ts +4 -4
- package/lib/commands/media-projection.ts +3 -3
- package/lib/commands/media.ts +3 -3
- package/lib/commands/network.ts +2 -2
- package/lib/commands/notifications.ts +6 -3
- package/lib/commands/sms.ts +4 -4
- package/lib/commands/typing.ts +4 -4
- package/lib/index.ts +3 -3
- package/lib/logger.ts +1 -1
- package/lib/utils.ts +2 -1
- package/package.json +12 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## [8.0.0](https://github.com/appium/io.appium.settings/compare/v7.1.11...v8.0.0) (2026-07-23)
|
|
2
|
+
|
|
3
|
+
### ⚠ BREAKING CHANGES
|
|
4
|
+
|
|
5
|
+
* Consumers using require('io.appium.settings') must switch to import/dynamic import() — the package no longer ships a CommonJS entry point.
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Migrate the package to ESM ([#307](https://github.com/appium/io.appium.settings/issues/307)) ([208dddf](https://github.com/appium/io.appium.settings/commit/208dddf1f93a76de5a420cde49cdd51719598b15))
|
|
10
|
+
|
|
11
|
+
## [7.1.11](https://github.com/appium/io.appium.settings/compare/v7.1.10...v7.1.11) (2026-07-16)
|
|
12
|
+
|
|
13
|
+
### Miscellaneous Chores
|
|
14
|
+
|
|
15
|
+
* **deps:** bump com.android.tools.build:gradle from 9.2.1 to 9.3.0 ([#304](https://github.com/appium/io.appium.settings/issues/304)) ([33aa63f](https://github.com/appium/io.appium.settings/commit/33aa63f58203dca51a232ae9150ea09e5760ad42))
|
|
16
|
+
|
|
1
17
|
## [7.1.10](https://github.com/appium/io.appium.settings/compare/v7.1.9...v7.1.10) (2026-07-05)
|
|
2
18
|
|
|
3
19
|
### Miscellaneous Chores
|
|
Binary file
|
package/build/lib/client.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { setAnimationState } from './commands/animation';
|
|
2
|
-
import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth';
|
|
3
|
-
import { getClipboard } from './commands/clipboard';
|
|
4
|
-
import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation';
|
|
5
|
-
import { setDeviceLocale, listSupportedLocales } from './commands/locale';
|
|
6
|
-
import { scanMedia } from './commands/media';
|
|
7
|
-
import { setDataState, setWifiState } from './commands/network';
|
|
8
|
-
import { getNotifications, adjustNotificationsPermissions } from './commands/notifications';
|
|
9
|
-
import { getSmsList } from './commands/sms';
|
|
10
|
-
import { performEditorAction, typeUnicode } from './commands/typing';
|
|
11
|
-
import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions } from './commands/media-projection';
|
|
1
|
+
import { setAnimationState } from './commands/animation.js';
|
|
2
|
+
import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth.js';
|
|
3
|
+
import { getClipboard } from './commands/clipboard.js';
|
|
4
|
+
import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation.js';
|
|
5
|
+
import { setDeviceLocale, listSupportedLocales } from './commands/locale.js';
|
|
6
|
+
import { scanMedia } from './commands/media.js';
|
|
7
|
+
import { setDataState, setWifiState } from './commands/network.js';
|
|
8
|
+
import { getNotifications, adjustNotificationsPermissions } from './commands/notifications.js';
|
|
9
|
+
import { getSmsList } from './commands/sms.js';
|
|
10
|
+
import { performEditorAction, typeUnicode } from './commands/typing.js';
|
|
11
|
+
import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions } from './commands/media-projection.js';
|
|
12
12
|
import type { ADB } from 'appium-adb';
|
|
13
13
|
import type { Logger } from '@appium/logger';
|
|
14
14
|
export interface SettingsAppOpts {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,iBAAiB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAE,8BAA8B,EAAC,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACL,2BAA2B,EAC3B,uCAAuC,EACxC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,GAAG,CAAC;CACV;AAED,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,iBAAiB,2BAAqB;IAEtC,iBAAiB,2BAAqB;IACtC,yBAAyB,mCAA6B;IAEtD,YAAY,sBAAgB;IAE5B,cAAc,wBAAkB;IAChC,cAAc,wBAAkB;IAChC,uBAAuB,iCAA2B;IAElD,oBAAoB,8BAAwB;IAC5C,eAAe,yBAAmB;IAElC,SAAS,mBAAa;IAEtB,YAAY,sBAAgB;IAC5B,YAAY,sBAAgB;IAE5B,gBAAgB,0BAAoB;IACpC,8BAA8B,wCAAkC;IAChE,UAAU,oBAAc;IAExB,mBAAmB,6BAAuB;IAC1C,WAAW,qBAAe;IAE1B,2BAA2B,qCAA+B;IAC1D,uCAAuC,iDAA2C;gBAEtE,IAAI,EAAE,eAAe;IAKjC;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,WAAW,CAAC;IA6ChF;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/C;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB/F;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG;CA0BxD"}
|
package/build/lib/client.js
CHANGED
|
@@ -1,45 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const typing_1 = require("./commands/typing");
|
|
17
|
-
const media_projection_1 = require("./commands/media-projection");
|
|
18
|
-
class SettingsApp {
|
|
1
|
+
import { log, LOG_PREFIX } from './logger.js';
|
|
2
|
+
import { waitForCondition } from 'asyncbox';
|
|
3
|
+
import { SETTINGS_HELPER_ID, SETTINGS_HELPER_MAIN_ACTIVITY } from './constants.js';
|
|
4
|
+
import { setAnimationState } from './commands/animation.js';
|
|
5
|
+
import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth.js';
|
|
6
|
+
import { getClipboard } from './commands/clipboard.js';
|
|
7
|
+
import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation.js';
|
|
8
|
+
import { setDeviceLocale, listSupportedLocales } from './commands/locale.js';
|
|
9
|
+
import { scanMedia } from './commands/media.js';
|
|
10
|
+
import { setDataState, setWifiState } from './commands/network.js';
|
|
11
|
+
import { getNotifications, adjustNotificationsPermissions } from './commands/notifications.js';
|
|
12
|
+
import { getSmsList } from './commands/sms.js';
|
|
13
|
+
import { performEditorAction, typeUnicode } from './commands/typing.js';
|
|
14
|
+
import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions, } from './commands/media-projection.js';
|
|
15
|
+
export class SettingsApp {
|
|
19
16
|
adb;
|
|
20
17
|
log;
|
|
21
|
-
setAnimationState =
|
|
22
|
-
setBluetoothState =
|
|
23
|
-
unpairAllBluetoothDevices =
|
|
24
|
-
getClipboard =
|
|
25
|
-
setGeoLocation =
|
|
26
|
-
getGeoLocation =
|
|
27
|
-
refreshGeoLocationCache =
|
|
28
|
-
listSupportedLocales =
|
|
29
|
-
setDeviceLocale =
|
|
30
|
-
scanMedia =
|
|
31
|
-
setDataState =
|
|
32
|
-
setWifiState =
|
|
33
|
-
getNotifications =
|
|
34
|
-
adjustNotificationsPermissions =
|
|
35
|
-
getSmsList =
|
|
36
|
-
performEditorAction =
|
|
37
|
-
typeUnicode =
|
|
38
|
-
makeMediaProjectionRecorder =
|
|
39
|
-
adjustMediaProjectionServicePermissions =
|
|
18
|
+
setAnimationState = setAnimationState;
|
|
19
|
+
setBluetoothState = setBluetoothState;
|
|
20
|
+
unpairAllBluetoothDevices = unpairAllBluetoothDevices;
|
|
21
|
+
getClipboard = getClipboard;
|
|
22
|
+
setGeoLocation = setGeoLocation;
|
|
23
|
+
getGeoLocation = getGeoLocation;
|
|
24
|
+
refreshGeoLocationCache = refreshGeoLocationCache;
|
|
25
|
+
listSupportedLocales = listSupportedLocales;
|
|
26
|
+
setDeviceLocale = setDeviceLocale;
|
|
27
|
+
scanMedia = scanMedia;
|
|
28
|
+
setDataState = setDataState;
|
|
29
|
+
setWifiState = setWifiState;
|
|
30
|
+
getNotifications = getNotifications;
|
|
31
|
+
adjustNotificationsPermissions = adjustNotificationsPermissions;
|
|
32
|
+
getSmsList = getSmsList;
|
|
33
|
+
performEditorAction = performEditorAction;
|
|
34
|
+
typeUnicode = typeUnicode;
|
|
35
|
+
makeMediaProjectionRecorder = makeMediaProjectionRecorder;
|
|
36
|
+
adjustMediaProjectionServicePermissions = adjustMediaProjectionServicePermissions;
|
|
40
37
|
constructor(opts) {
|
|
41
38
|
this.adb = opts.adb;
|
|
42
|
-
this.log =
|
|
39
|
+
this.log = log;
|
|
43
40
|
}
|
|
44
41
|
/**
|
|
45
42
|
* Ensures that Appium Settings helper application is running
|
|
@@ -52,12 +49,12 @@ class SettingsApp {
|
|
|
52
49
|
async requireRunning(opts = {}) {
|
|
53
50
|
const { timeout = 5000, shouldRestoreCurrentApp = false, forceRestart = false } = opts;
|
|
54
51
|
if (forceRestart) {
|
|
55
|
-
await this.adb.forceStop(
|
|
52
|
+
await this.adb.forceStop(SETTINGS_HELPER_ID);
|
|
56
53
|
}
|
|
57
54
|
else if (await this.isRunningInForeground()) {
|
|
58
55
|
return this;
|
|
59
56
|
}
|
|
60
|
-
this.log.debug(
|
|
57
|
+
this.log.debug(LOG_PREFIX, 'Starting Appium Settings app');
|
|
61
58
|
let appPackage;
|
|
62
59
|
if (shouldRestoreCurrentApp) {
|
|
63
60
|
try {
|
|
@@ -65,19 +62,19 @@ class SettingsApp {
|
|
|
65
62
|
appPackage = result.appPackage ?? undefined;
|
|
66
63
|
}
|
|
67
64
|
catch (e) {
|
|
68
|
-
this.log.warn(
|
|
65
|
+
this.log.warn(LOG_PREFIX, `The current application can not be restored: ${e.message}`);
|
|
69
66
|
}
|
|
70
67
|
}
|
|
71
68
|
await this.adb.startApp({
|
|
72
|
-
pkg:
|
|
73
|
-
activity:
|
|
69
|
+
pkg: SETTINGS_HELPER_ID,
|
|
70
|
+
activity: SETTINGS_HELPER_MAIN_ACTIVITY,
|
|
74
71
|
action: 'android.intent.action.MAIN',
|
|
75
72
|
category: 'android.intent.category.LAUNCHER',
|
|
76
73
|
stopApp: false,
|
|
77
74
|
waitForLaunch: false,
|
|
78
75
|
});
|
|
79
76
|
try {
|
|
80
|
-
await
|
|
77
|
+
await waitForCondition(async () => await this.isRunningInForeground(), {
|
|
81
78
|
waitMs: timeout,
|
|
82
79
|
intervalMs: 300,
|
|
83
80
|
});
|
|
@@ -86,7 +83,7 @@ class SettingsApp {
|
|
|
86
83
|
await this.adb.activateApp(appPackage);
|
|
87
84
|
}
|
|
88
85
|
catch (e) {
|
|
89
|
-
this.log.warn(
|
|
86
|
+
this.log.warn(LOG_PREFIX, `The current application can not be restored: ${e.message}`);
|
|
90
87
|
}
|
|
91
88
|
}
|
|
92
89
|
return this;
|
|
@@ -104,7 +101,7 @@ class SettingsApp {
|
|
|
104
101
|
async isRunningInForeground() {
|
|
105
102
|
// 'dumpsys activity services <package>' had slightly better performance
|
|
106
103
|
// than 'dumpsys activity services' and parsing the foreground apps.
|
|
107
|
-
const output = await this.adb.shell(['dumpsys', 'activity', 'services',
|
|
104
|
+
const output = await this.adb.shell(['dumpsys', 'activity', 'services', SETTINGS_HELPER_ID]);
|
|
108
105
|
return output.includes('isForeground=true');
|
|
109
106
|
}
|
|
110
107
|
/**
|
|
@@ -122,7 +119,7 @@ class SettingsApp {
|
|
|
122
119
|
}
|
|
123
120
|
const output = await this.adb.shell(['am', 'broadcast', ...args]);
|
|
124
121
|
if (!output.includes('result=-1')) {
|
|
125
|
-
this.log.debug(
|
|
122
|
+
this.log.debug(LOG_PREFIX, output);
|
|
126
123
|
const error = new Error(`Cannot execute the '${action}' action. Check the logcat output for more details.`);
|
|
127
124
|
error.output = output;
|
|
128
125
|
throw error;
|
|
@@ -140,12 +137,12 @@ class SettingsApp {
|
|
|
140
137
|
*/
|
|
141
138
|
_parseJsonData(output, entityName) {
|
|
142
139
|
if (!/\bresult=-1\b/.test(output) || !/\bdata="/.test(output)) {
|
|
143
|
-
this.log.debug(
|
|
140
|
+
this.log.debug(LOG_PREFIX, output);
|
|
144
141
|
throw new Error(`Cannot retrieve ${entityName} from the device. ` + 'Check the server log for more details');
|
|
145
142
|
}
|
|
146
143
|
const match = /\bdata="(.+)",?/.exec(output);
|
|
147
144
|
if (!match) {
|
|
148
|
-
this.log.debug(
|
|
145
|
+
this.log.debug(LOG_PREFIX, output);
|
|
149
146
|
throw new Error(`Cannot parse ${entityName} from the command output. ` +
|
|
150
147
|
'Check the server log for more details');
|
|
151
148
|
}
|
|
@@ -154,11 +151,10 @@ class SettingsApp {
|
|
|
154
151
|
return JSON.parse(jsonStr);
|
|
155
152
|
}
|
|
156
153
|
catch {
|
|
157
|
-
this.log.debug(
|
|
154
|
+
this.log.debug(LOG_PREFIX, jsonStr);
|
|
158
155
|
throw new Error(`Cannot parse ${entityName} from the resulting data string. ` +
|
|
159
156
|
'Check the server log for more details');
|
|
160
157
|
}
|
|
161
158
|
}
|
|
162
159
|
}
|
|
163
|
-
exports.SettingsApp = SettingsApp;
|
|
164
160
|
//# sourceMappingURL=client.js.map
|
package/build/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SettingsApp } from '../client';
|
|
1
|
+
import type { SettingsApp } from '../client.js';
|
|
2
2
|
/**
|
|
3
3
|
* Change the state of animation on the device under test via adb settings command for API level 26+.
|
|
4
4
|
* Animation on the device is controlled by the following global properties:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../lib/commands/animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../lib/commands/animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setAnimationState = setAnimationState;
|
|
4
1
|
/**
|
|
5
2
|
* Change the state of animation on the device under test via adb settings command for API level 26+.
|
|
6
3
|
* Animation on the device is controlled by the following global properties:
|
|
@@ -14,7 +11,7 @@ exports.setAnimationState = setAnimationState;
|
|
|
14
11
|
*
|
|
15
12
|
* @param on - True to enable and false to disable it
|
|
16
13
|
*/
|
|
17
|
-
async function setAnimationState(on) {
|
|
14
|
+
export async function setAnimationState(on) {
|
|
18
15
|
await this.adb.setAnimationScale(Number(on));
|
|
19
16
|
}
|
|
20
17
|
//# sourceMappingURL=animation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../lib/commands/animation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../lib/commands/animation.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAoB,EAAW;IACpE,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bluetooth.d.ts","sourceRoot":"","sources":["../../../lib/commands/bluetooth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"bluetooth.d.ts","sourceRoot":"","sources":["../../../lib/commands/bluetooth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBrF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhF"}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setBluetoothState = setBluetoothState;
|
|
4
|
-
exports.unpairAllBluetoothDevices = unpairAllBluetoothDevices;
|
|
5
|
-
const constants_1 = require("../constants");
|
|
1
|
+
import { BLUETOOTH_SETTING_ACTION, BLUETOOTH_SETTING_RECEIVER, BLUETOOTH_UNPAIR_ACTION, BLUETOOTH_UNPAIR_RECEIVER, } from '../constants.js';
|
|
6
2
|
/**
|
|
7
3
|
* Change the state of bluetooth on the device under test.
|
|
8
4
|
*
|
|
9
5
|
* @param on - True to enable and false to disable it
|
|
10
6
|
*/
|
|
11
|
-
async function setBluetoothState(on) {
|
|
7
|
+
export async function setBluetoothState(on) {
|
|
12
8
|
if ((await this.adb.getApiLevel()) < 30) {
|
|
13
9
|
await this.checkBroadcast([
|
|
14
10
|
'-a',
|
|
15
|
-
|
|
11
|
+
BLUETOOTH_SETTING_ACTION,
|
|
16
12
|
'-n',
|
|
17
|
-
|
|
13
|
+
BLUETOOTH_SETTING_RECEIVER,
|
|
18
14
|
'--es',
|
|
19
15
|
'setstatus',
|
|
20
16
|
on ? 'enable' : 'disable',
|
|
@@ -27,7 +23,7 @@ async function setBluetoothState(on) {
|
|
|
27
23
|
/**
|
|
28
24
|
* Unpairs all previously paired bluetooth devices if any exist
|
|
29
25
|
*/
|
|
30
|
-
async function unpairAllBluetoothDevices() {
|
|
31
|
-
await this.checkBroadcast(['-a',
|
|
26
|
+
export async function unpairAllBluetoothDevices() {
|
|
27
|
+
await this.checkBroadcast(['-a', BLUETOOTH_UNPAIR_ACTION, '-n', BLUETOOTH_UNPAIR_RECEIVER], 'unpair all bluetooth devices');
|
|
32
28
|
}
|
|
33
29
|
//# sourceMappingURL=bluetooth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bluetooth.js","sourceRoot":"","sources":["../../../lib/commands/bluetooth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bluetooth.js","sourceRoot":"","sources":["../../../lib/commands/bluetooth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAoB,EAAW;IACpE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,cAAc,CACvB;YACE,IAAI;YACJ,wBAAwB;YACxB,IAAI;YACJ,0BAA0B;YAC1B,MAAM;YACN,WAAW;YACX,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1B,EACD,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAY,CACzC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,yBAAyB,CAAC,EAChE,8BAA8B,CAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BrE"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getClipboard = getClipboard;
|
|
4
|
-
const logger_1 = require("../logger");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
1
|
+
import { LOG_PREFIX } from '../logger.js';
|
|
2
|
+
import { CLIPBOARD_RECEIVER, CLIPBOARD_RETRIEVAL_ACTION, APPIUM_IME } from '../constants.js';
|
|
6
3
|
/**
|
|
7
4
|
* Retrieves the text content of the device's clipboard.
|
|
8
5
|
* The method works for Android below and above 29.
|
|
@@ -14,15 +11,15 @@ const constants_1 = require("../constants");
|
|
|
14
11
|
* @returns The actual content of the main clipboard as base64-encoded string or an empty string if the clipboard is empty
|
|
15
12
|
* @throws {Error} If there was a problem while getting the clipboard content
|
|
16
13
|
*/
|
|
17
|
-
async function getClipboard() {
|
|
18
|
-
this.log.debug(
|
|
14
|
+
export async function getClipboard() {
|
|
15
|
+
this.log.debug(LOG_PREFIX, 'Getting the clipboard content');
|
|
19
16
|
await this.requireRunning({ shouldRestoreCurrentApp: true });
|
|
20
|
-
const retrieveClipboard = async () => await this.checkBroadcast(['-n',
|
|
17
|
+
const retrieveClipboard = async () => await this.checkBroadcast(['-n', CLIPBOARD_RECEIVER, '-a', CLIPBOARD_RETRIEVAL_ACTION], 'retrieve clipboard', false);
|
|
21
18
|
let output;
|
|
22
19
|
try {
|
|
23
20
|
output =
|
|
24
21
|
(await this.adb.getApiLevel()) >= 29
|
|
25
|
-
? await this.adb.runInImeContext(
|
|
22
|
+
? await this.adb.runInImeContext(APPIUM_IME, retrieveClipboard)
|
|
26
23
|
: await retrieveClipboard();
|
|
27
24
|
}
|
|
28
25
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,kBAAkB,EAAE,0BAA0B,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAG3F;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,KAAK,IAAqB,EAAE,CACpD,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,CAAC,EAC5D,oBAAoB,EACpB,KAAK,CACN,CAAC;IACJ,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM;YACJ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;gBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAC/D,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,2DAA2D;YAC3D,mBAAmB,GAAG,CAAC,OAAO,EAAE,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SettingsApp } from '../client';
|
|
2
|
-
import type { Location } from './types';
|
|
1
|
+
import type { SettingsApp } from '../client.js';
|
|
2
|
+
import type { Location } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Emulate geolocation coordinates on the device under test.
|
|
5
5
|
* The `altitude` value is ignored while mocking the position.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geolocation.d.ts","sourceRoot":"","sources":["../../../lib/commands/geolocation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"geolocation.d.ts","sourceRoot":"","sources":["../../../lib/commands/geolocation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAYzC;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,QAAQ,EAClB,UAAU,UAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CA0Ff;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBzE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEjG"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.getGeoLocation = getGeoLocation;
|
|
5
|
-
exports.refreshGeoLocationCache = refreshGeoLocationCache;
|
|
6
|
-
const constants_1 = require("../constants");
|
|
7
|
-
const teen_process_1 = require("teen_process");
|
|
8
|
-
const logger_1 = require("../logger");
|
|
1
|
+
import { LOCATION_SERVICE, LOCATION_RECEIVER, LOCATION_RETRIEVAL_ACTION } from '../constants.js';
|
|
2
|
+
import { SubProcess } from 'teen_process';
|
|
3
|
+
import { LOG_PREFIX } from '../logger.js';
|
|
9
4
|
const DEFAULT_SATELLITES_COUNT = 12;
|
|
10
5
|
const DEFAULT_ALTITUDE = 0.0;
|
|
11
6
|
const LOCATION_TRACKER_TAG = 'LocationTracker';
|
|
@@ -22,7 +17,7 @@ const GPS_COORDINATES_PATTERN = /data="(-?[\d.]+)\s+(-?[\d.]+)\s+(-?[\d.]+)"/;
|
|
|
22
17
|
* @param isEmulator - Set it to true if the device under test is an emulator rather than a real device
|
|
23
18
|
* @throws {Error} If required location values are missing or invalid
|
|
24
19
|
*/
|
|
25
|
-
async function setGeoLocation(location, isEmulator = false) {
|
|
20
|
+
export async function setGeoLocation(location, isEmulator = false) {
|
|
26
21
|
const formatLocationValue = (valueName, isRequired = true) => {
|
|
27
22
|
const value = location[valueName];
|
|
28
23
|
if (value === null || value === undefined) {
|
|
@@ -108,7 +103,7 @@ async function setGeoLocation(location, isEmulator = false) {
|
|
|
108
103
|
}
|
|
109
104
|
args.push('-e', 'accuracy', accuracy);
|
|
110
105
|
}
|
|
111
|
-
args.push(
|
|
106
|
+
args.push(LOCATION_SERVICE);
|
|
112
107
|
await this.adb.shell(args);
|
|
113
108
|
}
|
|
114
109
|
}
|
|
@@ -118,8 +113,8 @@ async function setGeoLocation(location, isEmulator = false) {
|
|
|
118
113
|
* @returns The current location
|
|
119
114
|
* @throws {Error} If the current location cannot be retrieved
|
|
120
115
|
*/
|
|
121
|
-
async function getGeoLocation() {
|
|
122
|
-
const output = await this.checkBroadcast(['-n',
|
|
116
|
+
export async function getGeoLocation() {
|
|
117
|
+
const output = await this.checkBroadcast(['-n', LOCATION_RECEIVER, '-a', LOCATION_RETRIEVAL_ACTION], 'retrieve geolocation', true);
|
|
123
118
|
const match = GPS_COORDINATES_PATTERN.exec(output);
|
|
124
119
|
if (!match) {
|
|
125
120
|
throw new Error(`Cannot parse the actual location values from the command output: ${output}`);
|
|
@@ -129,7 +124,7 @@ async function getGeoLocation() {
|
|
|
129
124
|
longitude: match[2],
|
|
130
125
|
altitude: match[3],
|
|
131
126
|
};
|
|
132
|
-
this.log.debug(
|
|
127
|
+
this.log.debug(LOG_PREFIX, `Got geo coordinates: ${JSON.stringify(location)}`);
|
|
133
128
|
return location;
|
|
134
129
|
}
|
|
135
130
|
/**
|
|
@@ -143,13 +138,13 @@ async function getGeoLocation() {
|
|
|
143
138
|
* Providing zero or a negative value to it skips waiting completely.
|
|
144
139
|
* @throws {Error} If the GPS cache cannot be refreshed.
|
|
145
140
|
*/
|
|
146
|
-
async function refreshGeoLocationCache(timeoutMs = 20000) {
|
|
141
|
+
export async function refreshGeoLocationCache(timeoutMs = 20000) {
|
|
147
142
|
await this.requireRunning({ shouldRestoreCurrentApp: true });
|
|
148
143
|
let logcatMonitor;
|
|
149
144
|
let monitoringPromise;
|
|
150
145
|
if (timeoutMs > 0) {
|
|
151
146
|
const cmd = [...this.adb.executable.defaultArgs, 'logcat', '-s', LOCATION_TRACKER_TAG];
|
|
152
|
-
logcatMonitor = new
|
|
147
|
+
logcatMonitor = new SubProcess(this.adb.executable.path, cmd);
|
|
153
148
|
const timeoutErrorMsg = `The GPS cache has not been refreshed within ${timeoutMs}ms timeout. ` +
|
|
154
149
|
`Please make sure the device under test has Appium Settings app installed and running. ` +
|
|
155
150
|
`Also, it is required that the device has Google Play Services installed or is running ` +
|
|
@@ -182,13 +177,13 @@ async function refreshGeoLocationCache(timeoutMs = 20000) {
|
|
|
182
177
|
});
|
|
183
178
|
await logcatMonitor.start(0);
|
|
184
179
|
}
|
|
185
|
-
await this.checkBroadcast(['-n',
|
|
180
|
+
await this.checkBroadcast(['-n', LOCATION_RECEIVER, '-a', LOCATION_RETRIEVAL_ACTION, '--ez', 'forceUpdate', 'true'], 'refresh GPS cache', false);
|
|
186
181
|
if (logcatMonitor && monitoringPromise) {
|
|
187
182
|
const startMs = performance.now();
|
|
188
|
-
this.log.debug(
|
|
183
|
+
this.log.debug(LOG_PREFIX, `Waiting up to ${timeoutMs}ms for the GPS cache to be refreshed`);
|
|
189
184
|
try {
|
|
190
185
|
await monitoringPromise;
|
|
191
|
-
this.log.info(
|
|
186
|
+
this.log.info(LOG_PREFIX, `The GPS cache has been successfully refreshed after ` +
|
|
192
187
|
`${(performance.now() - startMs).toFixed(0)}ms`);
|
|
193
188
|
}
|
|
194
189
|
finally {
|
|
@@ -198,7 +193,7 @@ async function refreshGeoLocationCache(timeoutMs = 20000) {
|
|
|
198
193
|
}
|
|
199
194
|
}
|
|
200
195
|
else {
|
|
201
|
-
this.log.info(
|
|
196
|
+
this.log.info(LOG_PREFIX, 'The request to refresh the GPS cache has been sent. Skipping waiting for its result.');
|
|
202
197
|
}
|
|
203
198
|
}
|
|
204
199
|
//# sourceMappingURL=geolocation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../../lib/commands/geolocation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../../lib/commands/geolocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SettingsApp } from '../client';
|
|
2
|
-
import type { SupportedLocale } from './types';
|
|
1
|
+
import type { SettingsApp } from '../client.js';
|
|
2
|
+
import type { SupportedLocale } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Set the locale name of the device under test.
|
|
5
5
|
* Don't need to reboot the device after changing the locale.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../lib/commands/locale.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../lib/commands/locale.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAUxF"}
|