appium-android-driver 5.14.7 → 6.0.1

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.
Files changed (210) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/lib/commands/actions.d.ts +6 -224
  3. package/build/lib/commands/actions.d.ts.map +1 -1
  4. package/build/lib/commands/actions.js +306 -405
  5. package/build/lib/commands/actions.js.map +1 -1
  6. package/build/lib/commands/alert.d.ts +7 -9
  7. package/build/lib/commands/alert.d.ts.map +1 -1
  8. package/build/lib/commands/alert.js +24 -18
  9. package/build/lib/commands/alert.js.map +1 -1
  10. package/build/lib/commands/app-management.d.ts +7 -313
  11. package/build/lib/commands/app-management.d.ts.map +1 -1
  12. package/build/lib/commands/app-management.js +135 -293
  13. package/build/lib/commands/app-management.js.map +1 -1
  14. package/build/lib/commands/context.d.ts +8 -92
  15. package/build/lib/commands/context.d.ts.map +1 -1
  16. package/build/lib/commands/context.js +381 -439
  17. package/build/lib/commands/context.js.map +1 -1
  18. package/build/lib/commands/element.d.ts +8 -35
  19. package/build/lib/commands/element.d.ts.map +1 -1
  20. package/build/lib/commands/element.js +153 -136
  21. package/build/lib/commands/element.js.map +1 -1
  22. package/build/lib/commands/emu-console.d.ts +6 -48
  23. package/build/lib/commands/emu-console.d.ts.map +1 -1
  24. package/build/lib/commands/emu-console.js +19 -34
  25. package/build/lib/commands/emu-console.js.map +1 -1
  26. package/build/lib/commands/execute.d.ts +6 -5
  27. package/build/lib/commands/execute.d.ts.map +1 -1
  28. package/build/lib/commands/execute.js +77 -66
  29. package/build/lib/commands/execute.js.map +1 -1
  30. package/build/lib/commands/file-actions.d.ts +7 -128
  31. package/build/lib/commands/file-actions.d.ts.map +1 -1
  32. package/build/lib/commands/file-actions.js +183 -219
  33. package/build/lib/commands/file-actions.js.map +1 -1
  34. package/build/lib/commands/find.d.ts +8 -12
  35. package/build/lib/commands/find.d.ts.map +1 -1
  36. package/build/lib/commands/find.js +19 -23
  37. package/build/lib/commands/find.js.map +1 -1
  38. package/build/lib/commands/general.d.ts +9 -132
  39. package/build/lib/commands/general.d.ts.map +1 -1
  40. package/build/lib/commands/general.js +281 -312
  41. package/build/lib/commands/general.js.map +1 -1
  42. package/build/lib/commands/ime.d.ts +7 -10
  43. package/build/lib/commands/ime.d.ts.map +1 -1
  44. package/build/lib/commands/ime.js +47 -35
  45. package/build/lib/commands/ime.js.map +1 -1
  46. package/build/lib/commands/index.d.ts +27 -2
  47. package/build/lib/commands/index.d.ts.map +1 -1
  48. package/build/lib/commands/index.js +41 -19
  49. package/build/lib/commands/index.js.map +1 -1
  50. package/build/lib/commands/intent.d.ts +7 -417
  51. package/build/lib/commands/intent.d.ts.map +1 -1
  52. package/build/lib/commands/intent.js +104 -216
  53. package/build/lib/commands/intent.js.map +1 -1
  54. package/build/lib/commands/keyboard.d.ts +6 -5
  55. package/build/lib/commands/keyboard.d.ts.map +1 -1
  56. package/build/lib/commands/keyboard.js +16 -8
  57. package/build/lib/commands/keyboard.js.map +1 -1
  58. package/build/lib/commands/log.d.ts +7 -44
  59. package/build/lib/commands/log.d.ts.map +1 -1
  60. package/build/lib/commands/log.js +146 -108
  61. package/build/lib/commands/log.js.map +1 -1
  62. package/build/lib/commands/media-projection.d.ts +7 -143
  63. package/build/lib/commands/media-projection.d.ts.map +1 -1
  64. package/build/lib/commands/media-projection.js +113 -140
  65. package/build/lib/commands/media-projection.js.map +1 -1
  66. package/build/lib/commands/mixins.d.ts +740 -0
  67. package/build/lib/commands/mixins.d.ts.map +1 -0
  68. package/build/lib/commands/mixins.js +19 -0
  69. package/build/lib/commands/mixins.js.map +1 -0
  70. package/build/lib/commands/network.d.ts +7 -138
  71. package/build/lib/commands/network.d.ts.map +1 -1
  72. package/build/lib/commands/network.js +212 -254
  73. package/build/lib/commands/network.js.map +1 -1
  74. package/build/lib/commands/performance.d.ts +24 -70
  75. package/build/lib/commands/performance.d.ts.map +1 -1
  76. package/build/lib/commands/performance.js +144 -100
  77. package/build/lib/commands/performance.js.map +1 -1
  78. package/build/lib/commands/permissions.d.ts +8 -92
  79. package/build/lib/commands/permissions.d.ts.map +1 -1
  80. package/build/lib/commands/permissions.js +75 -87
  81. package/build/lib/commands/permissions.js.map +1 -1
  82. package/build/lib/commands/recordscreen.d.ts +7 -193
  83. package/build/lib/commands/recordscreen.d.ts.map +1 -1
  84. package/build/lib/commands/recordscreen.js +151 -182
  85. package/build/lib/commands/recordscreen.js.map +1 -1
  86. package/build/lib/commands/shell.d.ts +7 -7
  87. package/build/lib/commands/shell.d.ts.map +1 -1
  88. package/build/lib/commands/shell.js +40 -33
  89. package/build/lib/commands/shell.js.map +1 -1
  90. package/build/lib/commands/streamscreen.d.ts +9 -103
  91. package/build/lib/commands/streamscreen.d.ts.map +1 -1
  92. package/build/lib/commands/streamscreen.js +261 -218
  93. package/build/lib/commands/streamscreen.js.map +1 -1
  94. package/build/lib/commands/system-bars.d.ts +22 -90
  95. package/build/lib/commands/system-bars.d.ts.map +1 -1
  96. package/build/lib/commands/system-bars.js +76 -74
  97. package/build/lib/commands/system-bars.js.map +1 -1
  98. package/build/lib/commands/touch.d.ts +10 -29
  99. package/build/lib/commands/touch.d.ts.map +1 -1
  100. package/build/lib/commands/touch.js +301 -285
  101. package/build/lib/commands/touch.js.map +1 -1
  102. package/build/lib/commands/types.d.ts +978 -0
  103. package/build/lib/commands/types.d.ts.map +1 -0
  104. package/build/lib/commands/types.js +3 -0
  105. package/build/lib/commands/types.js.map +1 -0
  106. package/build/lib/constraints.d.ts +291 -0
  107. package/build/lib/constraints.d.ts.map +1 -0
  108. package/build/lib/{desired-caps.js → constraints.js} +103 -102
  109. package/build/lib/constraints.js.map +1 -0
  110. package/build/lib/driver.d.ts +68 -37
  111. package/build/lib/driver.d.ts.map +1 -1
  112. package/build/lib/driver.js +123 -80
  113. package/build/lib/driver.js.map +1 -1
  114. package/build/lib/helpers/android.d.ts +164 -0
  115. package/build/lib/helpers/android.d.ts.map +1 -0
  116. package/build/lib/helpers/android.js +819 -0
  117. package/build/lib/helpers/android.js.map +1 -0
  118. package/build/lib/helpers/index.d.ts +7 -0
  119. package/build/lib/helpers/index.d.ts.map +1 -0
  120. package/build/lib/helpers/index.js +29 -0
  121. package/build/lib/helpers/index.js.map +1 -0
  122. package/build/lib/helpers/types.d.ts +121 -0
  123. package/build/lib/helpers/types.d.ts.map +1 -0
  124. package/build/lib/helpers/types.js +3 -0
  125. package/build/lib/helpers/types.js.map +1 -0
  126. package/build/lib/helpers/unlock.d.ts +32 -0
  127. package/build/lib/helpers/unlock.d.ts.map +1 -0
  128. package/build/lib/helpers/unlock.js +273 -0
  129. package/build/lib/helpers/unlock.js.map +1 -0
  130. package/build/lib/helpers/webview.d.ts +74 -0
  131. package/build/lib/helpers/webview.d.ts.map +1 -0
  132. package/build/lib/helpers/webview.js +421 -0
  133. package/build/lib/helpers/webview.js.map +1 -0
  134. package/build/lib/index.d.ts +9 -0
  135. package/build/lib/index.d.ts.map +1 -0
  136. package/build/lib/index.js +37 -0
  137. package/build/lib/index.js.map +1 -0
  138. package/build/lib/method-map.d.ts +0 -8
  139. package/build/lib/method-map.d.ts.map +1 -1
  140. package/build/lib/method-map.js +63 -74
  141. package/build/lib/method-map.js.map +1 -1
  142. package/build/lib/stubs.d.ts +0 -1
  143. package/build/lib/stubs.d.ts.map +1 -1
  144. package/build/lib/stubs.js +1 -0
  145. package/build/lib/stubs.js.map +1 -1
  146. package/build/lib/utils.d.ts +1 -1
  147. package/build/lib/utils.d.ts.map +1 -1
  148. package/lib/commands/actions.js +351 -464
  149. package/lib/commands/alert.js +27 -17
  150. package/lib/commands/app-management.js +156 -314
  151. package/lib/commands/context.js +457 -441
  152. package/lib/commands/element.js +201 -157
  153. package/lib/commands/emu-console.js +25 -45
  154. package/lib/commands/execute.js +106 -90
  155. package/lib/commands/file-actions.js +222 -240
  156. package/lib/commands/find.ts +103 -0
  157. package/lib/commands/general.js +327 -339
  158. package/lib/commands/ime.js +50 -34
  159. package/lib/commands/{index.js → index.ts} +20 -24
  160. package/lib/commands/intent.js +108 -249
  161. package/lib/commands/keyboard.js +20 -8
  162. package/lib/commands/log.js +172 -116
  163. package/lib/commands/media-projection.js +134 -161
  164. package/lib/commands/mixins.ts +966 -0
  165. package/lib/commands/network.js +252 -281
  166. package/lib/commands/performance.js +203 -132
  167. package/lib/commands/permissions.js +108 -109
  168. package/lib/commands/recordscreen.js +212 -209
  169. package/lib/commands/shell.js +51 -40
  170. package/lib/commands/streamscreen.js +355 -289
  171. package/lib/commands/system-bars.js +92 -83
  172. package/lib/commands/touch.js +357 -294
  173. package/lib/commands/types.ts +1097 -0
  174. package/lib/{desired-caps.js → constraints.ts} +106 -103
  175. package/lib/{driver.js → driver.ts} +278 -132
  176. package/lib/helpers/android.ts +1143 -0
  177. package/lib/helpers/index.ts +6 -0
  178. package/lib/helpers/types.ts +134 -0
  179. package/lib/helpers/unlock.ts +329 -0
  180. package/lib/helpers/webview.ts +582 -0
  181. package/lib/index.ts +18 -0
  182. package/lib/method-map.js +87 -98
  183. package/lib/stubs.ts +0 -1
  184. package/package.json +26 -19
  185. package/build/index.js +0 -51
  186. package/build/lib/android-helpers.d.ts +0 -136
  187. package/build/lib/android-helpers.d.ts.map +0 -1
  188. package/build/lib/android-helpers.js +0 -855
  189. package/build/lib/android-helpers.js.map +0 -1
  190. package/build/lib/commands/coverage.d.ts +0 -5
  191. package/build/lib/commands/coverage.d.ts.map +0 -1
  192. package/build/lib/commands/coverage.js +0 -19
  193. package/build/lib/commands/coverage.js.map +0 -1
  194. package/build/lib/desired-caps.d.ts +0 -353
  195. package/build/lib/desired-caps.d.ts.map +0 -1
  196. package/build/lib/desired-caps.js.map +0 -1
  197. package/build/lib/unlock-helpers.d.ts +0 -38
  198. package/build/lib/unlock-helpers.d.ts.map +0 -1
  199. package/build/lib/unlock-helpers.js +0 -266
  200. package/build/lib/unlock-helpers.js.map +0 -1
  201. package/build/lib/webview-helpers.d.ts +0 -224
  202. package/build/lib/webview-helpers.d.ts.map +0 -1
  203. package/build/lib/webview-helpers.js +0 -528
  204. package/build/lib/webview-helpers.js.map +0 -1
  205. package/index.js +0 -24
  206. package/lib/android-helpers.js +0 -983
  207. package/lib/commands/coverage.js +0 -18
  208. package/lib/commands/find.js +0 -82
  209. package/lib/unlock-helpers.js +0 -278
  210. package/lib/webview-helpers.js +0 -602
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
+ // @ts-check
2
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
5
  };
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.helpers = exports.commands = void 0;
7
+ const mixins_1 = require("./mixins");
7
8
  const lodash_1 = __importDefault(require("lodash"));
