appium-android-driver 5.8.1 → 5.8.2

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 CHANGED
@@ -1,3 +1,10 @@
1
+ ## [5.8.2](https://github.com/appium/appium-android-driver/compare/v5.8.1...v5.8.2) (2022-12-09)
2
+
3
+
4
+ ### Miscellaneous Chores
5
+
6
+ * Improve logging for websocket stuff ([#776](https://github.com/appium/appium-android-driver/issues/776)) ([7d583ed](https://github.com/appium/appium-android-driver/commit/7d583edccab3e410212d81b65628be8d4ff1cf3f))
7
+
1
8
  ## [5.8.1](https://github.com/appium/appium-android-driver/compare/v5.8.0...v5.8.1) (2022-12-01)
2
9
 
3
10
 
@@ -53,7 +53,7 @@ commands.mobileStartLogsBroadcast = async function mobileStartLogsBroadcast() {
53
53
  _logger.default.debug(`The logcat broadcasting web socket server is already listening at ${pathname}`);
54
54
  return;
55
55
  }
56
- _logger.default.info(`Assigning logcat broadcasting web socket server to ${pathname}`);
56
+ _logger.default.info(`Starting logcat broadcasting on web socket server ` + `${JSON.stringify(this.server.address())} to ${pathname}`);
57
57
  const wss = new _ws.default.Server({
58
58
  noServer: true
59
59
  });
@@ -97,7 +97,7 @@ commands.mobileStopLogsBroadcast = async function mobileStopLogsBroadcast() {
97
97
  if (_lodash.default.isEmpty(await this.server.getWebSocketHandlers(pathname))) {
98
98
  return;
99
99
  }
100
- _logger.default.debug('Stopping the logcat broadcasting web socket server');
100
+ _logger.default.debug(`Stopping logcat broadcasting on web socket server ` + `${JSON.stringify(this.server.address())} to ${pathname}`);
101
101
  await this.server.removeWebSocketHandler(pathname);
102
102
  };
103
103
  commands.getLogTypes = async function getLogTypes() {
@@ -119,4 +119,4 @@ commands.getLog = async function getLog(logType) {
119
119
  Object.assign(extensions, commands, helpers);
120
120
  var _default = extensions;
121
121
  exports.default = _default;
122
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJXRUJTT0NLRVRfRU5EUE9JTlQiLCJzZXNzaW9uSWQiLCJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsInRvTG9nUmVjb3JkIiwidGltZXN0YW1wIiwibGV2ZWwiLCJtZXNzYWdlIiwic3VwcG9ydGVkTG9nVHlwZXMiLCJsb2djYXQiLCJkZXNjcmlwdGlvbiIsImdldHRlciIsInNlbGYiLCJhZGIiLCJnZXRMb2djYXRMb2dzIiwiYnVncmVwb3J0Iiwib3V0cHV0IiwiRGF0ZSIsIm5vdyIsInNwbGl0Iiwib3MiLCJFT0wiLCJtYXAiLCJ4Iiwic2VydmVyIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJsb2ciLCJ1bndyYXAiLCJyZWNvcmQiLCJfIiwiaXNFbXB0eSIsInByZWZpeCIsIm1vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCIsInBhdGhuYW1lIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJkZWJ1ZyIsImluZm8iLCJ3c3MiLCJXZWJTb2NrZXQiLCJTZXJ2ZXIiLCJub1NlcnZlciIsIm9uIiwid3MiLCJyZXEiLCJyZW1vdGVJcCIsImhlYWRlcnMiLCJjb25uZWN0aW9uIiwicmVtb3RlQWRkcmVzcyIsIl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciIsImxvZ1JlY29yZCIsInJlYWR5U3RhdGUiLCJPUEVOIiwic2VuZCIsInNldExvZ2NhdExpc3RlbmVyIiwiY29kZSIsInJlYXNvbiIsInJlbW92ZUxvZ2NhdExpc3RlbmVyIiwiaWduIiwiY2xvc2VNc2ciLCJ0b1N0cmluZyIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCIsInJlbW92ZVdlYlNvY2tldEhhbmRsZXIiLCJnZXRMb2dUeXBlcyIsIm5hdGl2ZUxvZ1R5cGVzIiwiQmFzZURyaXZlciIsInByb3RvdHlwZSIsImNhbGwiLCJpc1dlYkNvbnRleHQiLCJ3ZWJMb2dUeXBlcyIsImNocm9tZWRyaXZlciIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0TG9nIiwibG9nVHlwZSIsImtleXMiLCJpbmNsdWRlcyIsInR5cGUiLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvbG9nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgeyBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCwgQmFzZURyaXZlciB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5jb25zdCBHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSA9ICdnZXRfc2VydmVyX2xvZ3MnO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IFdFQlNPQ0tFVF9FTkRQT0lOVCA9IChzZXNzaW9uSWQpID0+IGAke0RFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYfS9zZXNzaW9uLyR7c2Vzc2lvbklkfS9hcHBpdW0vZGV2aWNlL2xvZ2NhdGA7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9TZWxlbml1bUhRL3NlbGVuaXVtL2Jsb2IvMGQ0MjU2NzZiM2M5ZGYyNjFkZDY0MTkxN2Y4NjdkNGQ1Y2U3Nzc0ZC9qYXZhL2NsaWVudC9zcmMvb3JnL29wZW5xYS9zZWxlbml1bS9sb2dnaW5nL0xvZ0VudHJ5LmphdmFcbmZ1bmN0aW9uIHRvTG9nUmVjb3JkICh0aW1lc3RhbXAsIGxldmVsLCBtZXNzYWdlKSB7XG4gIHJldHVybiB7XG4gICAgdGltZXN0YW1wLFxuICAgIGxldmVsLFxuICAgIG1lc3NhZ2UsXG4gIH07XG59XG5cbmV4dGVuc2lvbnMuc3VwcG9ydGVkTG9nVHlwZXMgPSB7XG4gIGxvZ2NhdDoge1xuICAgIGRlc2NyaXB0aW9uOiAnTG9ncyBmb3IgQW5kcm9pZCBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2UgYW5kIGVtdWxhdG9ycyB2aWEgQURCJyxcbiAgICBnZXR0ZXI6IGFzeW5jIChzZWxmKSA9PiBhd2FpdCBzZWxmLmFkYi5nZXRMb2djYXRMb2dzKCksXG4gIH0sXG4gIGJ1Z3JlcG9ydDoge1xuICAgIGRlc2NyaXB0aW9uOiBgJ2FkYiBidWdyZXBvcnQnIG91dHB1dCBmb3IgYWR2YW5jZWQgaXNzdWVzIGRpYWdub3N0aWNgLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IHNlbGYuYWRiLmJ1Z3JlcG9ydCgpO1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiBvdXRwdXQuc3BsaXQob3MuRU9MKVxuICAgICAgICAubWFwKCh4KSA9PiB0b0xvZ1JlY29yZCh0aW1lc3RhbXAsICdBTEwnLCB4KSk7XG4gICAgfSxcbiAgfSxcbiAgc2VydmVyOiB7XG4gICAgZGVzY3JpcHRpb246ICdBcHBpdW0gc2VydmVyIGxvZ3MnLFxuICAgIGdldHRlcjogKHNlbGYpID0+IHtcbiAgICAgIHNlbGYuZW5zdXJlRmVhdHVyZUVuYWJsZWQoR0VUX1NFUlZFUl9MT0dTX0ZFQVRVUkUpO1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiBsb2cudW53cmFwKCkucmVjb3JkXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FMTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNFbXB0eSh4LnByZWZpeCkgPyB4Lm1lc3NhZ2UgOiBgWyR7eC5wcmVmaXh9XSAke3gubWVzc2FnZX1gKVxuICAgICAgICApO1xuICAgIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YXJ0cyBBbmRyb2lkIGxvZ2NhdCBicm9hZGNhc3Qgd2Vic29ja2V0IG9uIHRoZSBzYW1lIGhvc3QgYW5kIHBvcnRcbiAqIHdoZXJlIEFwcGl1bSBzZXJ2ZXIgaXMgcnVubmluZyBhdCBgL3dzL3Nlc3Npb24vOnNlc3Npb25JZDovYXBwaXVtL2xvZ2NhdGAgZW5kcG9pbnQuIFRoZSBtZXRob2RcbiAqIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSB3ZWIgc29ja2V0IGlzIGFscmVhZHkgbGlzdGVuaW5nLlxuICpcbiAqIEVhY2ggY29ubmVjdGVkIHdlYnNvY2tldCBsaXN0ZW5lciB3aWxsIHJlY2VpdmUgbG9nY2F0IGxvZyBsaW5lc1xuICogYXMgc29vbiBhcyB0aGV5IGFyZSB2aXNpYmxlIHRvIEFwcGl1bS5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoIV8uaXNFbXB0eShhd2FpdCB0aGlzLnNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyhwYXRobmFtZSkpKSB7XG4gICAgbG9nLmRlYnVnKGBUaGUgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZWIgc29ja2V0IHNlcnZlciBpcyBhbHJlYWR5IGxpc3RlbmluZyBhdCAke3BhdGhuYW1lfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5pbmZvKGBBc3NpZ25pbmcgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZWIgc29ja2V0IHNlcnZlciB0byAke3BhdGhuYW1lfWApO1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cy9ibG9iL21hc3Rlci9kb2Mvd3MubWRcbiAgY29uc3Qgd3NzID0gbmV3IFdlYlNvY2tldC5TZXJ2ZXIoe1xuICAgIG5vU2VydmVyOiB0cnVlLFxuICB9KTtcbiAgd3NzLm9uKCdjb25uZWN0aW9uJywgKHdzLCByZXEpID0+IHtcbiAgICBpZiAocmVxKSB7XG4gICAgICBjb25zdCByZW1vdGVJcCA9IF8uaXNFbXB0eShyZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ10pXG4gICAgICAgID8gcmVxLmNvbm5lY3Rpb24/LnJlbW90ZUFkZHJlc3NcbiAgICAgICAgOiByZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ107XG4gICAgICBsb2cuZGVidWcoYEVzdGFibGlzaGVkIGEgbmV3IGxvZ2NhdCBsaXN0ZW5lciB3ZWIgc29ja2V0IGNvbm5lY3Rpb24gZnJvbSAke3JlbW90ZUlwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZGVidWcoJ0VzdGFibGlzaGVkIGEgbmV3IGxvZ2NhdCBsaXN0ZW5lciB3ZWIgc29ja2V0IGNvbm5lY3Rpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKSkge1xuICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSAobG9nUmVjb3JkKSA9PiB7XG4gICAgICAgIGlmICh3cz8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICB3cy5zZW5kKGxvZ1JlY29yZC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5hZGIuc2V0TG9nY2F0TGlzdGVuZXIodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpO1xuXG4gICAgd3Mub24oJ2Nsb3NlJywgKGNvZGUsIHJlYXNvbikgPT4ge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5hZGIucmVtb3ZlTG9nY2F0TGlzdGVuZXIodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpO1xuICAgICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICAgIHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgbGV0IGNsb3NlTXNnID0gJ0xvZ2NhdCBsaXN0ZW5lciB3ZWIgc29ja2V0IGlzIGNsb3NlZC4nO1xuICAgICAgaWYgKCFfLmlzRW1wdHkoY29kZSkpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBDb2RlOiAke2NvZGV9LmA7XG4gICAgICB9XG4gICAgICBpZiAoIV8uaXNFbXB0eShyZWFzb24pKSB7XG4gICAgICAgIGNsb3NlTXNnICs9IGAgUmVhc29uOiAke3JlYXNvbi50b1N0cmluZygpfS5gO1xuICAgICAgfVxuICAgICAgbG9nLmRlYnVnKGNsb3NlTXNnKTtcbiAgICB9KTtcbiAgfSk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLmFkZFdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUsIHdzcyk7XG59O1xuXG4vKipcbiAqIFN0b3BzIHRoZSBwcmV2aW91c2x5IHN0YXJ0ZWQgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZXNvY2tldCBzZXJ2ZXIuXG4gKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBpbW1lZGlhdGVseSBpZiBubyBzZXJ2ZXIgaXMgcnVubmluZy5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCAoKSB7XG4gIGNvbnN0IHBhdGhuYW1lID0gV0VCU09DS0VUX0VORFBPSU5UKHRoaXMuc2Vzc2lvbklkKTtcbiAgaWYgKF8uaXNFbXB0eShhd2FpdCB0aGlzLnNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyhwYXRobmFtZSkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdTdG9wcGluZyB0aGUgbG9nY2F0IGJyb2FkY2FzdGluZyB3ZWIgc29ja2V0IHNlcnZlcicpO1xuICBhd2FpdCB0aGlzLnNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKTtcbn07XG5cbmNvbW1hbmRzLmdldExvZ1R5cGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nVHlwZXMgKCkge1xuICBjb25zdCBuYXRpdmVMb2dUeXBlcyA9IGF3YWl0IEJhc2VEcml2ZXIucHJvdG90eXBlLmdldExvZ1R5cGVzLmNhbGwodGhpcyk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3Qgd2ViTG9nVHlwZXMgPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoJy9sb2cvdHlwZXMnLCAnR0VUJyk7XG4gICAgcmV0dXJuIFsuLi5uYXRpdmVMb2dUeXBlcywgLi4ud2ViTG9nVHlwZXNdO1xuICB9XG4gIHJldHVybiBuYXRpdmVMb2dUeXBlcztcbn07XG5cbmNvbW1hbmRzLmdldExvZyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvZyAobG9nVHlwZSkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSAmJiAhXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpLmluY2x1ZGVzKGxvZ1R5cGUpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZycsICdQT1NUJywge3R5cGU6IGxvZ1R5cGV9KTtcbiAgfVxuICByZXR1cm4gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nLmNhbGwodGhpcywgbG9nVHlwZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSx1QkFBdUIsR0FBRyxpQkFBaUI7QUFFakQsSUFBSUMsUUFBUSxHQUFHLENBQUMsQ0FBQztFQUFFQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBQUVDLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFBQztBQUFBO0FBRWpELE1B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
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJXRUJTT0NLRVRfRU5EUE9JTlQiLCJzZXNzaW9uSWQiLCJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsInRvTG9nUmVjb3JkIiwidGltZXN0YW1wIiwibGV2ZWwiLCJtZXNzYWdlIiwic3VwcG9ydGVkTG9nVHlwZXMiLCJsb2djYXQiLCJkZXNjcmlwdGlvbiIsImdldHRlciIsInNlbGYiLCJhZGIiLCJnZXRMb2djYXRMb2dzIiwiYnVncmVwb3J0Iiwib3V0cHV0IiwiRGF0ZSIsIm5vdyIsInNwbGl0Iiwib3MiLCJFT0wiLCJtYXAiLCJ4Iiwic2VydmVyIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJsb2ciLCJ1bndyYXAiLCJyZWNvcmQiLCJfIiwiaXNFbXB0eSIsInByZWZpeCIsIm1vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCIsInBhdGhuYW1lIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJkZWJ1ZyIsImluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwiYWRkcmVzcyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYFN0YXJ0aW5nIGxvZ2NhdCBicm9hZGNhc3Rpbmcgb24gd2ViIHNvY2tldCBzZXJ2ZXIgYCArXG4gICAgYCR7SlNPTi5zdHJpbmdpZnkodGhpcy5zZXJ2ZXIuYWRkcmVzcygpKX0gdG8gJHtwYXRobmFtZX1gKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvYmxvYi9tYXN0ZXIvZG9jL3dzLm1kXG4gIGNvbnN0IHdzcyA9IG5ldyBXZWJTb2NrZXQuU2VydmVyKHtcbiAgICBub1NlcnZlcjogdHJ1ZSxcbiAgfSk7XG4gIHdzcy5vbignY29ubmVjdGlvbicsICh3cywgcmVxKSA9PiB7XG4gICAgaWYgKHJlcSkge1xuICAgICAgY29uc3QgcmVtb3RlSXAgPSBfLmlzRW1wdHkocmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddKVxuICAgICAgICA/IHJlcS5jb25uZWN0aW9uPy5yZW1vdGVBZGRyZXNzXG4gICAgICAgIDogcmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddO1xuICAgICAgbG9nLmRlYnVnKGBFc3RhYmxpc2hlZCBhIG5ldyBsb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBjb25uZWN0aW9uIGZyb20gJHtyZW1vdGVJcH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKCdFc3RhYmxpc2hlZCBhIG5ldyBsb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBjb25uZWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgIHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyID0gKGxvZ1JlY29yZCkgPT4ge1xuICAgICAgICBpZiAod3M/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgICAgd3Muc2VuZChsb2dSZWNvcmQubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuYWRiLnNldExvZ2NhdExpc3RlbmVyKHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKTtcblxuICAgIHdzLm9uKCdjbG9zZScsIChjb2RlLCByZWFzb24pID0+IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuYWRiLnJlbW92ZUxvZ2NhdExpc3RlbmVyKHRoaXMuX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyKTtcbiAgICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGxldCBjbG9zZU1zZyA9ICdMb2djYXQgbGlzdGVuZXIgd2ViIHNvY2tldCBpcyBjbG9zZWQuJztcbiAgICAgIGlmICghXy5pc0VtcHR5KGNvZGUpKSB7XG4gICAgICAgIGNsb3NlTXNnICs9IGAgQ29kZTogJHtjb2RlfS5gO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzRW1wdHkocmVhc29uKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIFJlYXNvbjogJHtyZWFzb24udG9TdHJpbmcoKX0uYDtcbiAgICAgIH1cbiAgICAgIGxvZy5kZWJ1ZyhjbG9zZU1zZyk7XG4gICAgfSk7XG4gIH0pO1xuICBhd2FpdCB0aGlzLnNlcnZlci5hZGRXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lLCB3c3MpO1xufTtcblxuLyoqXG4gKiBTdG9wcyB0aGUgcHJldmlvdXNseSBzdGFydGVkIGxvZ2NhdCBicm9hZGNhc3Rpbmcgd2Vzb2NrZXQgc2VydmVyLlxuICogVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgbm8gc2VydmVyIGlzIHJ1bm5pbmcuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmIChfLmlzRW1wdHkoYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMocGF0aG5hbWUpKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU3RvcHBpbmcgbG9nY2F0IGJyb2FkY2FzdGluZyBvbiB3ZWIgc29ja2V0IHNlcnZlciBgICtcbiAgICBgJHtKU09OLnN0cmluZ2lmeSh0aGlzLnNlcnZlci5hZGRyZXNzKCkpfSB0byAke3BhdGhuYW1lfWApO1xuICBhd2FpdCB0aGlzLnNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKTtcbn07XG5cbmNvbW1hbmRzLmdldExvZ1R5cGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nVHlwZXMgKCkge1xuICBjb25zdCBuYXRpdmVMb2dUeXBlcyA9IGF3YWl0IEJhc2VEcml2ZXIucHJvdG90eXBlLmdldExvZ1R5cGVzLmNhbGwodGhpcyk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3Qgd2ViTG9nVHlwZXMgPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoJy9sb2cvdHlwZXMnLCAnR0VUJyk7XG4gICAgcmV0dXJuIFsuLi5uYXRpdmVMb2dUeXBlcywgLi4ud2ViTG9nVHlwZXNdO1xuICB9XG4gIHJldHVybiBuYXRpdmVMb2dUeXBlcztcbn07XG5cbmNvbW1hbmRzLmdldExvZyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvZyAobG9nVHlwZSkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSAmJiAhXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpLmluY2x1ZGVzKGxvZ1R5cGUpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZycsICdQT1NUJywge3R5cGU6IGxvZ1R5cGV9KTtcbiAgfVxuICByZXR1cm4gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nLmNhbGwodGhpcywgbG9nVHlwZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7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
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","names":["GET_SERVER_LOGS_FEATURE","commands","helpers","extensions","WEBSOCKET_ENDPOINT","sessionId","DEFAULT_WS_PATHNAME_PREFIX","toLogRecord","timestamp","level","message","supportedLogTypes","logcat","description","getter","self","adb","getLogcatLogs","bugreport","output","Date","now","split","os","EOL","map","x","server","ensureFeatureEnabled","log","unwrap","record","_","isEmpty","prefix","mobileStartLogsBroadcast","pathname","getWebSocketHandlers","debug","info","wss","WebSocket","Server","noServer","on","ws","req","remoteIp","headers","connection","remoteAddress","_logcatWebsocketListener","logRecord","readyState","OPEN","send","setLogcatListener","code","reason","removeLogcatListener","ign","closeMsg","toString","addWebSocketHandler","mobileStopLogsBroadcast","removeWebSocketHandler","getLogTypes","nativeLogTypes","BaseDriver","prototype","call","isWebContext","webLogTypes","chromedriver","jwproxy","command","getLog","logType","keys","includes","type","Object","assign"],"sources":["../../../lib/commands/log.js"],"sourcesContent":["import log from '../logger';\nimport os from 'os';\nimport _ from 'lodash';\nimport WebSocket from 'ws';\nimport { DEFAULT_WS_PATHNAME_PREFIX, BaseDriver } from 'appium/driver';\n\nconst GET_SERVER_LOGS_FEATURE = 'get_server_logs';\n\nlet commands = {}, helpers = {}, extensions = {};\n\nconst WEBSOCKET_ENDPOINT = (sessionId) => `${DEFAULT_WS_PATHNAME_PREFIX}/session/${sessionId}/appium/device/logcat`;\n\n// https://github.com/SeleniumHQ/selenium/blob/0d425676b3c9df261dd641917f867d4d5ce7774d/java/client/src/org/openqa/selenium/logging/LogEntry.java\nfunction toLogRecord (timestamp, level, message) {\n return {\n timestamp,\n level,\n message,\n };\n}\n\nextensions.supportedLogTypes = {\n logcat: {\n description: 'Logs for Android applications on real device and emulators via ADB',\n getter: async (self) => await self.adb.getLogcatLogs(),\n },\n bugreport: {\n description: `'adb bugreport' output for advanced issues diagnostic`,\n getter: async (self) => {\n const output = await self.adb.bugreport();\n const timestamp = Date.now();\n return output.split(os.EOL)\n .map((x) => toLogRecord(timestamp, 'ALL', x));\n },\n },\n server: {\n description: 'Appium server logs',\n getter: (self) => {\n self.ensureFeatureEnabled(GET_SERVER_LOGS_FEATURE);\n const timestamp = Date.now();\n return log.unwrap().record\n .map((x) => toLogRecord(timestamp,\n 'ALL',\n _.isEmpty(x.prefix) ? x.message : `[${x.prefix}] ${x.message}`)\n );\n },\n },\n};\n\n/**\n * Starts Android logcat broadcast websocket on the same host and port\n * where Appium server is running at `/ws/session/:sessionId:/appium/logcat` endpoint. The method\n * will return immediately if the web socket is already listening.\n *\n * Each connected websocket listener will receive logcat log lines\n * as soon as they are visible to Appium.\n */\ncommands.mobileStartLogsBroadcast = async function mobileStartLogsBroadcast () {\n const pathname = WEBSOCKET_ENDPOINT(this.sessionId);\n if (!_.isEmpty(await this.server.getWebSocketHandlers(pathname))) {\n log.debug(`The logcat broadcasting web socket server is already listening at ${pathname}`);\n return;\n }\n\n log.info(`Assigning logcat broadcasting web socket server to ${pathname}`);\n // https://github.com/websockets/ws/blob/master/doc/ws.md\n const wss = new WebSocket.Server({\n noServer: true,\n });\n wss.on('connection', (ws, req) => {\n if (req) {\n const remoteIp = _.isEmpty(req.headers['x-forwarded-for'])\n ? req.connection?.remoteAddress\n : req.headers['x-forwarded-for'];\n log.debug(`Established a new logcat listener web socket connection from ${remoteIp}`);\n } else {\n log.debug('Established a new logcat listener web socket connection');\n }\n\n if (_.isEmpty(this._logcatWebsocketListener)) {\n this._logcatWebsocketListener = (logRecord) => {\n if (ws?.readyState === WebSocket.OPEN) {\n ws.send(logRecord.message);\n }\n };\n }\n this.adb.setLogcatListener(this._logcatWebsocketListener);\n\n ws.on('close', (code, reason) => {\n if (!_.isEmpty(this._logcatWebsocketListener)) {\n try {\n this.adb.removeLogcatListener(this._logcatWebsocketListener);\n } catch (ign) {}\n this._logcatWebsocketListener = null;\n }\n\n let closeMsg = 'Logcat listener web socket is closed.';\n if (!_.isEmpty(code)) {\n closeMsg += ` Code: ${code}.`;\n }\n if (!_.isEmpty(reason)) {\n closeMsg += ` Reason: ${reason.toString()}.`;\n }\n log.debug(closeMsg);\n });\n });\n await this.server.addWebSocketHandler(pathname, wss);\n};\n\n/**\n * Stops the previously started logcat broadcasting wesocket server.\n * This method will return immediately if no server is running.\n */\ncommands.mobileStopLogsBroadcast = async function mobileStopLogsBroadcast () {\n const pathname = WEBSOCKET_ENDPOINT(this.sessionId);\n if (_.isEmpty(await this.server.getWebSocketHandlers(pathname))) {\n return;\n }\n\n log.debug('Stopping the logcat broadcasting web socket server');\n await this.server.removeWebSocketHandler(pathname);\n};\n\ncommands.getLogTypes = async function getLogTypes () {\n const nativeLogTypes = await BaseDriver.prototype.getLogTypes.call(this);\n if (this.isWebContext()) {\n const webLogTypes = await this.chromedriver.jwproxy.command('/log/types', 'GET');\n return [...nativeLogTypes, ...webLogTypes];\n }\n return nativeLogTypes;\n};\n\ncommands.getLog = async function getLog (logType) {\n if (this.isWebContext() && !_.keys(this.supportedLogTypes).includes(logType)) {\n return await this.chromedriver.jwproxy.command('/log', 'POST', {type: logType});\n }\n return await BaseDriver.prototype.getLog.call(this, logType);\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
1
+ {"version":3,"file":"log.js","names":["GET_SERVER_LOGS_FEATURE","commands","helpers","extensions","WEBSOCKET_ENDPOINT","sessionId","DEFAULT_WS_PATHNAME_PREFIX","toLogRecord","timestamp","level","message","supportedLogTypes","logcat","description","getter","self","adb","getLogcatLogs","bugreport","output","Date","now","split","os","EOL","map","x","server","ensureFeatureEnabled","log","unwrap","record","_","isEmpty","prefix","mobileStartLogsBroadcast","pathname","getWebSocketHandlers","debug","info","JSON","stringify","address","wss","WebSocket","Server","noServer","on","ws","req","remoteIp","headers","connection","remoteAddress","_logcatWebsocketListener","logRecord","readyState","OPEN","send","setLogcatListener","code","reason","removeLogcatListener","ign","closeMsg","toString","addWebSocketHandler","mobileStopLogsBroadcast","removeWebSocketHandler","getLogTypes","nativeLogTypes","BaseDriver","prototype","call","isWebContext","webLogTypes","chromedriver","jwproxy","command","getLog","logType","keys","includes","type","Object","assign"],"sources":["../../../lib/commands/log.js"],"sourcesContent":["import log from '../logger';\nimport os from 'os';\nimport _ from 'lodash';\nimport WebSocket from 'ws';\nimport { DEFAULT_WS_PATHNAME_PREFIX, BaseDriver } from 'appium/driver';\n\nconst GET_SERVER_LOGS_FEATURE = 'get_server_logs';\n\nlet commands = {}, helpers = {}, extensions = {};\n\nconst WEBSOCKET_ENDPOINT = (sessionId) => `${DEFAULT_WS_PATHNAME_PREFIX}/session/${sessionId}/appium/device/logcat`;\n\n// https://github.com/SeleniumHQ/selenium/blob/0d425676b3c9df261dd641917f867d4d5ce7774d/java/client/src/org/openqa/selenium/logging/LogEntry.java\nfunction toLogRecord (timestamp, level, message) {\n return {\n timestamp,\n level,\n message,\n };\n}\n\nextensions.supportedLogTypes = {\n logcat: {\n description: 'Logs for Android applications on real device and emulators via ADB',\n getter: async (self) => await self.adb.getLogcatLogs(),\n },\n bugreport: {\n description: `'adb bugreport' output for advanced issues diagnostic`,\n getter: async (self) => {\n const output = await self.adb.bugreport();\n const timestamp = Date.now();\n return output.split(os.EOL)\n .map((x) => toLogRecord(timestamp, 'ALL', x));\n },\n },\n server: {\n description: 'Appium server logs',\n getter: (self) => {\n self.ensureFeatureEnabled(GET_SERVER_LOGS_FEATURE);\n const timestamp = Date.now();\n return log.unwrap().record\n .map((x) => toLogRecord(timestamp,\n 'ALL',\n _.isEmpty(x.prefix) ? x.message : `[${x.prefix}] ${x.message}`)\n );\n },\n },\n};\n\n/**\n * Starts Android logcat broadcast websocket on the same host and port\n * where Appium server is running at `/ws/session/:sessionId:/appium/logcat` endpoint. The method\n * will return immediately if the web socket is already listening.\n *\n * Each connected websocket listener will receive logcat log lines\n * as soon as they are visible to Appium.\n */\ncommands.mobileStartLogsBroadcast = async function mobileStartLogsBroadcast () {\n const pathname = WEBSOCKET_ENDPOINT(this.sessionId);\n if (!_.isEmpty(await this.server.getWebSocketHandlers(pathname))) {\n log.debug(`The logcat broadcasting web socket server is already listening at ${pathname}`);\n return;\n }\n\n log.info(`Starting logcat broadcasting on web socket server ` +\n `${JSON.stringify(this.server.address())} to ${pathname}`);\n // https://github.com/websockets/ws/blob/master/doc/ws.md\n const wss = new WebSocket.Server({\n noServer: true,\n });\n wss.on('connection', (ws, req) => {\n if (req) {\n const remoteIp = _.isEmpty(req.headers['x-forwarded-for'])\n ? req.connection?.remoteAddress\n : req.headers['x-forwarded-for'];\n log.debug(`Established a new logcat listener web socket connection from ${remoteIp}`);\n } else {\n log.debug('Established a new logcat listener web socket connection');\n }\n\n if (_.isEmpty(this._logcatWebsocketListener)) {\n this._logcatWebsocketListener = (logRecord) => {\n if (ws?.readyState === WebSocket.OPEN) {\n ws.send(logRecord.message);\n }\n };\n }\n this.adb.setLogcatListener(this._logcatWebsocketListener);\n\n ws.on('close', (code, reason) => {\n if (!_.isEmpty(this._logcatWebsocketListener)) {\n try {\n this.adb.removeLogcatListener(this._logcatWebsocketListener);\n } catch (ign) {}\n this._logcatWebsocketListener = null;\n }\n\n let closeMsg = 'Logcat listener web socket is closed.';\n if (!_.isEmpty(code)) {\n closeMsg += ` Code: ${code}.`;\n }\n if (!_.isEmpty(reason)) {\n closeMsg += ` Reason: ${reason.toString()}.`;\n }\n log.debug(closeMsg);\n });\n });\n await this.server.addWebSocketHandler(pathname, wss);\n};\n\n/**\n * Stops the previously started logcat broadcasting wesocket server.\n * This method will return immediately if no server is running.\n */\ncommands.mobileStopLogsBroadcast = async function mobileStopLogsBroadcast () {\n const pathname = WEBSOCKET_ENDPOINT(this.sessionId);\n if (_.isEmpty(await this.server.getWebSocketHandlers(pathname))) {\n return;\n }\n\n log.debug(`Stopping logcat broadcasting on web socket server ` +\n `${JSON.stringify(this.server.address())} to ${pathname}`);\n await this.server.removeWebSocketHandler(pathname);\n};\n\ncommands.getLogTypes = async function getLogTypes () {\n const nativeLogTypes = await BaseDriver.prototype.getLogTypes.call(this);\n if (this.isWebContext()) {\n const webLogTypes = await this.chromedriver.jwproxy.command('/log/types', 'GET');\n return [...nativeLogTypes, ...webLogTypes];\n }\n return nativeLogTypes;\n};\n\ncommands.getLog = async function getLog (logType) {\n if (this.isWebContext() && !_.keys(this.supportedLogTypes).includes(logType)) {\n return await this.chromedriver.jwproxy.command('/log', 'POST', {type: logType});\n }\n return await BaseDriver.prototype.getLog.call(this, logType);\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAEA,MAAMA,uBAAuB,GAAG,iBAAiB;AAEjD,IAAIC,QAAQ,GAAG,CAAC,CAAC;EAAEC,OAAO,GAAG,CAAC,CAAC;EAAEC,UAAU,GAAG,CAAC,CAAC;AAAC;AAAA;AAEjD,MAAMC,kBAAkB,GAAIC,SAAS,IAAM,GAAEC,kCAA2B,YAAWD,SAAU,uBAAsB;AAGnH,SAASE,WAAW,CAAEC,SAAS,EAAEC,KAAK,EAAEC,OAAO,EAAE;EAC/C,OAAO;IACLF,SAAS;IACTC,KAAK;IACLC;EACF,CAAC;AACH;AAEAP,UAAU,CAACQ,iBAAiB,GAAG;EAC7BC,MAAM,EAAE;IACNC,WAAW,EAAE,oEAAoE;IACjFC,MAAM,EAAE,MAAOC,IAAI,IAAK,MAAMA,IAAI,CAACC,GAAG,CAACC,aAAa;EACtD,CAAC;EACDC,SAAS,EAAE;IACTL,WAAW,EAAG,uDAAsD;IACpEC,MAAM,EAAE,MAAOC,IAAI,IAAK;MACtB,MAAMI,MAAM,GAAG,MAAMJ,IAAI,CAACC,GAAG,CAACE,SAAS,EAAE;MACzC,MAAMV,SAAS,GAAGY,IAAI,CAACC,GAAG,EAAE;MAC5B,OAAOF,MAAM,CAACG,KAAK,CAACC,WAAE,CAACC,GAAG,CAAC,CACxBC,GAAG,CAAEC,CAAC,IAAKnB,WAAW,CAACC,SAAS,EAAE,KAAK,EAAEkB,CAAC,CAAC,CAAC;IACjD;EACF,CAAC;EACDC,MAAM,EAAE;IACNd,WAAW,EAAE,oBAAoB;IACjCC,MAAM,EAAGC,IAAI,IAAK;MAChBA,IAAI,CAACa,oBAAoB,CAAC5B,uBAAuB,CAAC;MAClD,MAAMQ,SAAS,GAAGY,IAAI,CAACC,GAAG,EAAE;MAC5B,OAAOQ,eAAG,CAACC,MAAM,EAAE,CAACC,MAAM,CACvBN,GAAG,CAAEC,CAAC,IAAKnB,WAAW,CAACC,SAAS,EACT,KAAK,EACLwB,eAAC,CAACC,OAAO,CAACP,CAAC,CAACQ,MAAM,CAAC,GAAGR,CAAC,CAAChB,OAAO,GAAI,IAAGgB,CAAC,CAACQ,MAAO,KAAIR,CAAC,CAAChB,OAAQ,EAAC,CAAC,CACtF;IACL;EACF;AACF,CAAC;AAUDT,QAAQ,CAACkC,wBAAwB,GAAG,eAAeA,wBAAwB,GAAI;EAC7E,MAAMC,QAAQ,GAAGhC,kBAAkB,CAAC,IAAI,CAACC,SAAS,CAAC;EACnD,IAAI,CAAC2B,eAAC,CAACC,OAAO,CAAC,MAAM,IAAI,CAACN,MAAM,CAACU,oBAAoB,CAACD,QAAQ,CAAC,CAAC,EAAE;IAChEP,eAAG,CAACS,KAAK,CAAE,qEAAoEF,QAAS,EAAC,CAAC;IAC1F;EACF;EAEAP,eAAG,CAACU,IAAI,CAAE,oDAAmD,GAC1D,GAAEC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACd,MAAM,CAACe,OAAO,EAAE,CAAE,OAAMN,QAAS,EAAC,CAAC;EAE5D,MAAMO,GAAG,GAAG,IAAIC,WAAS,CAACC,MAAM,CAAC;IAC/BC,QAAQ,EAAE;EACZ,CAAC,CAAC;EACFH,GAAG,CAACI,EAAE,CAAC,YAAY,EAAE,CAACC,EAAE,EAAEC,GAAG,KAAK;IAChC,IAAIA,GAAG,EAAE;MAAA;MACP,MAAMC,QAAQ,GAAGlB,eAAC,CAACC,OAAO,CAACgB,GAAG,CAACE,OAAO,CAAC,iBAAiB,CAAC,CAAC,sBACtDF,GAAG,CAACG,UAAU,oDAAd,gBAAgBC,aAAa,GAC7BJ,GAAG,CAACE,OAAO,CAAC,iBAAiB,CAAC;MAClCtB,eAAG,CAACS,KAAK,CAAE,gEAA+DY,QAAS,EAAC,CAAC;IACvF,CAAC,MAAM;MACLrB,eAAG,CAACS,KAAK,CAAC,yDAAyD,CAAC;IACtE;IAEA,IAAIN,eAAC,CAACC,OAAO,CAAC,IAAI,CAACqB,wBAAwB,CAAC,EAAE;MAC5C,IAAI,CAACA,wBAAwB,GAAIC,SAAS,IAAK;QAC7C,IAAI,CAAAP,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAEQ,UAAU,MAAKZ,WAAS,CAACa,IAAI,EAAE;UACrCT,EAAE,CAACU,IAAI,CAACH,SAAS,CAAC7C,OAAO,CAAC;QAC5B;MACF,CAAC;IACH;IACA,IAAI,CAACM,GAAG,CAAC2C,iBAAiB,CAAC,IAAI,CAACL,wBAAwB,CAAC;IAEzDN,EAAE,CAACD,EAAE,CAAC,OAAO,EAAE,CAACa,IAAI,EAAEC,MAAM,KAAK;MAC/B,IAAI,CAAC7B,eAAC,CAACC,OAAO,CAAC,IAAI,CAACqB,wBAAwB,CAAC,EAAE;QAC7C,IAAI;UACF,IAAI,CAACtC,GAAG,CAAC8C,oBAAoB,CAAC,IAAI,CAACR,wBAAwB,CAAC;QAC9D,CAAC,CAAC,OAAOS,GAAG,EAAE,CAAC;QACf,IAAI,CAACT,wBAAwB,GAAG,IAAI;MACtC;MAEA,IAAIU,QAAQ,GAAG,uCAAuC;MACtD,IAAI,CAAChC,eAAC,CAACC,OAAO,CAAC2B,IAAI,CAAC,EAAE;QACpBI,QAAQ,IAAK,UAASJ,IAAK,GAAE;MAC/B;MACA,IAAI,CAAC5B,eAAC,CAACC,OAAO,CAAC4B,MAAM,CAAC,EAAE;QACtBG,QAAQ,IAAK,YAAWH,MAAM,CAACI,QAAQ,EAAG,GAAE;MAC9C;MACApC,eAAG,CAACS,KAAK,CAAC0B,QAAQ,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,CAAC;EACF,MAAM,IAAI,CAACrC,MAAM,CAACuC,mBAAmB,CAAC9B,QAAQ,EAAEO,GAAG,CAAC;AACtD,CAAC;AAMD1C,QAAQ,CAACkE,uBAAuB,GAAG,eAAeA,uBAAuB,GAAI;EAC3E,MAAM/B,QAAQ,GAAGhC,kBAAkB,CAAC,IAAI,CAACC,SAAS,CAAC;EACnD,IAAI2B,eAAC,CAACC,OAAO,CAAC,MAAM,IAAI,CAACN,MAAM,CAACU,oBAAoB,CAACD,QAAQ,CAAC,CAAC,EAAE;IAC/D;EACF;EAEAP,eAAG,CAACS,KAAK,CAAE,oDAAmD,GAC3D,GAAEE,IAAI,CAACC,SAAS,CAAC,IAAI,CAACd,MAAM,CAACe,OAAO,EAAE,CAAE,OAAMN,QAAS,EAAC,CAAC;EAC5D,MAAM,IAAI,CAACT,MAAM,CAACyC,sBAAsB,CAAChC,QAAQ,CAAC;AACpD,CAAC;AAEDnC,QAAQ,CAACoE,WAAW,GAAG,eAAeA,WAAW,GAAI;EACnD,MAAMC,cAAc,GAAG,MAAMC,kBAAU,CAACC,SAAS,CAACH,WAAW,CAACI,IAAI,CAAC,IAAI,CAAC;EACxE,IAAI,IAAI,CAACC,YAAY,EAAE,EAAE;IACvB,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;IAChF,OAAO,CAAC,GAAGR,cAAc,EAAE,GAAGK,WAAW,CAAC;EAC5C;EACA,OAAOL,cAAc;AACvB,CAAC;AAEDrE,QAAQ,CAAC8E,MAAM,GAAG,eAAeA,MAAM,CAAEC,OAAO,EAAE;EAChD,IAAI,IAAI,CAACN,YAAY,EAAE,IAAI,CAAC1C,eAAC,CAACiD,IAAI,CAAC,IAAI,CAACtE,iBAAiB,CAAC,CAACuE,QAAQ,CAACF,OAAO,CAAC,EAAE;IAC5E,OAAO,MAAM,IAAI,CAACJ,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;MAACK,IAAI,EAAEH;IAAO,CAAC,CAAC;EACjF;EACA,OAAO,MAAMT,kBAAU,CAACC,SAAS,CAACO,MAAM,CAACN,IAAI,CAAC,IAAI,EAAEO,OAAO,CAAC;AAC9D,CAAC;AAEDI,MAAM,CAACC,MAAM,CAAClF,UAAU,EAAEF,QAAQ,EAAEC,OAAO,CAAC;AAAC,eAE9BC,UAAU;AAAA"}
@@ -62,7 +62,8 @@ commands.mobileStartLogsBroadcast = async function mobileStartLogsBroadcast () {
62
62
  return;
63
63
  }
64
64
 
65
- log.info(`Assigning logcat broadcasting web socket server to ${pathname}`);
65
+ log.info(`Starting logcat broadcasting on web socket server ` +
66
+ `${JSON.stringify(this.server.address())} to ${pathname}`);
66
67
  // https://github.com/websockets/ws/blob/master/doc/ws.md
67
68
  const wss = new WebSocket.Server({
68
69
  noServer: true,
@@ -117,7 +118,8 @@ commands.mobileStopLogsBroadcast = async function mobileStopLogsBroadcast () {
117
118
  return;
118
119
  }
119
120
 
120
- log.debug('Stopping the logcat broadcasting web socket server');
121
+ log.debug(`Stopping logcat broadcasting on web socket server ` +
122
+ `${JSON.stringify(this.server.address())} to ${pathname}`);
121
123
  await this.server.removeWebSocketHandler(pathname);
122
124
  };
123
125
 
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "mobile",
10
10
  "mobile testing"
11
11
  ],
12
- "version": "5.8.1",
12
+ "version": "5.8.2",
13
13
  "author": "Appium Contributors",
14
14
  "license": "Apache-2.0",
15
15
  "repository": {