appium-android-driver 7.8.3 → 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.
Files changed (261) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/build/lib/commands/app-management.d.ts +129 -5
  3. package/build/lib/commands/app-management.d.ts.map +1 -1
  4. package/build/lib/commands/app-management.js +433 -128
  5. package/build/lib/commands/app-management.js.map +1 -1
  6. package/build/lib/commands/appearance.d.ts +17 -4
  7. package/build/lib/commands/appearance.d.ts.map +1 -1
  8. package/build/lib/commands/appearance.js +32 -33
  9. package/build/lib/commands/appearance.js.map +1 -1
  10. package/build/lib/commands/context/cache.d.ts +19 -0
  11. package/build/lib/commands/context/cache.d.ts.map +1 -0
  12. package/build/lib/commands/context/cache.js +32 -0
  13. package/build/lib/commands/context/cache.js.map +1 -0
  14. package/build/lib/commands/context/exports.d.ts +141 -0
  15. package/build/lib/commands/context/exports.d.ts.map +1 -0
  16. package/build/lib/commands/context/exports.js +351 -0
  17. package/build/lib/commands/context/exports.js.map +1 -0
  18. package/build/lib/commands/context/helpers.d.ts +98 -0
  19. package/build/lib/commands/context/helpers.d.ts.map +1 -0
  20. package/build/lib/commands/context/helpers.js +715 -0
  21. package/build/lib/commands/context/helpers.js.map +1 -0
  22. package/build/lib/commands/device/common.d.ts +23 -0
  23. package/build/lib/commands/device/common.d.ts.map +1 -0
  24. package/build/lib/commands/device/common.js +230 -0
  25. package/build/lib/commands/device/common.js.map +1 -0
  26. package/build/lib/commands/device/emulator-actions.d.ts +114 -0
  27. package/build/lib/commands/device/emulator-actions.d.ts.map +1 -0
  28. package/build/lib/commands/device/emulator-actions.js +197 -0
  29. package/build/lib/commands/device/emulator-actions.js.map +1 -0
  30. package/build/lib/commands/device/emulator-console.d.ts +7 -0
  31. package/build/lib/commands/device/emulator-console.d.ts.map +1 -0
  32. package/build/lib/commands/device/emulator-console.js +24 -0
  33. package/build/lib/commands/device/emulator-console.js.map +1 -0
  34. package/build/lib/commands/device/utils.d.ts +50 -0
  35. package/build/lib/commands/device/utils.d.ts.map +1 -0
  36. package/build/lib/commands/device/utils.js +238 -0
  37. package/build/lib/commands/device/utils.js.map +1 -0
  38. package/build/lib/commands/deviceidle.d.ts +8 -5
  39. package/build/lib/commands/deviceidle.d.ts.map +1 -1
  40. package/build/lib/commands/deviceidle.js +31 -37
  41. package/build/lib/commands/deviceidle.js.map +1 -1
  42. package/build/lib/commands/element.d.ts +99 -5
  43. package/build/lib/commands/element.d.ts.map +1 -1
  44. package/build/lib/commands/element.js +152 -116
  45. package/build/lib/commands/element.js.map +1 -1
  46. package/build/lib/commands/execute.d.ts +12 -4
  47. package/build/lib/commands/execute.d.ts.map +1 -1
  48. package/build/lib/commands/execute.js +83 -78
  49. package/build/lib/commands/execute.js.map +1 -1
  50. package/build/lib/commands/file-actions.d.ts +42 -5
  51. package/build/lib/commands/file-actions.d.ts.map +1 -1
  52. package/build/lib/commands/file-actions.js +230 -194
  53. package/build/lib/commands/file-actions.js.map +1 -1
  54. package/build/lib/commands/find.d.ts +5 -4
  55. package/build/lib/commands/find.d.ts.map +1 -1
  56. package/build/lib/commands/find.js +7 -10
  57. package/build/lib/commands/find.js.map +1 -1
  58. package/build/lib/commands/geolocation.d.ts +45 -0
  59. package/build/lib/commands/geolocation.d.ts.map +1 -0
  60. package/build/lib/commands/geolocation.js +182 -0
  61. package/build/lib/commands/geolocation.js.map +1 -0
  62. package/build/lib/commands/ime.d.ts +25 -5
  63. package/build/lib/commands/ime.d.ts.map +1 -1
  64. package/build/lib/commands/ime.js +59 -42
  65. package/build/lib/commands/ime.js.map +1 -1
  66. package/build/lib/commands/intent.d.ts +56 -5
  67. package/build/lib/commands/intent.d.ts.map +1 -1
  68. package/build/lib/commands/intent.js +135 -83
  69. package/build/lib/commands/intent.js.map +1 -1
  70. package/build/lib/commands/keyboard.d.ts +58 -4
  71. package/build/lib/commands/keyboard.d.ts.map +1 -1
  72. package/build/lib/commands/keyboard.js +119 -17
  73. package/build/lib/commands/keyboard.js.map +1 -1
  74. package/build/lib/commands/lock/exports.d.ts +301 -0
  75. package/build/lib/commands/lock/exports.d.ts.map +1 -0
  76. package/build/lib/commands/lock/exports.js +121 -0
  77. package/build/lib/commands/lock/exports.js.map +1 -0
  78. package/build/lib/commands/lock/helpers.d.ts +349 -0
  79. package/build/lib/commands/lock/helpers.d.ts.map +1 -0
  80. package/build/lib/commands/lock/helpers.js +375 -0
  81. package/build/lib/commands/lock/helpers.js.map +1 -0
  82. package/build/lib/commands/log.d.ts +59 -5
  83. package/build/lib/commands/log.d.ts.map +1 -1
  84. package/build/lib/commands/log.js +150 -140
  85. package/build/lib/commands/log.js.map +1 -1
  86. package/build/lib/commands/media-projection.d.ts +16 -5
  87. package/build/lib/commands/media-projection.d.ts.map +1 -1
  88. package/build/lib/commands/media-projection.js +69 -58
  89. package/build/lib/commands/media-projection.js.map +1 -1
  90. package/build/lib/commands/memory.d.ts +9 -5
  91. package/build/lib/commands/memory.d.ts.map +1 -1
  92. package/build/lib/commands/memory.js +19 -24
  93. package/build/lib/commands/memory.js.map +1 -1
  94. package/build/lib/commands/misc.d.ts +42 -0
  95. package/build/lib/commands/misc.d.ts.map +1 -0
  96. package/build/lib/commands/misc.js +100 -0
  97. package/build/lib/commands/misc.js.map +1 -0
  98. package/build/lib/commands/network.d.ts +61 -5
  99. package/build/lib/commands/network.d.ts.map +1 -1
  100. package/build/lib/commands/network.js +196 -189
  101. package/build/lib/commands/network.js.map +1 -1
  102. package/build/lib/commands/performance.d.ts +67 -27
  103. package/build/lib/commands/performance.d.ts.map +1 -1
  104. package/build/lib/commands/performance.js +105 -80
  105. package/build/lib/commands/performance.js.map +1 -1
  106. package/build/lib/commands/permissions.d.ts +12 -6
  107. package/build/lib/commands/permissions.d.ts.map +1 -1
  108. package/build/lib/commands/permissions.js +65 -62
  109. package/build/lib/commands/permissions.js.map +1 -1
  110. package/build/lib/commands/recordscreen.d.ts +44 -5
  111. package/build/lib/commands/recordscreen.d.ts.map +1 -1
  112. package/build/lib/commands/recordscreen.js +131 -126
  113. package/build/lib/commands/recordscreen.js.map +1 -1
  114. package/build/lib/commands/resources.d.ts +16 -0
  115. package/build/lib/commands/resources.d.ts.map +1 -0
  116. package/build/lib/commands/resources.js +91 -0
  117. package/build/lib/commands/resources.js.map +1 -0
  118. package/build/lib/commands/shell.d.ts +8 -5
  119. package/build/lib/commands/shell.d.ts.map +1 -1
  120. package/build/lib/commands/shell.js +29 -33
  121. package/build/lib/commands/shell.js.map +1 -1
  122. package/build/lib/commands/streamscreen.d.ts +34 -6
  123. package/build/lib/commands/streamscreen.d.ts.map +1 -1
  124. package/build/lib/commands/streamscreen.js +166 -162
  125. package/build/lib/commands/streamscreen.js.map +1 -1
  126. package/build/lib/commands/system-bars.d.ts +18 -13
  127. package/build/lib/commands/system-bars.d.ts.map +1 -1
  128. package/build/lib/commands/system-bars.js +68 -64
  129. package/build/lib/commands/system-bars.js.map +1 -1
  130. package/build/lib/commands/time.d.ts +14 -0
  131. package/build/lib/commands/time.d.ts.map +1 -0
  132. package/build/lib/commands/time.js +39 -0
  133. package/build/lib/commands/time.js.map +1 -0
  134. package/build/lib/commands/touch.d.ts +99 -6
  135. package/build/lib/commands/touch.d.ts.map +1 -1
  136. package/build/lib/commands/touch.js +399 -280
  137. package/build/lib/commands/touch.js.map +1 -1
  138. package/build/lib/commands/types.d.ts +110 -2
  139. package/build/lib/commands/types.d.ts.map +1 -1
  140. package/build/lib/doctor/checks.d.ts.map +1 -1
  141. package/build/lib/doctor/checks.js +4 -4
  142. package/build/lib/doctor/checks.js.map +1 -1
  143. package/build/lib/driver.d.ts +224 -27
  144. package/build/lib/driver.d.ts.map +1 -1
  145. package/build/lib/driver.js +232 -7
  146. package/build/lib/driver.js.map +1 -1
  147. package/build/lib/index.d.ts +1 -4
  148. package/build/lib/index.d.ts.map +1 -1
  149. package/build/lib/index.js +1 -13
  150. package/build/lib/index.js.map +1 -1
  151. package/build/lib/logger.js.map +1 -1
  152. package/build/lib/method-map.d.ts +0 -23
  153. package/build/lib/method-map.d.ts.map +1 -1
  154. package/build/lib/method-map.js +0 -11
  155. package/build/lib/method-map.js.map +1 -1
  156. package/build/lib/utils.d.ts +12 -0
  157. package/build/lib/utils.d.ts.map +1 -1
  158. package/build/lib/utils.js +38 -2
  159. package/build/lib/utils.js.map +1 -1
  160. package/lib/commands/app-management.js +470 -145
  161. package/lib/commands/appearance.js +29 -36
  162. package/lib/commands/context/cache.js +29 -0
  163. package/lib/commands/context/exports.js +379 -0
  164. package/lib/commands/context/helpers.js +802 -0
  165. package/lib/commands/device/common.js +264 -0
  166. package/lib/commands/device/emulator-actions.js +194 -0
  167. package/lib/commands/device/emulator-console.js +24 -0
  168. package/lib/commands/device/utils.js +285 -0
  169. package/lib/commands/deviceidle.js +31 -44
  170. package/lib/commands/element.js +149 -142
  171. package/lib/commands/execute.js +86 -87
  172. package/lib/commands/file-actions.js +249 -222
  173. package/lib/commands/find.ts +13 -19
  174. package/lib/commands/geolocation.js +179 -0
  175. package/lib/commands/ime.js +53 -45
  176. package/lib/commands/intent.js +149 -91
  177. package/lib/commands/keyboard.js +114 -17
  178. package/lib/commands/lock/exports.js +139 -0
  179. package/lib/commands/lock/helpers.js +379 -0
  180. package/lib/commands/log.js +170 -166
  181. package/lib/commands/media-projection.js +75 -70
  182. package/lib/commands/memory.js +17 -29
  183. package/lib/commands/misc.js +94 -0
  184. package/lib/commands/network.js +209 -223
  185. package/lib/commands/performance.js +88 -73
  186. package/lib/commands/permissions.js +83 -84
  187. package/lib/commands/recordscreen.js +171 -170
  188. package/lib/commands/resources.js +96 -0
  189. package/lib/commands/shell.js +28 -42
  190. package/lib/commands/streamscreen.js +207 -206
  191. package/lib/commands/system-bars.js +76 -77
  192. package/lib/commands/time.js +36 -0
  193. package/lib/commands/touch.js +442 -346
  194. package/lib/commands/types.ts +123 -2
  195. package/lib/doctor/checks.js +24 -16
  196. package/lib/driver.ts +454 -12
  197. package/lib/index.ts +1 -13
  198. package/lib/logger.js +1 -1
  199. package/lib/method-map.js +0 -11
  200. package/lib/utils.js +40 -3
  201. package/package.json +1 -1
  202. package/build/lib/commands/actions.d.ts +0 -8
  203. package/build/lib/commands/actions.d.ts.map +0 -1
  204. package/build/lib/commands/actions.js +0 -207
  205. package/build/lib/commands/actions.js.map +0 -1
  206. package/build/lib/commands/alert.d.ts +0 -8
  207. package/build/lib/commands/alert.d.ts.map +0 -1
  208. package/build/lib/commands/alert.js +0 -29
  209. package/build/lib/commands/alert.js.map +0 -1
  210. package/build/lib/commands/context.d.ts +0 -10
  211. package/build/lib/commands/context.d.ts.map +0 -1
  212. package/build/lib/commands/context.js +0 -431
  213. package/build/lib/commands/context.js.map +0 -1
  214. package/build/lib/commands/emu-console.d.ts +0 -7
  215. package/build/lib/commands/emu-console.d.ts.map +0 -1
  216. package/build/lib/commands/emu-console.js +0 -27
  217. package/build/lib/commands/emu-console.js.map +0 -1
  218. package/build/lib/commands/general.d.ts +0 -9
  219. package/build/lib/commands/general.d.ts.map +0 -1
  220. package/build/lib/commands/general.js +0 -293
  221. package/build/lib/commands/general.js.map +0 -1
  222. package/build/lib/commands/index.d.ts +0 -28
  223. package/build/lib/commands/index.d.ts.map +0 -1
  224. package/build/lib/commands/index.js +0 -57
  225. package/build/lib/commands/index.js.map +0 -1
  226. package/build/lib/commands/mixins.d.ts +0 -747
  227. package/build/lib/commands/mixins.d.ts.map +0 -1
  228. package/build/lib/commands/mixins.js +0 -19
  229. package/build/lib/commands/mixins.js.map +0 -1
  230. package/build/lib/helpers/android.d.ts +0 -163
  231. package/build/lib/helpers/android.d.ts.map +0 -1
  232. package/build/lib/helpers/android.js +0 -818
  233. package/build/lib/helpers/android.js.map +0 -1
  234. package/build/lib/helpers/index.d.ts +0 -7
  235. package/build/lib/helpers/index.d.ts.map +0 -1
  236. package/build/lib/helpers/index.js +0 -29
  237. package/build/lib/helpers/index.js.map +0 -1
  238. package/build/lib/helpers/types.d.ts +0 -122
  239. package/build/lib/helpers/types.d.ts.map +0 -1
  240. package/build/lib/helpers/types.js +0 -3
  241. package/build/lib/helpers/types.js.map +0 -1
  242. package/build/lib/helpers/unlock.d.ts +0 -32
  243. package/build/lib/helpers/unlock.d.ts.map +0 -1
  244. package/build/lib/helpers/unlock.js +0 -273
  245. package/build/lib/helpers/unlock.js.map +0 -1
  246. package/build/lib/helpers/webview.d.ts +0 -74
  247. package/build/lib/helpers/webview.d.ts.map +0 -1
  248. package/build/lib/helpers/webview.js +0 -448
  249. package/build/lib/helpers/webview.js.map +0 -1
  250. package/lib/commands/actions.js +0 -244
  251. package/lib/commands/alert.js +0 -34
  252. package/lib/commands/context.js +0 -507
  253. package/lib/commands/emu-console.js +0 -31
  254. package/lib/commands/general.js +0 -343
  255. package/lib/commands/index.ts +0 -54
  256. package/lib/commands/mixins.ts +0 -976
  257. package/lib/helpers/android.ts +0 -1153
  258. package/lib/helpers/index.ts +0 -6
  259. package/lib/helpers/types.ts +0 -136
  260. package/lib/helpers/unlock.ts +0 -329
  261. package/lib/helpers/webview.ts +0 -610