8
9
  const driver_1 = require("appium/driver");
9
10
  const support_1 = require("appium/support");
10
11
  const bluebird_1 = __importDefault(require("bluebird"));
11
- let commands = {}, helpers = {}, extensions = {};
12
- exports.commands = commands;
13
- exports.helpers = helpers;
14
12
  const AIRPLANE_MODE_MASK = 0b001;
15
13
  const WIFI_MASK = 0b010;
16
14
  const DATA_MASK = 0b100;
@@ -23,271 +21,231 @@ const GEO_EPSILON = Number.MIN_VALUE;
23
21
  const WIFI_KEY_NAME = 'wifi';
24
22
  const DATA_KEY_NAME = 'data';
25
23
  const AIRPLANE_MODE_KEY_NAME = 'airplaneMode';
26
- const SUPPORTED_SERVICE_NAMES = [WIFI_KEY_NAME, DATA_KEY_NAME, AIRPLANE_MODE_KEY_NAME];
27
- commands.getNetworkConnection = async function getNetworkConnection() {
28
- this.log.info('Getting network connection');
29
- let airplaneModeOn = await this.adb.isAirplaneModeOn();
30
- let connection = airplaneModeOn ? AIRPLANE_MODE_MASK : 0;
31
- // no need to check anything else if we are in airplane mode
32
- if (!airplaneModeOn) {
33
- let wifiOn = await this.isWifiOn();
34
- connection |= (wifiOn ? WIFI_MASK : 0);
35
- let dataOn = await this.adb.isDataOn();
36
- connection |= (dataOn ? DATA_MASK : 0);
37
- }
38
- return connection;
39
- };
24
+ const SUPPORTED_SERVICE_NAMES = /** @type {const} */ ([
25
+ WIFI_KEY_NAME,
26
+ DATA_KEY_NAME,
27
+ AIRPLANE_MODE_KEY_NAME,
28
+ ]);
40
29
  /**
41
- * decoupling to override the behaviour in other drivers like UiAutomator2.
30
+ * @type {import('./mixins').NetworkMixin & ThisType<import('../driver').AndroidDriver>}
31
+ * @satisfies {import('@appium/types').ExternalDriver}
42
32
  */
