@appium/base-driver 8.3.0 → 8.3.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 (110) hide show
  1. package/build/lib/basedriver/capabilities.js +2 -4
  2. package/build/lib/basedriver/commands/event.js +2 -4
  3. package/build/lib/basedriver/commands/find.js +2 -4
  4. package/build/lib/basedriver/commands/index.js +2 -4
  5. package/build/lib/basedriver/commands/log.js +2 -4
  6. package/build/lib/basedriver/commands/session.js +2 -4
  7. package/build/lib/basedriver/commands/settings.js +2 -4
  8. package/build/lib/basedriver/commands/timeout.js +2 -4
  9. package/build/lib/basedriver/desired-caps.js +2 -4
  10. package/build/lib/basedriver/device-settings.js +2 -4
  11. package/build/lib/basedriver/driver.js +17 -6
  12. package/build/lib/basedriver/helpers.js +2 -4
  13. package/build/lib/basedriver/logger.js +2 -4
  14. package/build/lib/constants.js +2 -4
  15. package/build/lib/express/crash.js +2 -4
  16. package/build/lib/express/express-logging.js +2 -4
  17. package/build/lib/express/idempotency.js +2 -4
  18. package/build/lib/express/logger.js +2 -4
  19. package/build/lib/express/middleware.js +2 -4
  20. package/build/lib/express/server.js +2 -4
  21. package/build/lib/express/static.js +2 -4
  22. package/build/lib/express/websocket.js +2 -4
  23. package/build/lib/helpers/capabilities.js +2 -4
  24. package/build/lib/index.js +2 -4
  25. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
  26. package/build/lib/jsonwp-proxy/proxy.js +2 -4
  27. package/build/lib/jsonwp-status/status.js +2 -4
  28. package/build/lib/protocol/errors.js +2 -4
  29. package/build/lib/protocol/helpers.js +2 -4
  30. package/build/lib/protocol/index.js +2 -4
  31. package/build/lib/protocol/protocol.js +2 -4
  32. package/build/lib/protocol/routes.js +2 -4
  33. package/build/lib/protocol/validators.js +2 -4
  34. package/build/test/basedriver/README.md +5 -0
  35. package/build/test/basedriver/driver-e2e-tests.js +2 -4
  36. package/build/test/basedriver/driver-tests.js +2 -4
  37. package/build/test/basedriver/index.js +2 -4
  38. package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
  39. package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
  40. package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
  41. package/build/test/e2e/express/server.e2e.spec.js +159 -0
  42. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
  43. package/build/test/e2e/protocol/fake-driver.js +163 -0
  44. package/build/test/e2e/protocol/helpers.js +25 -0
  45. package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
  46. package/build/test/helpers.js +2 -4
  47. package/build/test/unit/basedriver/capabilities.spec.js +672 -0
  48. package/build/test/unit/basedriver/capability.spec.js +353 -0
  49. package/build/test/unit/basedriver/commands/event.spec.js +110 -0
  50. package/build/test/unit/basedriver/commands/log.spec.js +85 -0
  51. package/build/test/unit/basedriver/driver.spec.js +15 -0
  52. package/build/test/unit/basedriver/helpers.spec.js +151 -0
  53. package/build/test/unit/basedriver/timeout.spec.js +135 -0
  54. package/build/test/unit/express/server.spec.js +155 -0
  55. package/build/test/unit/express/static.spec.js +26 -0
  56. package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
  57. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
  58. package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
  59. package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
  60. package/build/test/unit/jsonwp-status/status.spec.js +34 -0
  61. package/build/test/unit/protocol/errors.spec.js +390 -0
  62. package/build/test/unit/protocol/routes.spec.js +80 -0
  63. package/build/test/unit/protocol/validator.spec.js +149 -0
  64. package/lib/basedriver/driver.js +15 -4
  65. package/package.json +14 -9
  66. package/test/basedriver/README.md +5 -0
  67. package/test/basedriver/driver-e2e-tests.js +1 -1
  68. package/build/test/basedriver/capabilities-specs.js +0 -674
  69. package/build/test/basedriver/capability-specs.js +0 -355
  70. package/build/test/basedriver/commands/event-specs.js +0 -112
  71. package/build/test/basedriver/commands/log-specs.js +0 -87
  72. package/build/test/basedriver/driver-e2e-specs.js +0 -17
  73. package/build/test/basedriver/driver-specs.js +0 -17
  74. package/build/test/basedriver/helpers-e2e-specs.js +0 -194
  75. package/build/test/basedriver/helpers-specs.js +0 -153
  76. package/build/test/basedriver/timeout-specs.js +0 -137
  77. package/build/test/basedriver/websockets-e2e-specs.js +0 -84
  78. package/build/test/express/server-e2e-specs.js +0 -161
  79. package/build/test/express/server-specs.js +0 -157
  80. package/build/test/express/static-specs.js +0 -28
  81. package/build/test/jsonwp-proxy/mock-request.js +0 -93
  82. package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
  83. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
  84. package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
  85. package/build/test/jsonwp-proxy/url-specs.js +0 -167
  86. package/build/test/jsonwp-status/status-specs.js +0 -36
  87. package/build/test/protocol/errors-specs.js +0 -388
  88. package/build/test/protocol/fake-driver.js +0 -165
  89. package/build/test/protocol/helpers.js +0 -27
  90. package/build/test/protocol/protocol-e2e-specs.js +0 -1188
  91. package/build/test/protocol/routes-specs.js +0 -82
  92. package/build/test/protocol/validator-specs.js +0 -151
  93. package/test/basedriver/capabilities-specs.js +0 -537
  94. package/test/basedriver/capability-specs.js +0 -383
  95. package/test/basedriver/commands/event-specs.js +0 -74
  96. package/test/basedriver/commands/log-specs.js +0 -79
  97. package/test/basedriver/driver-e2e-specs.js +0 -8
  98. package/test/basedriver/driver-specs.js +0 -8
  99. package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
  100. package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
  101. package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
  102. package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
  103. package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
  104. package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
  105. package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
  106. package/test/basedriver/fixtures/custom-element-finder.js +0 -29
  107. package/test/basedriver/helpers-e2e-specs.js +0 -187
  108. package/test/basedriver/helpers-specs.js +0 -137
  109. package/test/basedriver/timeout-specs.js +0 -128
  110. package/test/basedriver/websockets-e2e-specs.js +0 -75
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ require("source-map-support/register");
4
+
5
+ var _validators = require("../../../lib/protocol/validators");
6
+
7
+ describe('Protocol', function () {
8
+ describe('direct to driver', function () {
9
+ describe('setUrl', function () {
10
+ it('should fail when no url passed', function () {
11
+ (() => {
12
+ _validators.validators.setUrl();
13
+ }).should.throw(/url/i);
14
+ });
15
+ it('should fail when given invalid url', function () {
16
+ (() => {
17
+ _validators.validators.setUrl('foo');
18
+ }).should.throw(/url/i);
19
+ });
20
+ it('should succeed when given url starting with http', function () {
21
+ (() => {
22
+ _validators.validators.setUrl('http://appium.io');
23
+ }).should.not.throw();
24
+ });
25
+ it('should succeed when given an android-like scheme', function () {
26
+ (() => {
27
+ _validators.validators.setUrl('content://contacts/people/1');
28
+ }).should.not.throw();
29
+ });
30
+ it('should succeed with hyphens dots and plus chars in the scheme', function () {
31
+ (() => {
32
+ _validators.validators.setUrl('my-app.a+b://login');
33
+ }).should.not.throw();
34
+ });
35
+ it('should succeed when given an about scheme', function () {
36
+ (() => {
37
+ _validators.validators.setUrl('about:blank');
38
+ }).should.not.throw();
39
+ });
40
+ it('should succeed when given a data scheme', function () {
41
+ (() => {
42
+ _validators.validators.setUrl('data:text/html,<html></html>');
43
+ }).should.not.throw();
44
+ });
45
+ });
46
+ describe('implicitWait', function () {
47
+ it('should fail when given no ms', function () {
48
+ (() => {
49
+ _validators.validators.implicitWait();
50
+ }).should.throw(/ms/i);
51
+ });
52
+ it('should fail when given a non-numeric ms', function () {
53
+ (() => {
54
+ _validators.validators.implicitWait('five');
55
+ }).should.throw(/ms/i);
56
+ });
57
+ it('should fail when given a negative ms', function () {
58
+ (() => {
59
+ _validators.validators.implicitWait(-1);
60
+ }).should.throw(/ms/i);
61
+ });
62
+ it('should succeed when given an ms of 0', function () {
63
+ (() => {
64
+ _validators.validators.implicitWait(0);
65
+ }).should.not.throw();
66
+ });
67
+ it('should succeed when given an ms greater than 0', function () {
68
+ (() => {
69
+ _validators.validators.implicitWait(100);
70
+ }).should.not.throw();
71
+ });
72
+ });
73
+ describe('asyncScriptTimeout', function () {
74
+ it('should fail when given no ms', function () {
75
+ (() => {
76
+ _validators.validators.asyncScriptTimeout();
77
+ }).should.throw(/ms/i);
78
+ });
79
+ it('should fail when given a non-numeric ms', function () {
80
+ (() => {
81
+ _validators.validators.asyncScriptTimeout('five');
82
+ }).should.throw(/ms/i);
83
+ });
84
+ it('should fail when given a negative ms', function () {
85
+ (() => {
86
+ _validators.validators.asyncScriptTimeout(-1);
87
+ }).should.throw(/ms/i);
88
+ });
89
+ it('should succeed when given an ms of 0', function () {
90
+ (() => {
91
+ _validators.validators.asyncScriptTimeout(0);
92
+ }).should.not.throw();
93
+ });
94
+ it('should succeed when given an ms greater than 0', function () {
95
+ (() => {
96
+ _validators.validators.asyncScriptTimeout(100);
97
+ }).should.not.throw();
98
+ });
99
+ });
100
+ describe('clickCurrent', function () {
101
+ it('should fail when given an invalid button', function () {
102
+ (() => {
103
+ _validators.validators.clickCurrent(4);
104
+ }).should.throw(/0, 1, or 2/i);
105
+ });
106
+ it('should succeed when given a valid button', function () {
107
+ (() => {
108
+ _validators.validators.clickCurrent(0);
109
+ }).should.not.throw();
110
+ (() => {
111
+ _validators.validators.clickCurrent(1);
112
+ }).should.not.throw();
113
+ (() => {
114
+ _validators.validators.clickCurrent(2);
115
+ }).should.not.throw();
116
+ });
117
+ });
118
+ describe('setNetworkConnection', function () {
119
+ it('should fail when given no type', function () {
120
+ (() => {
121
+ _validators.validators.setNetworkConnection();
122
+ }).should.throw(/0, 1, 2, 4, 6/i);
123
+ });
124
+ it('should fail when given an invalid type', function () {
125
+ (() => {
126
+ _validators.validators.setNetworkConnection(8);
127
+ }).should.throw(/0, 1, 2, 4, 6/i);
128
+ });
129
+ it('should succeed when given a valid type', function () {
130
+ (() => {
131
+ _validators.validators.setNetworkConnection(0);
132
+ }).should.not.throw();
133
+ (() => {
134
+ _validators.validators.setNetworkConnection(1);
135
+ }).should.not.throw();
136
+ (() => {
137
+ _validators.validators.setNetworkConnection(2);
138
+ }).should.not.throw();
139
+ (() => {
140
+ _validators.validators.setNetworkConnection(4);
141
+ }).should.not.throw();
142
+ (() => {
143
+ _validators.validators.setNetworkConnection(6);
144
+ }).should.not.throw();
145
+ });
146
+ });
147
+ });
148
+ });
149
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wcm90b2NvbC92YWxpZGF0b3Iuc3BlYy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwidmFsaWRhdG9ycyIsInNldFVybCIsInNob3VsZCIsInRocm93Iiwibm90IiwiaW1wbGljaXRXYWl0IiwiYXN5bmNTY3JpcHRUaW1lb3V0IiwiY2xpY2tDdXJyZW50Iiwic2V0TmV0d29ya0Nvbm5lY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTs7QUFJQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFZO0FBQy9CQSxFQUFBQSxRQUFRLENBQUMsa0JBQUQsRUFBcUIsWUFBWTtBQUV2Q0EsSUFBQUEsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFZO0FBQzdCQyxNQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsWUFBWTtBQUMvQyxTQUFDLE1BQU07QUFBQ0MsaUNBQVdDLE1BQVg7QUFBcUIsU0FBN0IsRUFBK0JDLE1BQS9CLENBQXNDQyxLQUF0QyxDQUE0QyxNQUE1QztBQUNELE9BRkMsQ0FBRjtBQUdBSixNQUFBQSxFQUFFLENBQUMsb0NBQUQsRUFBdUMsWUFBWTtBQUNuRCxTQUFDLE1BQU07QUFBQ0MsaUNBQVdDLE1BQVgsQ0FBa0IsS0FBbEI7QUFBMEIsU0FBbEMsRUFBb0NDLE1BQXBDLENBQTJDQyxLQUEzQyxDQUFpRCxNQUFqRDtBQUNELE9BRkMsQ0FBRjtBQUdBSixNQUFBQSxFQUFFLENBQUMsa0RBQUQsRUFBcUQsWUFBWTtBQUNqRSxTQUFDLE1BQU07QUFBQ0MsaUNBQVdDLE1BQVgsQ0FBa0Isa0JBQWxCO0FBQXVDLFNBQS9DLEVBQWlEQyxNQUFqRCxDQUF3REUsR0FBeEQsQ0FBNERELEtBQTVEO0FBQ0QsT0FGQyxDQUFGO0FBR0FKLE1BQUFBLEVBQUUsQ0FBQyxrREFBRCxFQUFxRCxZQUFZO0FBQ2pFLFNBQUMsTUFBTTtBQUFDQyxpQ0FBV0MsTUFBWCxDQUFrQiw2QkFBbEI7QUFBa0QsU0FBMUQsRUFBNERDLE1B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c0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCB7IHZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi8uLi9saWIvcHJvdG9jb2wvdmFsaWRhdG9ycyc7XG5cblxuXG5kZXNjcmliZSgnUHJvdG9jb2wnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdkaXJlY3QgdG8gZHJpdmVyJywgZnVuY3Rpb24gKCkge1xuXG4gICAgZGVzY3JpYmUoJ3NldFVybCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIG5vIHVybCBwYXNzZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXRVcmwoKTt9KS5zaG91bGQudGhyb3coL3VybC9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gaW52YWxpZCB1cmwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXRVcmwoJ2ZvbycpO30pLnNob3VsZC50aHJvdygvdXJsL2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgd2hlbiBnaXZlbiB1cmwgc3RhcnRpbmcgd2l0aCBodHRwJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0VXJsKCdodHRwOi8vYXBwaXVtLmlvJyk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgd2hlbiBnaXZlbiBhbiBhbmRyb2lkLWxpa2Ugc2NoZW1lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0VXJsKCdjb250ZW50Oi8vY29udGFjdHMvcGVvcGxlLzEnKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aXRoIGh5cGhlbnMgZG90cyBhbmQgcGx1cyBjaGFycyBpbiB0aGUgc2NoZW1lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0VXJsKCdteS1hcHAuYStiOi8vbG9naW4nKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGFuIGFib3V0IHNjaGVtZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldFVybCgnYWJvdXQ6YmxhbmsnKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGEgZGF0YSBzY2hlbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXRVcmwoJ2RhdGE6dGV4dC9odG1sLDxodG1sPjwvaHRtbD4nKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnaW1wbGljaXRXYWl0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gbm8gbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5pbXBsaWNpdFdhaXQoKTt9KS5zaG91bGQudGhyb3coL21zL2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBhIG5vbi1udW1lcmljIG1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuaW1wbGljaXRXYWl0KCdmaXZlJyk7fSkuc2hvdWxkLnRocm93KC9tcy9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gYSBuZWdhdGl2ZSBtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmltcGxpY2l0V2FpdCgtMSk7fSkuc2hvdWxkLnRocm93KC9tcy9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYW4gbXMgb2YgMCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmltcGxpY2l0V2FpdCgwKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGFuIG1zIGdyZWF0ZXIgdGhhbiAwJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuaW1wbGljaXRXYWl0KDEwMCk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ2FzeW5jU2NyaXB0VGltZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGdpdmVuIG5vIG1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuYXN5bmNTY3JpcHRUaW1lb3V0KCk7fSkuc2hvdWxkLnRocm93KC9tcy9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gYSBub24tbnVtZXJpYyBtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmFzeW5jU2NyaXB0VGltZW91dCgnZml2ZScpO30pLnNob3VsZC50aHJvdygvbXMvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGdpdmVuIGEgbmVnYXRpdmUgbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5hc3luY1NjcmlwdFRpbWVvdXQoLTEpO30pLnNob3VsZC50aHJvdygvbXMvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGFuIG1zIG9mIDAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5hc3luY1NjcmlwdFRpbWVvdXQoMCk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgd2hlbiBnaXZlbiBhbiBtcyBncmVhdGVyIHRoYW4gMCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmFzeW5jU2NyaXB0VGltZW91dCgxMDApO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdjbGlja0N1cnJlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBhbiBpbnZhbGlkIGJ1dHRvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmNsaWNrQ3VycmVudCg0KTt9KS5zaG91bGQudGhyb3coLzAsIDEsIG9yIDIvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGEgdmFsaWQgYnV0dG9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuY2xpY2tDdXJyZW50KDApO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmNsaWNrQ3VycmVudCgxKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5jbGlja0N1cnJlbnQoMik7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ3NldE5ldHdvcmtDb25uZWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gbm8gdHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKCk7fSkuc2hvdWxkLnRocm93KC8wLCAxLCAyLCA0LCA2L2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBhbiBpbnZhbGlkIHR5cGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXROZXR3b3JrQ29ubmVjdGlvbig4KTt9KS5zaG91bGQudGhyb3coLzAsIDEsIDIsIDQsIDYvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGEgdmFsaWQgdHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKDApO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKDEpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKDIpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKDQpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKDYpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -108,10 +108,21 @@ class BaseDriver extends Protocol {
108
108
 
109
109
  get log () {
110
110
  if (!this._log) {
111
- const instanceName = `${this.constructor.name}@${node.getObjectId(this).substring(0, 8)}`;
112
- this._log = logger.getLogger(() =>
113
- this.sessionId ? `${instanceName} (${this.sessionId.substring(0, 8)})` : instanceName
114
- );
111
+ const instanceName = `${this.constructor.name}@${node.getObjectId(this).substring(0, 4)}`;
112
+ // We don't want the self reference to be captured inside the below closure
113
+ // to avoid possible memory leaks,
114
+ // but NodeJS started supporting WeakRef only since v. 14.6
115
+ const self = global.WeakRef ? new global.WeakRef(this) : this;
116
+ this._log = logger.getLogger(() => {
117
+ let sessionId = self?.sessionId;
118
+ if (!sessionId && _.isFunction(self.deref)) {
119
+ const ref = self.deref();
120
+ if (ref?.sessionId) {
121
+ sessionId = ref.sessionId;
122
+ }
123
+ }
124
+ return sessionId ? `${instanceName} (${sessionId.substring(0, 8)})` : instanceName;
125
+ });
115
126
  }
116
127
 
117
128
  return this._log;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appium/base-driver",
3
- "version": "8.3.0",
3
+ "version": "8.3.1",
4
4
  "description": "Base driver class for Appium drivers",
5
5
  "keywords": [
6
6
  "automation",
@@ -32,18 +32,23 @@
32
32
  "lib",
33
33
  "static",
34
34
  "test/basedriver",
35
- "!test/basedriver/fixtures",
35
+ "!test/e2e/fixtures",
36
36
  "build",
37
- "!build/test/basedriver/fixtures"
37
+ "!build/test/e2e/fixtures"
38
38
  ],
39
39
  "scripts": {
40
- "dev": "gulp dev --no-notif",
41
- "build": "gulp transpile",
42
- "test": "gulp unit-test:run",
43
- "test:e2e": "gulp e2e-test:run"
40
+ "build": "npm run build:sources && npm run build:test",
41
+ "build:sources": "babel lib --root-mode=upward --out-dir=build/lib",
42
+ "build:test": "babel test --root-mode=upward --out-dir=build/test --copy-files",
43
+ "dev": "npm run build -- --watch",
44
+ "fix": "npm run lint -- --fix",
45
+ "lint": "eslint -c ../../.eslintrc --ignore-path ../../.eslintignore .",
46
+ "test": "npm run test:unit",
47
+ "test:e2e": "mocha --require ../../test/setup-babel.js --timeout 20s --slow 10s \"./test/e2e/**/*.spec.js\"",
48
+ "test:unit": "mocha --require ../../test/setup-babel.js \"./test/unit/**/*.spec.js\""
44
49
  },
45
50
  "dependencies": {
46
- "@appium/support": "^2.56.0",
51
+ "@appium/support": "^2.56.1",
47
52
  "@babel/runtime": "7.17.8",
48
53
  "@colors/colors": "1.5.0",
49
54
  "async-lock": "1.3.1",
@@ -70,5 +75,5 @@
70
75
  "publishConfig": {
71
76
  "access": "public"
72
77
  },
73
- "gitHead": "f5cce0f29d31699decea63ed94c4506f7af469df"
78
+ "gitHead": "6d35def9ed754121fee691cdaf7b30e3a7ac3e8b"
74
79
  }
@@ -0,0 +1,5 @@
1
+ # Driver Test Helpers
2
+
3
+ This directory contains modules which expose test suites that an external driver can use to test against the base implementation. They are published in the `@appium/base-driver` package.
4
+
5
+ Drivers wanting to leverage these suites will want to add `@appium/base-driver` to their `devDependencies`.
@@ -2,7 +2,7 @@ import _ from 'lodash';
2
2
  import { BaseDriver, server, routeConfiguringFunction, DeviceSettings } from '../../lib';
3
3
  import axios from 'axios';
4
4
  import B from 'bluebird';
5
- import {TEST_HOST, getTestPort, createAppiumURL, METHODS} from '../helpers';
5
+ import { TEST_HOST, getTestPort, createAppiumURL, METHODS } from '../helpers';
6
6
  import { PREFIXED_APPIUM_OPTS_CAP } from '../../lib/basedriver/capabilities';
7
7
  const {POST, DELETE} = METHODS;
8
8