@@ -1,16 +1,162 @@
1
1
  "use strict";
2
- // @ts-check
3
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
4
  };
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLog = exports.getLogTypes = exports.mobileStopLogsBroadcast = exports.mobileStartLogsBroadcast = exports.supportedLogTypes = void 0;
7
7
  const driver_1 = require("appium/driver");
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const node_os_1 = __importDefault(require("node:os"));
10
10
  const ws_1 = __importDefault(require("ws"));
11
- const logger_1 = __importDefault(require("../logger"));
12
- const mixins_1 = require("./mixins");
13
11
  const GET_SERVER_LOGS_FEATURE = 'get_server_logs';
12
+ exports.supportedLogTypes = {
13
+ logcat: {
14
+ description: 'Logs for Android applications on real device and emulators via ADB',
15
+ /**
16
+ *
17
+ * @param {import('../driver').AndroidDriver} self
18
+ * @returns
19
+ */
20
+ getter: (self) => /** @type {ADB} */ (self.adb).getLogcatLogs(),
21
+ },
22
+ bugreport: {
23
+ description: `'adb bugreport' output for advanced issues diagnostic`,
24
+ /**
25
+ *
26
+ * @param {import('../driver').AndroidDriver} self
27
+ * @returns
28
+ */
29
+ getter: async (self) => {
30
+ const output = await /** @type {ADB} */ (self.adb).bugreport();
31
+ const timestamp = Date.now();
32
+ return output.split(node_os_1.default.EOL).map((x) => toLogRecord(timestamp, 'ALL', x));
33
+ },
34
+ },
35
+ server: {
36
+ description: 'Appium server logs',
37
+ /**
38
+ *
39
+ * @param {import('../driver').AndroidDriver} self
40
+ * @returns
41
+ */
42
+ getter: (self) => {
43
+ self.ensureFeatureEnabled(GET_SERVER_LOGS_FEATURE);
44
+ const timestamp = Date.now();
45
+ return self.log
46
+ .unwrap()
47
+ .record.map((x) => toLogRecord(timestamp, 'ALL', lodash_1.default.isEmpty(x.prefix) ? x.message : `[${x.prefix}] ${x.message}`));
48
+ },
49
+ },
50
+ };
51
+ /**
52
+ * Starts Android logcat broadcast websocket on the same host and port
53
+ * where Appium server is running at `/ws/session/:sessionId:/appium/logcat` endpoint. The method
54
+ * will return immediately if the web socket is already listening.
55
+ *
56
+ * Each connected websocket listener will receive logcat log lines
57
+ * as soon as they are visible to Appium.
58
+ *
59
+ * @this {import('../driver').AndroidDriver}
60
+ * @returns {Promise<void>}
61
+ */
62
+ async function mobileStartLogsBroadcast() {
63
+ const server = /** @type {import('@appium/types').AppiumServer} */ (this.server);
64
+ const pathname = WEBSOCKET_ENDPOINT(/** @type {string} */ (this.sessionId));
65
+ if (!lodash_1.default.isEmpty(await server.getWebSocketHandlers(pathname))) {
66
+ this.log.debug(`The logcat broadcasting web socket server is already listening at ${pathname}`);
67
+ return;
68
+ }
69
+ this.log.info(`Starting logcat broadcasting on web socket server ` +
70
+ `${JSON.stringify(server.address())} to ${pathname}`);
71
+ // https://github.com/websockets/ws/blob/master/doc/ws.md
72
+ const wss = new ws_1.default.Server({
73
+ noServer: true,
74
+ });
75
+ wss.on('connection', (ws, req) => {
76
+ if (req) {
77
+ const remoteIp = lodash_1.default.isEmpty(req.headers['x-forwarded-for'])
78
+ ? req.connection?.remoteAddress
79
+ : req.headers['x-forwarded-for'];
80
+ this.log.debug(`Established a new logcat listener web socket connection from ${remoteIp}`);
81
+ }
82
+ else {
83
+ this.log.debug('Established a new logcat listener web socket connection');
84
+ }
85
+ if (lodash_1.default.isEmpty(this._logcatWebsocketListener)) {
86
+ this._logcatWebsocketListener = (logRecord) => {
87
+ if (ws?.readyState === ws_1.default.OPEN) {
88
+ ws.send(logRecord.message);
89
+ }
90
+ };
91
+ }
92
+ this.adb.setLogcatListener(this._logcatWebsocketListener);
93
+ ws.on('close', (code, reason) => {
94
+ if (!lodash_1.default.isEmpty(this._logcatWebsocketListener)) {
95
+ try {
96
+ this.adb.removeLogcatListener(this._logcatWebsocketListener);
97
+ }
98
+ catch (ign) { }
99
+ this._logcatWebsocketListener = undefined;
100
+ }
101
+ let closeMsg = 'Logcat listener web socket is closed.';
102
+ if (!lodash_1.default.isEmpty(code)) {
103
+ closeMsg += ` Code: ${code}.`;
104
+ }
105
+ if (!lodash_1.default.isEmpty(reason)) {
106
+ closeMsg += ` Reason: ${reason.toString()}.`;
107
+ }
108
+ this.log.debug(closeMsg);
109
+ });
110
+ });
111
+ await server.addWebSocketHandler(pathname, /** @type {import('@appium/types').WSServer} */ (wss));
112
+ }
113
+ exports.mobileStartLogsBroadcast = mobileStartLogsBroadcast;
114
+ /**
115
+ * Stops the previously started logcat broadcasting wesocket server.
116
+ * This method will return immediately if no server is running.
117
+ *
118
+ * @this {import('../driver').AndroidDriver}
119
+ * @returns {Promise<void>}
120
+ */
121
+ async function mobileStopLogsBroadcast() {
122
+ const pathname = WEBSOCKET_ENDPOINT(/** @type {string} */ (this.sessionId));
123
+ const server = /** @type {import('@appium/types').AppiumServer} */ (this.server);
124
+ if (lodash_1.default.isEmpty(await server.getWebSocketHandlers(pathname))) {
125
+ return;
126
+ }
127
+ this.log.debug(`Stopping logcat broadcasting on web socket server ` +
128
+ `${JSON.stringify(server.address())} to ${pathname}`);
129
+ await server.removeWebSocketHandler(pathname);
130
+ }
131
+ exports.mobileStopLogsBroadcast = mobileStopLogsBroadcast;
132
+ /**
133
+ * @this {import('../driver').AndroidDriver}
134
+ * @returns {Promise<string[]>}
135
+ */
136
+ async function getLogTypes() {
137
+ // XXX why doesn't `super` work here?
138
+ const nativeLogTypes = await driver_1.BaseDriver.prototype.getLogTypes.call(this);
139
+ if (this.isWebContext()) {
140
+ const webLogTypes = /** @type {string[]} */ (await /** @type {import('appium-chromedriver').Chromedriver} */ (this.chromedriver).jwproxy.command('/log/types', 'GET'));
141
+ return [...nativeLogTypes, ...webLogTypes];
142
+ }
143
+ return nativeLogTypes;
144
+ }
145
+ exports.getLogTypes = getLogTypes;
146
+ /**
147
+ * @this {import('../driver').AndroidDriver}
148
+ * @param {string} logType
149
+ * @returns {Promise<any>}
150
+ */
151
+ async function getLog(logType) {
152
+ if (this.isWebContext() && !lodash_1.default.keys(this.supportedLogTypes).includes(logType)) {
153
+ return await /** @type {import('appium-chromedriver').Chromedriver} */ (this.chromedriver).jwproxy.command('/log', 'POST', { type: logType });
154
+ }
155
+ // XXX why doesn't `super` work here?
156
+ return await driver_1.BaseDriver.prototype.getLog.call(this, logType);
157
+ }
158
+ exports.getLog = getLog;
159
+ // #region Internal helpers
14
160
  /**
15
161
  * @param {string} sessionId
16
162
  * @returns {string}
@@ -30,143 +176,7 @@ function toLogRecord(timestamp, level, message) {
30
176
  message,
31
177
  };
32
178
  }
33
- /**
34
- * @type {import('./mixins').LogMixin & ThisType<import('../driver').AndroidDriver>}
35
- * @satisfies {import('@appium/types').ExternalDriver}
36
- */
37
- const LogMixin = {
38
- supportedLogTypes: {
39
- logcat: {
40
- description: 'Logs for Android applications on real device and emulators via ADB',
41
- /**
42
- *
43
- * @param {import('../driver').AndroidDriver} self
44
- * @returns
45
- */
46
- getter: (self) => /** @type {ADB} */ (self.adb).getLogcatLogs(),
47
- },
48
- bugreport: {
49
- description: `'adb bugreport' output for advanced issues diagnostic`,
50
- /**
51
- *
52
- * @param {import('../driver').AndroidDriver} self
53
- * @returns
54
- */
55
- getter: async (self) => {
56
- const output = await /** @type {ADB} */ (self.adb).bugreport();
57
- const timestamp = Date.now();
58
- return output.split(node_os_1.default.EOL).map((x) => toLogRecord(timestamp, 'ALL', x));
59
- },
60
- },
61
- server: {
62
- description: 'Appium server logs',
63
- /**
64
- *
65
- * @param {import('../driver').AndroidDriver} self
66
- * @returns
67
- */
68
- getter: (self) => {
69
- self.ensureFeatureEnabled(GET_SERVER_LOGS_FEATURE);
70
- const timestamp = Date.now();
71
- return logger_1.default
72
- .unwrap()
73
- .record.map((x) => toLogRecord(timestamp, 'ALL', lodash_1.default.isEmpty(x.prefix) ? x.message : `[${x.prefix}] ${x.message}`));
74
- },
75
- },
76
- },
77
- /**
78
- * Starts Android logcat broadcast websocket on the same host and port
79
- * where Appium server is running at `/ws/session/:sessionId:/appium/logcat` endpoint. The method
80
- * will return immediately if the web socket is already listening.
81
- *
82
- * Each connected websocket listener will receive logcat log lines
83
- * as soon as they are visible to Appium.
84
- */
85
- async mobileStartLogsBroadcast() {
86
- const server = /** @type {import('@appium/types').AppiumServer} */ (this.server);
87
- const pathname = WEBSOCKET_ENDPOINT(/** @type {string} */ (this.sessionId));
88
- if (!lodash_1.default.isEmpty(await server.getWebSocketHandlers(pathname))) {
89
- logger_1.default.debug(`The logcat broadcasting web socket server is already listening at ${pathname}`);
90
- return;
91
- }
92
- logger_1.default.info(`Starting logcat broadcasting on web socket server ` +
93
- `${JSON.stringify(server.address())} to ${pathname}`);
94
- // https://github.com/websockets/ws/blob/master/doc/ws.md
95
- const wss = new ws_1.default.Server({
96
- noServer: true,
97
- });
98
- wss.on('connection', (ws, req) => {
99
- if (req) {
100
- const remoteIp = lodash_1.default.isEmpty(req.headers['x-forwarded-for'])
101
- ? req.connection?.remoteAddress
102
- : req.headers['x-forwarded-for'];
103
- logger_1.default.debug(`Established a new logcat listener web socket connection from ${remoteIp}`);
104
- }
105
- else {
106
- logger_1.default.debug('Established a new logcat listener web socket connection');
107
- }
108
- if (lodash_1.default.isEmpty(this._logcatWebsocketListener)) {
109
- this._logcatWebsocketListener = (logRecord) => {
110
- if (ws?.readyState === ws_1.default.OPEN) {
111
- ws.send(logRecord.message);
112
- }
113
- };
114
- }
115
- this.adb.setLogcatListener(this._logcatWebsocketListener);
116
- ws.on('close', (code, reason) => {
117
- if (!lodash_1.default.isEmpty(this._logcatWebsocketListener)) {
118
- try {
119
- this.adb.removeLogcatListener(this._logcatWebsocketListener);
120
- }
121
- catch (ign) { }
122
- this._logcatWebsocketListener = undefined;
123
- }
124
- let closeMsg = 'Logcat listener web socket is closed.';
125
- if (!lodash_1.default.isEmpty(code)) {
126
- closeMsg += ` Code: ${code}.`;
127
- }
128
- if (!lodash_1.default.isEmpty(reason)) {
129
- closeMsg += ` Reason: ${reason.toString()}.`;
130
- }
131
- logger_1.default.debug(closeMsg);
132
- });
133
- });
134
- await server.addWebSocketHandler(pathname,
135
- /** @type {import('@appium/types').WSServer} */ (wss));
136
- },
137
- /**
138
- * Stops the previously started logcat broadcasting wesocket server.
139
- * This method will return immediately if no server is running.
140
- */
141
- async mobileStopLogsBroadcast() {
142
- const pathname = WEBSOCKET_ENDPOINT(/** @type {string} */ (this.sessionId));
143
- const server = /** @type {import('@appium/types').AppiumServer} */ (this.server);
144
- if (lodash_1.default.isEmpty(await server.getWebSocketHandlers(pathname))) {
145
- return;
146
- }
147
- logger_1.default.debug(`Stopping logcat broadcasting on web socket server ` +
148
- `${JSON.stringify(server.address())} to ${pathname}`);
149
- await server.removeWebSocketHandler(pathname);
150
- },
151
- async getLogTypes() {
152
- // XXX why doesn't `super` work here?
153
- const nativeLogTypes = await driver_1.BaseDriver.prototype.getLogTypes.call(this);
154
- if (this.isWebContext()) {
155
- const webLogTypes = /** @type {string[]} */ (await /** @type {import('appium-chromedriver').Chromedriver} */ (this.chromedriver).jwproxy.command('/log/types', 'GET'));
156
- return [...nativeLogTypes, ...webLogTypes];
157
- }
158
- return nativeLogTypes;
159
- },
160
- async getLog(logType) {
161
- if (this.isWebContext() && !lodash_1.default.keys(this.supportedLogTypes).includes(logType)) {
162
- return await /** @type {import('appium-chromedriver').Chromedriver} */ (this.chromedriver).jwproxy.command('/log', 'POST', { type: logType });
163
- }
164
- // XXX why doesn't `super` work here?
165
- return await driver_1.BaseDriver.prototype.getLog.call(this, logType);
166
- },
167
- };
168
- (0, mixins_1.mixin)(LogMixin);
169
- exports.default = LogMixin;
179
+ // #endregion
170
180
  /**
171
181
  * @typedef {import('appium-adb').ADB} ADB
172
182
  */
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../lib/commands/log.js"],"names":[],"mappings":";AAAA,YAAY;;;;;AAEZ,0CAAqE;AACrE,oDAAuB;AACvB,sDAAyB;AACzB,4CAA2B;AAC3B,uDAA4B;AAC5B,qCAA+B;AAE/B,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,EAAE,CACvC,GAAG,mCAA0B,YAAY,SAAS,uBAAuB,CAAC;AAE5E;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO;IAC5C,OAAO;QACL,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AACD;;;GAGG;AACH,MAAM,QAAQ,GAAG;IACf,iBAAiB,EAAE;QACjB,MAAM,EAAE;YACN,WAAW,EAAE,oEAAoE;YACjF;;;;eAIG;YACH,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE;SAChE;QACD,SAAS,EAAE;YACT,WAAW,EAAE,uDAAuD;YACpE;;;;eAIG;YACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,iBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;SACF;QACD,MAAM,EAAE;YACN,WAAW,EAAE,oBAAoB;YACjC;;;;eAIG;YACH,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,OAAO,gBAAG;qBACP,MAAM,EAAE;qBACR,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChB,WAAW,CACT,SAAS,EACT,KAAK,EACL,gBAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CAC/D,CACF,CAAC;YACN,CAAC;SACF;KACF;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,wBAAwB;QAC5B,MAAM,MAAM,GAAG,mDAAmD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC3D,gBAAG,CAAC,KAAK,CAAC,qEAAqE,QAAQ,EAAE,CAAC,CAAC;YAC3F,OAAO;SACR;QAED,gBAAG,CAAC,IAAI,CACN,oDAAoD;YAClD,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,QAAQ,EAAE,CACvD,CAAC;QACF,yDAAyD;QACzD,MAAM,GAAG,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;YAC/B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;YAC/B,IAAI,GAAG,EAAE;gBACP,MAAM,QAAQ,GAAG,gBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;oBACxD,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;oBAC/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACnC,gBAAG,CAAC,KAAK,CAAC,gEAAgE,QAAQ,EAAE,CAAC,CAAC;aACvF;iBAAM;gBACL,gBAAG,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;aACtE;YAED,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;gBAC5C,IAAI,CAAC,wBAAwB,GAAG,CAAC,SAAS,EAAE,EAAE;oBAC5C,IAAI,EAAE,EAAE,UAAU,KAAK,YAAS,CAAC,IAAI,EAAE;wBACrC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;qBAC5B;gBACH,CAAC,CAAC;aACH;YACD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAE1D,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC9B,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;oBAC7C,IAAI;wBACF,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;qBAC9D;oBAAC,OAAO,GAAG,EAAE,GAAE;oBAChB,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;iBAC3C;gBAED,IAAI,QAAQ,GAAG,uCAAuC,CAAC;gBACvD,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACpB,QAAQ,IAAI,UAAU,IAAI,GAAG,CAAC;iBAC/B;gBACD,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACtB,QAAQ,IAAI,YAAY,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;iBAC9C;gBACD,gBAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,mBAAmB,CAC9B,QAAQ;QACR,+CAA+C,CAAC,CAAC,GAAG,CAAC,CACtD,CAAC;IACJ,CAAC;IACD;;;OAGG;IACH,KAAK,CAAC,uBAAuB;QAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,mDAAmD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjF,IAAI,gBAAC,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC1D,OAAO;SACR;QAED,gBAAG,CAAC,KAAK,CACP,oDAAoD;YAClD,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,QAAQ,EAAE,CACvD,CAAC;QACF,MAAM,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,qCAAqC;QACrC,MAAM,cAAc,GAAG,MAAM,mBAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAC1C,MAAM,yDAAyD,CAAC,CAC9D,IAAI,CAAC,YAAY,CAClB,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CACvC,CAAC;YACF,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC,CAAC;SAC5C;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC5E,OAAO,MAAM,yDAAyD,CAAC,CACrE,IAAI,CAAC,YAAY,CAClB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;SACpD;QACD,qCAAqC;QACrC,OAAO,MAAM,mBAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC;AAEF,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAC;AAEhB,kBAAe,QAAQ,CAAC;AAExB;;GAEG"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../lib/commands/log.js"],"names":[],"mappings":"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"}
@@ -1,8 +1,19 @@
1
- export default MediaProjectionMixin;
2
- export type ADB = import('appium-adb').ADB;
3
1
  /**
4
- * @type {import('./mixins').MediaProjectionMixin & ThisType<import('../driver').AndroidDriver>}
5
- * @satisfies {import('@appium/types').ExternalDriver}
2
+ * @this {import('../driver').AndroidDriver}
3
+ * @param {import('./types').StartMediaProjectionRecordingOpts} [options={}]
4
+ * @returns {Promise<boolean>}
5
+ */
6
+ export function mobileStartMediaProjectionRecording(this: import("../driver").AndroidDriver, options?: import("./types").StartMediaProjectionRecordingOpts | undefined): Promise<boolean>;
7
+ /**
8
+ * @this {import('../driver').AndroidDriver}
9
+ * @returns {Promise<boolean>}
6
10
  */