43
- commands.isWifiOn = async function isWifiOn() {
44
- return await this.adb.isWifiOn();
45
- };
46
- /**
47
- * @typedef {Object} SetConnectivityOptions
48
- * @property {boolean?} wifi Either to enable or disable Wi-Fi.
49
- * An unset value means to not change the state for the given service.
50
- * @property {boolean?} data Either to enable or disable mobile data connection.
51
- * An unset value means to not change the state for the given service.
52
- * @property {boolean?} airplaneMode Either to enable to disable the Airplane Mode
53
- * An unset value means to not change the state for the given service.
54
- */
55
- /**
56
- * Set the connectivity state for different services
57
- *
58
- * @param {SetConnectivityOptions} opts
59
- * @throws {Error} If none of known properties were provided or there was an error
60
- * while changing connectivity states
61
- */
62
- commands.mobileSetConnectivity = async function mobileSetConnectivity(opts = {}) {
63
- const { wifi, data, airplaneMode, } = opts;
64
- if (lodash_1.default.every([wifi, data, airplaneMode], lodash_1.default.isUndefined)) {
65
- throw new driver_1.errors.InvalidArgumentError(`Either one of ${JSON.stringify(SUPPORTED_SERVICE_NAMES)} options must be provided`);
66
- }
67
- const currentState = await this.mobileGetConnectivity({
68
- services: [
69
- ...(lodash_1.default.isUndefined(wifi) ? [] : [WIFI_KEY_NAME]),
70
- ...(lodash_1.default.isUndefined(data) ? [] : [DATA_KEY_NAME]),
71
- ...(lodash_1.default.isUndefined(airplaneMode) ? [] : [AIRPLANE_MODE_KEY_NAME]),
72
- ]
73
- });
74
- const setters = [];
75
- if (!lodash_1.default.isUndefined(wifi) && currentState.wifi !== Boolean(wifi)) {
76
- setters.push(this.adb.setWifiState(wifi, this.isEmulator()));
77
- }
78
- if (!lodash_1.default.isUndefined(data) && currentState.data !== Boolean(data)) {
79
- setters.push(this.adb.setDataState(data, this.isEmulator()));
80
- }
81
- if (!lodash_1.default.isUndefined(airplaneMode) && currentState.airplaneMode !== Boolean(airplaneMode)) {
82
- setters.push(async () => {
83
- await this.adb.setAirplaneMode(airplaneMode);
84
- if (this.adb.getApiLevel() < 30) {
85
- await this.adb.broadcastAirplaneMode(airplaneMode);
33
+ const NetworkMixin = {
34
+ async getNetworkConnection() {
35
+ const adb = /** @type {ADB} */ (this.adb);
36
+ this.log.info('Getting network connection');
37
+ let airplaneModeOn = await adb.isAirplaneModeOn();
38
+ let connection = airplaneModeOn ? AIRPLANE_MODE_MASK : 0;
39
+ // no need to check anything else if we are in airplane mode
40
+ if (!airplaneModeOn) {
41
+ let wifiOn = await this.isWifiOn();
42
+ connection |= wifiOn ? WIFI_MASK : 0;
43
+ let dataOn = await adb.isDataOn();
44
+ connection |= dataOn ? DATA_MASK : 0;
45
+ }
46
+ return connection;
47
+ },
48
+ async isWifiOn() {
49
+ return await /** @type {ADB} */ (this.adb).isWifiOn();
50
+ },
51
+ async mobileSetConnectivity(opts = {}) {
52
+ const { wifi, data, airplaneMode } = opts;
53
+ const adb = /** @type {ADB} */ (this.adb);
54
+ if (lodash_1.default.every([wifi, data, airplaneMode], lodash_1.default.isUndefined)) {
55
+ throw new driver_1.errors.InvalidArgumentError(`Either one of ${JSON.stringify(SUPPORTED_SERVICE_NAMES)} options must be provided`);
56
+ }
57
+ const currentState = await this.mobileGetConnectivity({
58
+ services: /** @type {import('./types').ServiceType[]} */ ([
59
+ ...(lodash_1.default.isUndefined(wifi) ? [] : [WIFI_KEY_NAME]),
60
+ ...(lodash_1.default.isUndefined(data) ? [] : [DATA_KEY_NAME]),
61
+ ...(lodash_1.default.isUndefined(airplaneMode) ? [] : [AIRPLANE_MODE_KEY_NAME]),
62
+ ]),
63
+ });
64
+ /** @type {(Promise<any>|(() => Promise<any>))[]} */
65
+ const setters = [];
66
+ if (!lodash_1.default.isUndefined(wifi) && currentState.wifi !== Boolean(wifi)) {
67
+ setters.push(adb.setWifiState(wifi, this.isEmulator()));
68
+ }
69
+ if (!lodash_1.default.isUndefined(data) && currentState.data !== Boolean(data)) {
70
+ setters.push(adb.setDataState(data, this.isEmulator()));
71
+ }
72
+ if (!lodash_1.default.isUndefined(airplaneMode) && currentState.airplaneMode !== Boolean(airplaneMode)) {
73
+ setters.push(async () => {
74
+ await adb.setAirplaneMode(airplaneMode);
75
+ if ((await adb.getApiLevel()) < 30) {
76
+ await adb.broadcastAirplaneMode(airplaneMode);
77
+ }
78
+ });
79
+ }
80
+ if (!lodash_1.default.isEmpty(setters)) {
81
+ await bluebird_1.default.all(setters);
82
+ }
83
+ },
84
+ async mobileGetConnectivity(opts = {}) {
85
+ let { services = SUPPORTED_SERVICE_NAMES } = opts;
86
+ const svcs = lodash_1.default.castArray(services);
87
+ const unsupportedServices = lodash_1.default.difference(services, SUPPORTED_SERVICE_NAMES);
88
+ if (!lodash_1.default.isEmpty(unsupportedServices)) {
89
+ throw new driver_1.errors.InvalidArgumentError(`${support_1.util.pluralize('Service name', unsupportedServices.length, false)} ${unsupportedServices} ` +
90
+ `${unsupportedServices.length === 1 ? 'is' : 'are'} not known. Only the following services are ` +
91
+ `suported: ${SUPPORTED_SERVICE_NAMES}`);
92
+ }
93
+ const adb = /** @type {ADB} */ (this.adb);
94
+ const statePromises = {
95
+ wifi: bluebird_1.default.resolve(svcs.includes(WIFI_KEY_NAME) ? adb.isWifiOn() : undefined),
96
+ data: bluebird_1.default.resolve(svcs.includes(DATA_KEY_NAME) ? adb.isDataOn() : undefined),
97
+ airplaneMode: bluebird_1.default.resolve(svcs.includes(AIRPLANE_MODE_KEY_NAME) ? adb.isAirplaneModeOn() : undefined),
98
+ };
99
+ await bluebird_1.default.all(lodash_1.default.values(statePromises));
100
+ return {
101
+ wifi: Boolean(statePromises.wifi.value()),
102
+ data: Boolean(statePromises.data.value()),
103
+ airplaneMode: Boolean(statePromises.airplaneMode.value()),
104
+ };
105
+ },
106
+ async setNetworkConnection(type) {
107
+ this.log.info('Setting network connection');
108
+ // decode the input
109
+ const shouldEnableAirplaneMode = (type & AIRPLANE_MODE_MASK) !== 0;
110
+ const shouldEnableWifi = (type & WIFI_MASK) !== 0;
111
+ const shouldEnableDataConnection = (type & DATA_MASK) !== 0;
112
+ const currentState = await this.getNetworkConnection();
113
+ const isAirplaneModeEnabled = (currentState & AIRPLANE_MODE_MASK) !== 0;
114
+ const isWiFiEnabled = (currentState & WIFI_MASK) !== 0;
115
+ const isDataEnabled = (currentState & DATA_MASK) !== 0;
116
+ const adb = /** @type {ADB} */ (this.adb);
117
+ if (shouldEnableAirplaneMode !== isAirplaneModeEnabled) {
118
+ await this.wrapBootstrapDisconnect(async () => {
119
+ await adb.setAirplaneMode(shouldEnableAirplaneMode);
120
+ });
121
+ await this.wrapBootstrapDisconnect(async () => {
122
+ if ((await adb.getApiLevel()) < 30) {
123
+ await adb.broadcastAirplaneMode(shouldEnableAirplaneMode);
124
+ }
125
+ });
126
+ }
127
+ else {
128
+ this.log.info(`Not changing airplane mode, since it is already ${shouldEnableAirplaneMode ? 'enabled' : 'disabled'}`);
129
+ }
130
+ if (shouldEnableWifi === isWiFiEnabled && shouldEnableDataConnection === isDataEnabled) {
131
+ this.log.info('Not changing data connection/Wi-Fi states, since they are already set to expected values');
132
+ if (await adb.isAirplaneModeOn()) {
133
+ return AIRPLANE_MODE_MASK | currentState;
134
+ }
135
+ return ~AIRPLANE_MODE_MASK & currentState;
136
+ }
137
+ await this.wrapBootstrapDisconnect(async () => {
138
+ if (shouldEnableWifi !== isWiFiEnabled) {
139
+ await this.setWifiState(shouldEnableWifi);
140
+ }
141
+ else {
142
+ this.log.info(`Not changing Wi-Fi state, since it is already ` +
143
+ `${shouldEnableWifi ? 'enabled' : 'disabled'}`);
144
+ }
145
+ if (shouldEnableAirplaneMode) {
146
+ this.log.info('Not changing data connection state, because airplane mode is enabled');
147
+ }
148
+ else if (shouldEnableDataConnection === isDataEnabled) {
149
+ this.log.info(`Not changing data connection state, since it is already ` +
150
+ `${shouldEnableDataConnection ? 'enabled' : 'disabled'}`);
151
+ }
152
+ else {
153
+ await adb.setDataState(shouldEnableDataConnection, this.isEmulator());
86
154
  }
87
155
  });
88
- }
89
- if (!lodash_1.default.isEmpty(setters)) {
90
- await bluebird_1.default.all(setters);
91
- }
92
- };
93
- /**
94
- * @typedef {Object} GetConnectivityResult
95
- * @property {boolean} wifi True if wifi is enabled
96
- * @property {boolean} data True if mobile data connection is enabled
97
- * @property {boolean} airplaneMode True if Airplane Mode is enabled
98
- */
99
- /**
100
- * @typedef {Object} GetConnectivityOptions
101
- * @property {string[]|string?} services one or more services to get the connectivity for.
102
- * Supported service names are: wifi, data, airplaneMode.
103
- */
104
- /**
105
- * Retrieves the connectivity properties from the device under test
106
- *
107
- * @param {GetConnectivityOptions?} opts If no service names are provided then the
108
- * connectivity state is returned for all of them.
109
- * @returns {GetConnectivityResult}
110
- */
111
- commands.mobileGetConnectivity = async function mobileGetConnectivity(opts = {}) {
112
- let { services = SUPPORTED_SERVICE_NAMES, } = opts;
113
- if (!lodash_1.default.isArray(services)) {
114
- services = [services];
115
- }
116
- const unsupportedServices = lodash_1.default.difference(services, SUPPORTED_SERVICE_NAMES);
117
- if (!lodash_1.default.isEmpty(unsupportedServices)) {
118
- throw new driver_1.errors.InvalidArgumentError(`${support_1.util.pluralize('Service name', unsupportedServices.length, false)} ${unsupportedServices} ` +
119
- `${unsupportedServices.length === 1 ? 'is' : 'are'} not known. Only the following services are ` +
120
- `suported: ${SUPPORTED_SERVICE_NAMES}`);
121
- }
122
- const statePromises = {
123
- wifi: bluebird_1.default.resolve(services.includes(WIFI_KEY_NAME) ? this.adb.isWifiOn() : undefined),
124
- data: bluebird_1.default.resolve(services.includes(DATA_KEY_NAME) ? this.adb.isDataOn() : undefined),
125
- airplaneMode: bluebird_1.default.resolve(services.includes(AIRPLANE_MODE_KEY_NAME) ? this.adb.isAirplaneModeOn() : undefined),
126
- };
127
- await bluebird_1.default.all(lodash_1.default.values(statePromises));
128
- return lodash_1.default.fromPairs(services.map((k) => [k, statePromises[k].value()]));
129
- };
130
- commands.setNetworkConnection = async function setNetworkConnection(type) {
131
- this.log.info('Setting network connection');
132
- // decode the input
133
- const shouldEnableAirplaneMode = (type & AIRPLANE_MODE_MASK) !== 0;
134
- const shouldEnableWifi = (type & WIFI_MASK) !== 0;
135
- const shouldEnableDataConnection = (type & DATA_MASK) !== 0;
136
- const currentState = await this.getNetworkConnection();
137
- const isAirplaneModeEnabled = (currentState & AIRPLANE_MODE_MASK) !== 0;
138
- const isWiFiEnabled = (currentState & WIFI_MASK) !== 0;
139
- const isDataEnabled = (currentState & DATA_MASK) !== 0;
140
- if (shouldEnableAirplaneMode !== isAirplaneModeEnabled) {
156
+ return await this.getNetworkConnection();
157
+ },
158
+ async setWifiState(wifi) {
159
+ await /** @type {ADB} */ (this.adb).setWifiState(wifi, this.isEmulator());
160
+ },
161
+ async toggleData() {
162
+ const adb = /** @type {ADB} */ (this.adb);
163
+ let data = !(await adb.isDataOn());
164
+ this.log.info(`Turning network data ${data ? 'on' : 'off'}`);
165
+ await this.wrapBootstrapDisconnect(async () => {
166
+ await adb.setWifiAndData({ data }, this.isEmulator());
167
+ });
168
+ },
169
+ async toggleWiFi() {
170
+ const adb = /** @type {ADB} */ (this.adb);
171
+ let wifi = !(await adb.isWifiOn());
172
+ this.log.info(`Turning WiFi ${wifi ? 'on' : 'off'}`);
141
173
  await this.wrapBootstrapDisconnect(async () => {
142
- await this.adb.setAirplaneMode(shouldEnableAirplaneMode);
174
+ await adb.setWifiAndData({ wifi }, this.isEmulator());
143
175
  });
176
+ },
177
+ async toggleFlightMode() {
178
+ const adb = /** @type {ADB} */ (this.adb);
179
+ /*
180
+ * TODO: Implement isRealDevice(). This method fails on
181
+ * real devices, it should throw a NotYetImplementedError
182
+ */
183
+ let flightMode = !(await adb.isAirplaneModeOn());
184
+ this.log.info(`Turning flight mode ${flightMode ? 'on' : 'off'}`);
144
185
  await this.wrapBootstrapDisconnect(async () => {
145
- if (await this.adb.getApiLevel() < 30) {
146
- await this.adb.broadcastAirplaneMode(shouldEnableAirplaneMode);
186
+ await adb.setAirplaneMode(flightMode);
187
+ });
188
+ await this.wrapBootstrapDisconnect(async () => {
189
+ if ((await adb.getApiLevel()) < 30) {
190
+ await adb.broadcastAirplaneMode(flightMode);
147
191
  }
148
192
  });
149
- }
150
- else {
151
- this.log.info(`Not changing airplane mode, since it is already ${shouldEnableAirplaneMode ? 'enabled' : 'disabled'}`);
152
- }
153
- if (shouldEnableWifi === isWiFiEnabled && shouldEnableDataConnection === isDataEnabled) {
154
- this.log.info('Not changing data connection/Wi-Fi states, since they are already set to expected values');
155
- if (await this.adb.isAirplaneModeOn()) {
156
- return AIRPLANE_MODE_MASK | currentState;
157
- }
158
- return ~AIRPLANE_MODE_MASK & currentState;
159
- }
160
- await this.wrapBootstrapDisconnect(async () => {
161
- if (shouldEnableWifi !== isWiFiEnabled) {
162
- await this.setWifiState(shouldEnableWifi);
163
- }
164
- else {
165
- this.log.info(`Not changing Wi-Fi state, since it is already ` +
166
- `${shouldEnableWifi ? 'enabled' : 'disabled'}`);
193
+ },
194
+ async setGeoLocation(location) {
195
+ await /** @type {ADB} */ (this.adb).setGeoLocation(location, this.isEmulator());
196
+ try {
197
+ return await this.getGeoLocation();
167
198
  }
168
- if (shouldEnableAirplaneMode) {
169
- this.log.info('Not changing data connection state, because airplane mode is enabled');
199
+ catch (e) {
200
+ this.log.warn(`Could not get the current geolocation info: ${ /** @type {Error} */(e).message}`);
201
+ this.log.warn(`Returning the default zero'ed values`);
202
+ return {
203
+ latitude: GEO_EPSILON,
204
+ longitude: GEO_EPSILON,
205
+ altitude: GEO_EPSILON,
206
+ };
170
207
  }
171
- else if (shouldEnableDataConnection === isDataEnabled) {
172
- this.log.info(`Not changing data connection state, since it is already ` +
173
- `${shouldEnableDataConnection ? 'enabled' : 'disabled'}`);
208
+ },
209
+ async mobileRefreshGpsCache(opts = {}) {
210
+ const { timeoutMs } = opts;
211
+ await /** @type {ADB} */ (this.adb).refreshGeoLocationCache(timeoutMs);
212
+ },
213
+ async getGeoLocation() {
214
+ const { latitude, longitude, altitude } = await /** @type {ADB} */ (this.adb).getGeoLocation();
215
+ return {
216
+ latitude: parseFloat(String(latitude)) || GEO_EPSILON,
217
+ longitude: parseFloat(String(longitude)) || GEO_EPSILON,
218
+ altitude: parseFloat(String(altitude)) || GEO_EPSILON,
219
+ };
220
+ },
221
+ async isLocationServicesEnabled() {
222
+ return (await /** @type {ADB} */ (this.adb).getLocationProviders()).includes('gps');
223
+ },
224
+ async toggleLocationServices() {
225
+ this.log.info('Toggling location services');
226
+ const isGpsEnabled = await this.isLocationServicesEnabled();
227
+ this.log.debug(`Current GPS state: ${isGpsEnabled}. ` +
228
+ `The service is going to be ${isGpsEnabled ? 'disabled' : 'enabled'}`);
229
+ await /** @type {ADB} */ (this.adb).toggleGPSLocationProvider(!isGpsEnabled);
230
+ },
231
+ async wrapBootstrapDisconnect(wrapped) {
232
+ if (!this.bootstrap) {
233
+ return await wrapped();
174
234
  }
175
- else {
176
- await this.adb.setDataState(shouldEnableDataConnection, this.isEmulator());
235
+ this.bootstrap.ignoreUnexpectedShutdown = true;
236
+ try {
237
+ await wrapped();
238
+ await /** @type {ADB} */ (this.adb).restart();
239
+ await this.bootstrap.start(this.opts.appPackage, this.opts.disableAndroidWatchers, this.opts.acceptSslCerts);
177
240
  }
178
- });
179
- return await this.getNetworkConnection();
180
- };
181
- /**
182
- * decoupling to override behaviour in other drivers like UiAutomator2.
183
- */
184
- commands.setWifiState = async function setWifiState(wifi) {
185
- await this.adb.setWifiState(wifi, this.isEmulator());
186
- };
187
- commands.toggleData = async function toggleData() {
188
- let data = !(await this.adb.isDataOn());
189
- this.log.info(`Turning network data ${data ? 'on' : 'off'}`);
190
- await this.wrapBootstrapDisconnect(async () => {
191
- await this.adb.setWifiAndData({ data }, this.isEmulator());
192
- });
193
- };
194
- commands.toggleWiFi = async function toggleWiFi() {
195
- let wifi = !(await this.adb.isWifiOn());
196
- this.log.info(`Turning WiFi ${wifi ? 'on' : 'off'}`);
197
- await this.wrapBootstrapDisconnect(async () => {
198
- await this.adb.setWifiAndData({ wifi }, this.isEmulator());
199
- });
200
- };
201
- commands.toggleFlightMode = async function toggleFlightMode() {
202
- /*
203
- * TODO: Implement isRealDevice(). This method fails on
204
- * real devices, it should throw a NotYetImplementedError
205
- */
206
- let flightMode = !(await this.adb.isAirplaneModeOn());
207
- this.log.info(`Turning flight mode ${flightMode ? 'on' : 'off'}`);
208
- await this.wrapBootstrapDisconnect(async () => {
209
- await this.adb.setAirplaneMode(flightMode);
210
- });
211
- await this.wrapBootstrapDisconnect(async () => {
212
- if (await this.adb.getApiLevel() < 30) {
213
- await this.adb.broadcastAirplaneMode(flightMode);
241
+ finally {
242
+ this.bootstrap.ignoreUnexpectedShutdown = false;
214
243
  }
215
- });
216
- };
217
- commands.setGeoLocation = async function setGeoLocation(location) {
218
- await this.adb.setGeoLocation(location, this.isEmulator());
219
- try {
220
- return await this.getGeoLocation();
221
- }
222
- catch (e) {
223
- this.log.warn(`Could not get the current geolocation info: ${e.message}`);
224
- this.log.warn(`Returning the default zero'ed values`);
225
- return {
226
- latitude: GEO_EPSILON,
227
- longitude: GEO_EPSILON,
228
- altitude: GEO_EPSILON,
229
- };
230
- }
231
- };
232
- /**
233
- * @typedef {Object} GpsCacheRefreshOptions
234
- * @property {number} timeoutMs [20000] The maximum number of milliseconds
235
- * to block until GPS cache is refreshed. Providing zero or a negative
236
- * value to it skips waiting completely.
237
- */
238
- /**
239
- * Sends an async request to refresh the GPS cache.
240
- * This feature only works if the device under test has
241
- * Google Play Services installed. In case the vanilla
242
- * LocationManager is used the device API level must be at
243
- * version 30 (Android R) or higher.
244
- *
245
- * @param {GpsCacheRefreshOptions} opts
246
- */
247
- commands.mobileRefreshGpsCache = async function mobileRefreshGpsCache(opts = {}) {
248
- const { timeoutMs } = opts;
249
- await this.adb.refreshGeoLocationCache(timeoutMs);
250
- };
251
- commands.getGeoLocation = async function getGeoLocation() {
252
- const { latitude, longitude, altitude } = await this.adb.getGeoLocation();
253
- return {
254
- latitude: parseFloat(latitude) || GEO_EPSILON,
255
- longitude: parseFloat(longitude) || GEO_EPSILON,
256
- altitude: parseFloat(altitude) || GEO_EPSILON,
257
- };
258
- };
259
- /**
260
- * Checks if GPS is enabled
261
- *
262
- * @returns {Promise<Boolean>} True if yes
263
- */
264
- commands.isLocationServicesEnabled = async function iLocationServicesEnabled() {
265
- return (await this.adb.getLocationProviders()).includes('gps');
244
+ },
266
245
  };
246
+ (0, mixins_1.mixin)(NetworkMixin);
247
+ exports.default = NetworkMixin;
267
248
  /**
268
- * Toggles GPS state
249
+ * @typedef {import('appium-adb').ADB} ADB
269
250
  */
270
- commands.toggleLocationServices = async function toggleLocationServices() {
271
- this.log.info('Toggling location services');
272
- const isGpsEnabled = await this.isLocationServicesEnabled();
273
- this.log.debug(`Current GPS state: ${isGpsEnabled}. ` +
274
- `The service is going to be ${isGpsEnabled ? 'disabled' : 'enabled'}`);
275
- await this.adb.toggleGPSLocationProvider(!isGpsEnabled);
276
- };
277
- helpers.wrapBootstrapDisconnect = async function wrapBootstrapDisconnect(wrapped) {
278
- if (!this.bootstrap) {
279
- return await wrapped();
280
- }
281
- this.bootstrap.ignoreUnexpectedShutdown = true;
282
- try {
283
- await wrapped();
284
- await this.adb.restart();
285
- await this.bootstrap.start(this.opts.appPackage, this.opts.disableAndroidWatchers, this.opts.acceptSslCerts);
286
- }
287
- finally {
288
- this.bootstrap.ignoreUnexpectedShutdown = false;
289
- }
290
- };
291
- Object.assign(extensions, commands, helpers);
292
- exports.default = extensions;
293
251
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../lib/commands/network.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../lib/commands/network.js"],"names":[],"mappings":"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"}