7
- declare const MediaProjectionMixin: import('./mixins').MediaProjectionMixin & ThisType<import('../driver').AndroidDriver>;
11
+ export function mobileIsMediaProjectionRecordingRunning(this: import("../driver").AndroidDriver): Promise<boolean>;
12
+ /**
13
+ * @this {import('../driver').AndroidDriver}
14
+ * @param {import('./types').StopMediaProjectionRecordingOpts} [options={}]
15
+ * @returns {Promise<string>}
16
+ */
17
+ export function mobileStopMediaProjectionRecording(this: import("../driver").AndroidDriver, options?: import("./types").StopMediaProjectionRecordingOpts | undefined): Promise<string>;
18
+ export type ADB = import('appium-adb').ADB;
8
19
  //# sourceMappingURL=media-projection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-projection.d.ts","sourceRoot":"","sources":["../../../lib/commands/media-projection.js"],"names":[],"mappings":";kBA8Ia,OAAO,YAAY,EAAE,GAAG;AAtErC;;;GAGG;AACH,oCAHU,OAAO,UAAU,EAAE,oBAAoB,GAAG,SAAS,OAAO,WAAW,EAAE,aAAa,CAAC,CA8D7F"}
1
+ {"version":3,"file":"media-projection.d.ts","sourceRoot":"","sources":["../../../lib/commands/media-projection.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,yKAFa,QAAQ,OAAO,CAAC,CAsB5B;AAED;;;GAGG;AACH,kGAFa,QAAQ,OAAO,CAAC,CAO5B;AAED;;;;GAIG;AACH,uKAFa,QAAQ,MAAM,CAAC,CA4B3B;kBAoEY,OAAO,YAAY,EAAE,GAAG"}
@@ -3,15 +3,82 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mobileStopMediaProjectionRecording = exports.mobileIsMediaProjectionRecordingRunning = exports.mobileStartMediaProjectionRecording = void 0;
6
7
  const support_1 = require("@appium/support");
7
8
  const lodash_1 = __importDefault(require("lodash"));
8
9
  const moment_1 = __importDefault(require("moment"));
9
10
  const node_path_1 = __importDefault(require("node:path"));
10
- const mixins_1 = require("./mixins");
11
11
  // https://github.com/appium/io.appium.settings#internal-audio--video-recording
12
12
  const DEFAULT_EXT = '.mp4';
13
13
  const MIN_API_LEVEL = 29;
14
14
  const DEFAULT_FILENAME_FORMAT = 'YYYY-MM-DDTHH-mm-ss';
15
+ /**
16
+ * @this {import('../driver').AndroidDriver}
17
+ * @param {import('./types').StartMediaProjectionRecordingOpts} [options={}]
18
+ * @returns {Promise<boolean>}
19
+ */
20
+ async function mobileStartMediaProjectionRecording(options = {}) {
21
+ await verifyMediaProjectionRecordingIsSupported(this.adb);
22
+ const { resolution, priority, maxDurationSec, filename } = options;
23
+ const recorder = this.settingsApp.makeMediaProjectionRecorder();
24
+ const fname = adjustMediaExtension(filename || (0, moment_1.default)().format(DEFAULT_FILENAME_FORMAT));
25
+ const didStart = await recorder.start({
26
+ resolution,
27
+ priority,
28
+ maxDurationSec,
29
+ filename: fname,
30
+ });
31
+ if (didStart) {
32
+ this.log.info(`A new media projection recording '${fname}' has been successfully started`);
33
+ }
34
+ else {
35
+ this.log.info('Another media projection recording is already in progress. There is nothing to start');
36
+ }
37
+ return didStart;
38
+ }
39
+ exports.mobileStartMediaProjectionRecording = mobileStartMediaProjectionRecording;
40
+ /**
41
+ * @this {import('../driver').AndroidDriver}
42
+ * @returns {Promise<boolean>}
43
+ */
44
+ async function mobileIsMediaProjectionRecordingRunning() {
45
+ await verifyMediaProjectionRecordingIsSupported(this.adb);
46
+ const recorder = this.settingsApp.makeMediaProjectionRecorder();
47
+ return await recorder.isRunning();
48
+ }
49
+ exports.mobileIsMediaProjectionRecordingRunning = mobileIsMediaProjectionRecordingRunning;
50
+ /**
51
+ * @this {import('../driver').AndroidDriver}
52
+ * @param {import('./types').StopMediaProjectionRecordingOpts} [options={}]
53
+ * @returns {Promise<string>}
54
+ */
55
+ async function mobileStopMediaProjectionRecording(options = {}) {
56
+ await verifyMediaProjectionRecordingIsSupported(this.adb);
57
+ const recorder = this.settingsApp.makeMediaProjectionRecorder();
58
+ if (await recorder.stop()) {
59
+ this.log.info('Successfully stopped a media projection recording. Pulling the recorded media');
60
+ }
61
+ else {
62
+ this.log.info('Media projection recording is not running. There is nothing to stop');
63
+ }
64
+ const recentRecordingPath = await recorder.pullRecent();
65
+ if (!recentRecordingPath) {
66
+ throw new Error(`No recent media projection recording have been found. Did you start any?`);
67
+ }
68
+ const { remotePath } = options;
69
+ if (lodash_1.default.isEmpty(remotePath)) {
70
+ const { size } = await support_1.fs.stat(recentRecordingPath);
71
+ this.log.debug(`The size of the resulting media projection recording is ${support_1.util.toReadableSizeString(size)}`);
72
+ }
73
+ try {
74
+ return await uploadRecordedMedia(recentRecordingPath, remotePath, options);
75
+ }
76
+ finally {
77
+ await support_1.fs.rimraf(node_path_1.default.dirname(recentRecordingPath));
78
+ }
79
+ }
80
+ exports.mobileStopMediaProjectionRecording = mobileStopMediaProjectionRecording;
81
+ // #region Internal helpers
15
82
  /**
16
83
  *
17
84
  * @param {string} localFile
@@ -59,63 +126,7 @@ async function verifyMediaProjectionRecordingIsSupported(adb) {
59
126
  `Minimum required API Level is ${MIN_API_LEVEL}.`);
60
127
  }
61
128
  }
62
- /**
63
- * @type {import('./mixins').MediaProjectionMixin & ThisType<import('../driver').AndroidDriver>}
64
- * @satisfies {import('@appium/types').ExternalDriver}
65
- */
66
- const MediaProjectionMixin = {
67
- async mobileStartMediaProjectionRecording(options = {}) {
68
- await verifyMediaProjectionRecordingIsSupported(this.adb);
69
- const { resolution, priority, maxDurationSec, filename } = options;
70
- const recorder = this.settingsApp.makeMediaProjectionRecorder();
71
- const fname = adjustMediaExtension(filename || (0, moment_1.default)().format(DEFAULT_FILENAME_FORMAT));
72
- const didStart = await recorder.start({
73
- resolution,
74
- priority,
75
- maxDurationSec,
76
- filename: fname,
77
- });
78
- if (didStart) {
79
- this.log.info(`A new media projection recording '${fname}' has been successfully started`);
80
- }
81
- else {
82
- this.log.info('Another media projection recording is already in progress. There is nothing to start');
83
- }
84
- return didStart;
85
- },
86
- async mobileIsMediaProjectionRecordingRunning() {
87
- await verifyMediaProjectionRecordingIsSupported(this.adb);
88
- const recorder = this.settingsApp.makeMediaProjectionRecorder();
89
- return await recorder.isRunning();
90
- },
91
- async mobileStopMediaProjectionRecording(options = {}) {
92
- await verifyMediaProjectionRecordingIsSupported(this.adb);
93
- const recorder = this.settingsApp.makeMediaProjectionRecorder();
94
- if (await recorder.stop()) {
95
- this.log.info('Successfully stopped a media projection recording. Pulling the recorded media');
96
- }
97
- else {
98
- this.log.info('Media projection recording is not running. There is nothing to stop');
99
- }
100
- const recentRecordingPath = await recorder.pullRecent();
101
- if (!recentRecordingPath) {
102
- throw new Error(`No recent media projection recording have been found. Did you start any?`);
103
- }
104
- const { remotePath } = options;
105
- if (lodash_1.default.isEmpty(remotePath)) {
106
- const { size } = await support_1.fs.stat(recentRecordingPath);
107
- this.log.debug(`The size of the resulting media projection recording is ${support_1.util.toReadableSizeString(size)}`);
108
- }
109
- try {
110
- return await uploadRecordedMedia(recentRecordingPath, remotePath, options);
111
- }
112
- finally {
113
- await support_1.fs.rimraf(node_path_1.default.dirname(recentRecordingPath));
114
- }
115
- },
116
- };
117
- (0, mixins_1.mixin)(MediaProjectionMixin);
118
- exports.default = MediaProjectionMixin;
129
+ // #endregion
119
130
  /**
120
131
  * @typedef {import('appium-adb').ADB} ADB
121
132
  */
@@ -1 +1 @@
1
- {"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.js"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
- export default MemoryMixin;
2
- export type ADB = import('appium-adb').ADB;
3
1
  /**
4
- * @type {import('./mixins').MemoryMixin & ThisType<import('../driver').AndroidDriver>}
5
- * @satisfies {import('@appium/types').ExternalDriver}
2
+ * Simulates the onTrimMemory() event for the given package.
3
+ * Read https://developer.android.com/topic/performance/memory
4
+ * for more details.
5
+ *
6
+ * @this {import('../driver').AndroidDriver}
7
+ * @param {import('./types').SendTrimMemoryOpts} opts
8
+ * @returns {Promise<void>}
6
9
  */
7
- declare const MemoryMixin: import('./mixins').MemoryMixin & ThisType<import('../driver').AndroidDriver>;
10
+ export function mobileSendTrimMemory(this: import("../driver").AndroidDriver, opts: import('./types').SendTrimMemoryOpts): Promise<void>;
11
+ export type ADB = import('appium-adb').ADB;
8
12
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../lib/commands/memory.js"],"names":[],"mappings":";kBAqCa,OAAO,YAAY,EAAE,GAAG;AAlCrC;;;GAGG;AACH,2BAHU,OAAO,UAAU,EAAE,WAAW,GAAG,SAAS,OAAO,WAAW,EAAE,aAAa,CAAC,CA0BpF"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../lib/commands/memory.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,oFAHW,OAAO,SAAS,EAAE,kBAAkB,GAClC,QAAQ,IAAI,CAAC,CAazB;kBAGY,OAAO,YAAY,EAAE,GAAG"}
@@ -1,32 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mobileSendTrimMemory = void 0;
3
4
  const driver_1 = require("appium/driver");
4
- const mixins_1 = require("./mixins");
5
5
  /**
6
- * @type {import('./mixins').MemoryMixin & ThisType<import('../driver').AndroidDriver>}
7
- * @satisfies {import('@appium/types').ExternalDriver}
6
+ * Simulates the onTrimMemory() event for the given package.
7
+ * Read https://developer.android.com/topic/performance/memory
8
+ * for more details.
9
+ *
10
+ * @this {import('../driver').AndroidDriver}
11
+ * @param {import('./types').SendTrimMemoryOpts} opts
12
+ * @returns {Promise<void>}
8
13
  */
9
- const MemoryMixin = {
10
- /**
11
- * Simulates the onTrimMemory() event for the given package.
12
- * Read https://developer.android.com/topic/performance/memory
13
- * for more details.
14
- *
15
- * @param {import('./types').SendTrimMemoryOpts} opts
16
- */
17
- async mobileSendTrimMemory(opts) {
18
- const { pkg, level, } = opts;
19
- if (!pkg) {
20
- throw new driver_1.errors.InvalidArgumentError(`The 'pkg' argument must be provided`);
21
- }
22
- if (!level) {
23
- throw new driver_1.errors.InvalidArgumentError(`The 'level' argument must be provided`);
24
- }
25
- await this.adb.shell(['am', 'send-trim-memory', pkg, level]);
26
- },
27
- };
28
- (0, mixins_1.mixin)(MemoryMixin);
29
- exports.default = MemoryMixin;
14
+ async function mobileSendTrimMemory(opts) {
15
+ const { pkg, level } = opts;
16
+ if (!pkg) {
17
+ throw new driver_1.errors.InvalidArgumentError(`The 'pkg' argument must be provided`);
18
+ }
19
+ if (!level) {
20
+ throw new driver_1.errors.InvalidArgumentError(`The 'level' argument must be provided`);
21
+ }
22
+ await this.adb.shell(['am', 'send-trim-memory', pkg, level]);
23
+ }
24
+ exports.mobileSendTrimMemory = mobileSendTrimMemory;
30
25
  /**
31
26
  * @typedef {import('appium-adb').ADB} ADB
32
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../lib/commands/memory.js"],"names":[],"mappings":";;AAAA,0CAAqC;AACrC,qCAA+B;AAE/B;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CAAC,IAAI;QAC7B,MAAM,EACJ,GAAG,EACH,KAAK,GACN,GAAG,IAAI,CAAC;QAET,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,eAAM,CAAC,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;SAC9E;QACD,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,eAAM,CAAC,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;SAChF;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC;AAEF,IAAA,cAAK,EAAC,WAAW,CAAC,CAAC;AAEnB,kBAAe,WAAW,CAAC;AAE3B;;GAEG"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../lib/commands/memory.js"],"names":[],"mappings":";;;AAAA,0CAAqC;AAErC;;;;;;;;GAQG;AACI,KAAK,UAAU,oBAAoB,CAAC,IAAI;IAC7C,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,eAAM,CAAC,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;KAC9E;IACD,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,eAAM,CAAC,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;KAChF;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAXD,oDAWC;AAED;;GAEG"}