@appium/base-driver 8.2.0 → 8.2.4

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 (68) hide show
  1. package/build/lib/basedriver/capabilities.js +3 -1
  2. package/build/lib/basedriver/commands/index.js +2 -4
  3. package/build/lib/basedriver/driver.js +5 -5
  4. package/build/lib/basedriver/helpers.js +137 -81
  5. package/build/lib/express/express-logging.js +2 -2
  6. package/build/lib/index.js +126 -0
  7. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -5
  8. package/build/lib/jsonwp-proxy/proxy.js +2 -5
  9. package/build/lib/protocol/errors.js +4 -2
  10. package/build/lib/protocol/helpers.js +3 -20
  11. package/build/lib/protocol/protocol.js +9 -19
  12. package/build/lib/protocol/routes.js +1 -10
  13. package/build/test/basedriver/capability-specs.js +10 -10
  14. package/build/test/basedriver/commands/event-specs.js +10 -10
  15. package/build/test/basedriver/driver-e2e-specs.js +3 -3
  16. package/build/test/basedriver/driver-e2e-tests.js +6 -223
  17. package/build/test/basedriver/driver-specs.js +3 -3
  18. package/build/test/basedriver/driver-tests.js +4 -4
  19. package/build/test/basedriver/helpers-specs.js +5 -1
  20. package/build/test/basedriver/timeout-specs.js +7 -7
  21. package/build/test/basedriver/websockets-e2e-specs.js +5 -5
  22. package/build/test/express/server-e2e-specs.js +156 -0
  23. package/build/test/express/server-specs.js +151 -0
  24. package/build/test/express/static-specs.js +23 -0
  25. package/build/test/helpers.js +57 -0
  26. package/build/test/jsonwp-proxy/mock-request.js +93 -0
  27. package/build/test/jsonwp-proxy/protocol-converter-specs.js +173 -0
  28. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +61 -0
  29. package/build/test/jsonwp-proxy/proxy-specs.js +294 -0
  30. package/build/test/jsonwp-proxy/url-specs.js +167 -0
  31. package/build/test/jsonwp-status/status-specs.js +36 -0
  32. package/build/test/protocol/errors-specs.js +388 -0
  33. package/build/test/protocol/fake-driver.js +168 -0
  34. package/build/test/protocol/helpers.js +27 -0
  35. package/build/test/protocol/protocol-e2e-specs.js +1182 -0
  36. package/build/test/protocol/routes-specs.js +82 -0
  37. package/build/test/protocol/validator-specs.js +151 -0
  38. package/index.d.ts +0 -1
  39. package/index.js +1 -62
  40. package/lib/basedriver/capabilities.js +3 -0
  41. package/lib/basedriver/commands/index.js +0 -2
  42. package/lib/basedriver/driver.js +5 -5
  43. package/lib/basedriver/helpers.js +197 -81
  44. package/lib/express/express-logging.js +1 -1
  45. package/lib/index.js +64 -0
  46. package/lib/jsonwp-proxy/protocol-converter.js +1 -5
  47. package/lib/jsonwp-proxy/proxy.js +1 -3
  48. package/lib/protocol/errors.js +1 -1
  49. package/lib/protocol/helpers.js +5 -25
  50. package/lib/protocol/protocol.js +9 -25
  51. package/lib/protocol/routes.js +0 -3
  52. package/package.json +7 -15
  53. package/test/basedriver/capability-specs.js +1 -1
  54. package/test/basedriver/commands/event-specs.js +1 -1
  55. package/test/basedriver/driver-e2e-specs.js +1 -1
  56. package/test/basedriver/driver-e2e-tests.js +1 -179
  57. package/test/basedriver/driver-specs.js +1 -1
  58. package/test/basedriver/driver-tests.js +1 -1
  59. package/test/basedriver/helpers-specs.js +4 -0
  60. package/test/basedriver/timeout-specs.js +1 -1
  61. package/test/basedriver/websockets-e2e-specs.js +1 -1
  62. package/build/index.js +0 -124
  63. package/build/lib/basedriver/commands/execute-child.js +0 -137
  64. package/build/lib/basedriver/commands/execute.js +0 -119
  65. package/build/test/basedriver/fixtures/custom-element-finder-bad.js +0 -12
  66. package/build/test/basedriver/fixtures/custom-element-finder.js +0 -36
  67. package/lib/basedriver/commands/execute-child.js +0 -132
  68. package/lib/basedriver/commands/execute.js +0 -126
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("source-map-support/register");
6
+
7
+ var _lodash = require("lodash");
8
+
9
+ var _protocol = require("../../lib/protocol");
10
+
11
+ var _crypto = _interopRequireDefault(require("crypto"));
12
+
13
+ describe('Protocol', function () {
14
+ describe('ensure protocol consistency', function () {
15
+ it('should not change protocol between patch versions', function () {
16
+ let shasum = _crypto.default.createHash('sha1');
17
+
18
+ for (let [url, urlMapping] of _lodash._.toPairs(_protocol.METHOD_MAP)) {
19
+ shasum.update(url);
20
+
21
+ for (let [method, methodMapping] of _lodash._.toPairs(urlMapping)) {
22
+ shasum.update(method);
23
+
24
+ if (methodMapping.command) {
25
+ shasum.update(methodMapping.command);
26
+ }
27
+
28
+ if (methodMapping.payloadParams) {
29
+ let allParams = _lodash._.flatten(methodMapping.payloadParams.required);
30
+
31
+ if (methodMapping.payloadParams.optional) {
32
+ allParams = allParams.concat(_lodash._.flatten(methodMapping.payloadParams.optional));
33
+ }
34
+
35
+ for (let param of allParams) {
36
+ shasum.update(param);
37
+ }
38
+
39
+ if (methodMapping.payloadParams.wrap) {
40
+ shasum.update('skip');
41
+ shasum.update(methodMapping.payloadParams.wrap);
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ let hash = shasum.digest('hex').substring(0, 8);
48
+ hash.should.equal('ccbdbf87');
49
+ });
50
+ });
51
+ describe('check route to command name conversion', function () {
52
+ it('should properly lookup correct command name for endpoint with session', function () {
53
+ const cmdName = (0, _protocol.routeToCommandName)('/timeouts', 'POST');
54
+ cmdName.should.equal('timeouts');
55
+ });
56
+ it('should properly lookup correct command name for endpoint with session', function () {
57
+ const cmdName = (0, _protocol.routeToCommandName)('/timeouts/implicit_wait', 'POST');
58
+ cmdName.should.equal('implicitWait');
59
+ });
60
+ it('should properly lookup correct command name for endpoint without session', function () {
61
+ const cmdName = (0, _protocol.routeToCommandName)('/status', 'GET');
62
+ cmdName.should.equal('getStatus');
63
+ });
64
+ it('should properly lookup correct command name for endpoint without leading slash', function () {
65
+ const cmdName = (0, _protocol.routeToCommandName)('status', 'GET');
66
+ cmdName.should.equal('getStatus');
67
+ });
68
+ it('should properly lookup correct command name for fully specified endpoint', function () {
69
+ const cmdName = (0, _protocol.routeToCommandName)('/status', 'GET');
70
+ cmdName.should.equal('getStatus');
71
+ });
72
+ it('should not find command name if incorrect input data has been specified', function () {
73
+ for (let [route, method] of [['/status', 'POST'], ['/xstatus', 'GET'], ['status', 'POST']]) {
74
+ const cmdName = (0, _protocol.routeToCommandName)(route, method);
75
+ chai.should().equal(cmdName, undefined);
76
+ }
77
+ });
78
+ });
79
+ });require('source-map-support').install();
80
+
81
+
82
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvcHJvdG9jb2wvcm91dGVzLXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJzaGFzdW0iLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwidXJsIiwidXJsTWFwcGluZyIsIl8iLCJ0b1BhaXJzIiwiTUVUSE9EX01BUCIsInVwZGF0ZSIsIm1ldGhvZCIsIm1ldGhvZE1hcHBpbmciLCJjb21tYW5kIiwicGF5bG9hZFBhcmFtcyIsImFsbFBhcmFtcyIsImZsYXR0ZW4iLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwiY29uY2F0IiwicGFyYW0iLCJ3cmFwIiwiaGFzaCIsImRpZ2VzdCIsInN1YnN0cmluZyIsInNob3VsZCIsImVxdWFsIiwiY21kTmFtZSIsInJvdXRlIiwiY2hhaSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBSUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBWTtBQUsvQkEsRUFBQUEsUUFBUSxDQUFDLDZCQUFELEVBQWdDLFlBQVk7QUFDbERDLElBQUFBLEVBQUUsQ0FBQyxtREFBRCxFQUFzRCxZQUFZO0FBQ2xFLFVBQUlDLE1BQU0sR0FBR0MsZ0JBQU9DLFVBQVAsQ0FBa0IsTUFBbEIsQ0FBYjs7QUFDQSxXQUFLLElBQUksQ0FBQ0MsR0FBRCxFQUFNQyxVQUFOLENBQVQsSUFBOEJDLFVBQUVDLE9BQUYsQ0FBVUMsb0JBQVYsQ0FBOUIsRUFBcUQ7QUFDbkRQLFFBQUFBLE1BQU0sQ0FBQ1EsTUFBUCxDQUFjTCxHQUFkOztBQUNBLGFBQUssSUFBSSxDQUFDTSxNQUFELEVBQVNDLGFBQVQsQ0FBVCxJQUFvQ0wsVUFBRUMsT0FBRixDQUFVRixVQUFWLENBQXBDLEVBQTJEO0FBQ3pESixVQUFBQSxNQUFNLENBQUNRLE1BQVAsQ0FBY0MsTUFBZDs7QUFDQSxjQUFJQyxhQUFhLENBQUNDLE9BQWxCLEVBQTJCO0FBQ3pCWCxZQUFBQSxNQUFNLENBQUNRLE1BQVAsQ0FBY0UsYUFBYSxDQUFDQyxP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MUIsQ0FBaEI7QUFDQWtCLFFBQUFBLElBQUksQ0FBQ0osTUFBTCxHQUFjQyxLQUFkLENBQW9CQyxPQUFwQixFQUE2QkcsU0FBN0I7QUFDRDtBQUNGLEtBTEMsQ0FBRjtBQU1ELEdBaENPLENBQVI7QUFrQ0QsQ0F0RU8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgeyBfIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1FVEhPRF9NQVAsIHJvdXRlVG9Db21tYW5kTmFtZSB9IGZyb20gJy4uLy4uL2xpYi9wcm90b2NvbCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cblxuXG5kZXNjcmliZSgnUHJvdG9jb2wnLCBmdW5jdGlvbiAoKSB7XG5cbiAgLy8gVE9ETyB0ZXN0IGFnYWluc3QgYW4gZXhwbGljaXQgcHJvdG9jb2wgcmF0aGVyIHRoYW4gYSBoYXNoIG9mIGEgcHJldmlvdXNcbiAgLy8gcHJvdG9jb2xcblxuICBkZXNjcmliZSgnZW5zdXJlIHByb3RvY29sIGNvbnNpc3RlbmN5JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbm90IGNoYW5nZSBwcm90b2NvbCBiZXR3ZWVuIHBhdGNoIHZlcnNpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNoYXN1bSA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICBmb3IgKGxldCBbdXJsLCB1cmxNYXBwaW5nXSBvZiBfLnRvUGFpcnMoTUVUSE9EX01BUCkpIHtcbiAgICAgICAgc2hhc3VtLnVwZGF0ZSh1cmwpO1xuICAgICAgICBmb3IgKGxldCBbbWV0aG9kLCBtZXRob2RNYXBwaW5nXSBvZiBfLnRvUGFpcnModXJsTWFwcGluZykpIHtcbiAgICAgICAgICBzaGFzdW0udXBkYXRlKG1ldGhvZCk7XG4gICAgICAgICAgaWYgKG1ldGhvZE1hcHBpbmcuY29tbWFuZCkge1xuICAgICAgICAgICAgc2hhc3VtLnVwZGF0ZShtZXRob2RNYXBwaW5nLmNvbW1hbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWV0aG9kTWFwcGluZy5wYXlsb2FkUGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYWxsUGFyYW1zID0gXy5mbGF0dGVuKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy5yZXF1aXJlZCk7XG4gICAgICAgICAgICBpZiAobWV0aG9kTWFwcGluZy5wYXlsb2FkUGFyYW1zLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgIGFsbFBhcmFtcyA9IGFsbFBhcmFtcy5jb25jYXQoXy5mbGF0dGVuKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy5vcHRpb25hbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgcGFyYW0gb2YgYWxsUGFyYW1zKSB7XG4gICAgICAgICAgICAgIHNoYXN1bS51cGRhdGUocGFyYW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy53cmFwKSB7XG4gICAgICAgICAgICAgIHNoYXN1bS51cGRhdGUoJ3NraXAnKTtcbiAgICAgICAgICAgICAgc2hhc3VtLnVwZGF0ZShtZXRob2RNYXBwaW5nLnBheWxvYWRQYXJhbXMud3JhcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgaGFzaCA9IHNoYXN1bS5kaWdlc3QoJ2hleCcpLnN1YnN0cmluZygwLCA4KTtcbiAgICAgIC8vIE1vZGlmeSB0aGUgaGFzaCB3aGVuZXZlciB0aGUgcHJvdG9jb2wgaGFzIGludGVudGlvbmFsbHkgYmVlbiBtb2RpZmllZC5cbiAgICAgIGhhc2guc2hvdWxkLmVxdWFsKCdjY2JkYmY4NycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY2hlY2sgcm91dGUgdG8gY29tbWFuZCBuYW1lIGNvbnZlcnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBwcm9wZXJseSBsb29rdXAgY29ycmVjdCBjb21tYW5kIG5hbWUgZm9yIGVuZHBvaW50IHdpdGggc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNtZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUoJy90aW1lb3V0cycsICdQT1NUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgndGltZW91dHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvcGVybHkgbG9va3VwIGNvcnJlY3QgY29tbWFuZCBuYW1lIGZvciBlbmRwb2ludCB3aXRoIHNlc3Npb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKCcvdGltZW91dHMvaW1wbGljaXRfd2FpdCcsICdQT1NUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgnaW1wbGljaXRXYWl0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IGxvb2t1cCBjb3JyZWN0IGNvbW1hbmQgbmFtZSBmb3IgZW5kcG9pbnQgd2l0aG91dCBzZXNzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgIGNtZE5hbWUuc2hvdWxkLmVxdWFsKCdnZXRTdGF0dXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvcGVybHkgbG9va3VwIGNvcnJlY3QgY29tbWFuZCBuYW1lIGZvciBlbmRwb2ludCB3aXRob3V0IGxlYWRpbmcgc2xhc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKCdzdGF0dXMnLCAnR0VUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IGxvb2t1cCBjb3JyZWN0IGNvbW1hbmQgbmFtZSBmb3IgZnVsbHkgc3BlY2lmaWVkIGVuZHBvaW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgIGNtZE5hbWUuc2hvdWxkLmVxdWFsKCdnZXRTdGF0dXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgY29tbWFuZCBuYW1lIGlmIGluY29ycmVjdCBpbnB1dCBkYXRhIGhhcyBiZWVuIHNwZWNpZmllZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAobGV0IFtyb3V0ZSwgbWV0aG9kXSBvZiBbWycvc3RhdHVzJywgJ1BPU1QnXSwgWycveHN0YXR1cycsICdHRVQnXSwgWydzdGF0dXMnLCAnUE9TVCddXSkge1xuICAgICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKHJvdXRlLCBtZXRob2QpO1xuICAgICAgICBjaGFpLnNob3VsZCgpLmVxdWFsKGNtZE5hbWUsIHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiJdLCJmaWxlIjoidGVzdC9wcm90b2NvbC9yb3V0ZXMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -0,0 +1,151 @@
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
+ });require('source-map-support').install();
149
+
150
+
151
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvcHJvdG9jb2wvdmFsaWRhdG9yLXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJ2YWxpZGF0b3JzIiwic2V0VXJsIiwic2hvdWxkIiwidGhyb3ciLCJub3QiLCJpbXBsaWNpdFdhaXQiLCJhc3luY1NjcmlwdFRpbWVvdXQiLCJjbGlja0N1cnJlbnQiLCJzZXROZXR3b3JrQ29ubmVjdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBOztBQUlBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQVk7QUFDL0JBLEVBQUFBLFFBQVEsQ0FBQyxrQkFBRCxFQUFxQixZQUFZO0FBRXZDQSxJQUFBQSxRQUFRLENBQUMsUUFBRCxFQUFXLFlBQVk7QUFDN0JDLE1BQUFBLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxZQUFZO0FBQy9DLFNBQUMsTUFBTTtBQUFDQyxpQ0FBV0MsTUFBWDtBQUFxQixTQUE3QixFQUErQkMsTUFBL0IsQ0FBc0NDLEtBQXRDLENBQTRDLE1BQTVDO0FBQ0QsT0FGQyxDQUFGO0FBR0FKLE1BQUFBLEVBQUUsQ0FBQyxvQ0FBRCxFQUF1QyxZQUFZO0FBQ25ELFNBQUMsTUFBTTtBQUFDQyxpQ0FBV0MsTUFBWCxDQUFrQixLQUFsQjtBQUEwQixTQUFsQyxFQUFvQ0MsTUFBcEMsQ0FBMkNDLEtBQTNDLENBQWlELE1BQWpEO0FBQ0QsT0FGQyxDQUFGO0FBR0FKLE1BQUFBLEVBQUUsQ0FBQyxrREFBRCxFQUFxRCxZQUFZO0FBQ2pFLFNBQUMsTUFBTTtBQUFDQyxpQ0FBV0MsTUFBWCxDQUFrQixrQkFBbEI7QUFBdUMsU0FBL0MsRUFBaURDLE1BQWpELENBQXdERSxHQUF4RCxDQUE0REQsS0FBNUQ7QUFDRCxPQUZDLENBQUY7QUFHQUosTUFBQUEsRUFBRSxDQUFDLGtEQUFELEVBQXFELFlBQVk7QUFDakUsU0FBQyxNQUFNO0FBQUNDLGlDQUFXQyxNQUFYLENBQWtCLDZCQUFsQjtBQUFrRCxTQUExRCxFQUE0REMsTUFBNUQsQ0FBbUVFLEdBQW5F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cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IHsgdmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL2xpYi9wcm90b2NvbC92YWxpZGF0b3JzJztcblxuXG5cbmRlc2NyaWJlKCdQcm90b2NvbCcsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2RpcmVjdCB0byBkcml2ZXInLCBmdW5jdGlvbiAoKSB7XG5cbiAgICBkZXNjcmliZSgnc2V0VXJsJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gbm8gdXJsIHBhc3NlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldFVybCgpO30pLnNob3VsZC50aHJvdygvdXJsL2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBpbnZhbGlkIHVybCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldFVybCgnZm9vJyk7fSkuc2hvdWxkLnRocm93KC91cmwvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIHVybCBzdGFydGluZyB3aXRoIGh0dHAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXRVcmwoJ2h0dHA6Ly9hcHBpdW0uaW8nKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGFuIGFuZHJvaWQtbGlrZSBzY2hlbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXRVcmwoJ2NvbnRlbnQ6Ly9jb250YWN0cy9wZW9wbGUvMScpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdpdGggaHlwaGVucyBkb3RzIGFuZCBwbHVzIGNoYXJzIGluIHRoZSBzY2hlbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5zZXRVcmwoJ215LWFwcC5hK2I6Ly9sb2dpbicpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYW4gYWJvdXQgc2NoZW1lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0VXJsKCdhYm91dDpibGFuaycpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYSBkYXRhIHNjaGVtZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldFVybCgnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PC9odG1sPicpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdpbXBsaWNpdFdhaXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBubyBtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmltcGxpY2l0V2FpdCgpO30pLnNob3VsZC50aHJvdygvbXMvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGdpdmVuIGEgbm9uLW51bWVyaWMgbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5pbXBsaWNpdFdhaXQoJ2ZpdmUnKTt9KS5zaG91bGQudGhyb3coL21zL2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBhIG5lZ2F0aXZlIG1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuaW1wbGljaXRXYWl0KC0xKTt9KS5zaG91bGQudGhyb3coL21zL2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgd2hlbiBnaXZlbiBhbiBtcyBvZiAwJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuaW1wbGljaXRXYWl0KDApO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYW4gbXMgZ3JlYXRlciB0aGFuIDAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5pbXBsaWNpdFdhaXQoMTAwKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnYXN5bmNTY3JpcHRUaW1lb3V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gbm8gbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5hc3luY1NjcmlwdFRpbWVvdXQoKTt9KS5zaG91bGQudGhyb3coL21zL2kpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBhIG5vbi1udW1lcmljIG1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuYXN5bmNTY3JpcHRUaW1lb3V0KCdmaXZlJyk7fSkuc2hvdWxkLnRocm93KC9tcy9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gZ2l2ZW4gYSBuZWdhdGl2ZSBtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmFzeW5jU2NyaXB0VGltZW91dCgtMSk7fSkuc2hvdWxkLnRocm93KC9tcy9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYW4gbXMgb2YgMCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmFzeW5jU2NyaXB0VGltZW91dCgwKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3VjY2VlZCB3aGVuIGdpdmVuIGFuIG1zIGdyZWF0ZXIgdGhhbiAwJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuYXN5bmNTY3JpcHRUaW1lb3V0KDEwMCk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ2NsaWNrQ3VycmVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGdpdmVuIGFuIGludmFsaWQgYnV0dG9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuY2xpY2tDdXJyZW50KDQpO30pLnNob3VsZC50aHJvdygvMCwgMSwgb3IgMi9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYSB2YWxpZCBidXR0b24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB7dmFsaWRhdG9ycy5jbGlja0N1cnJlbnQoMCk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuY2xpY2tDdXJyZW50KDEpO30pLnNob3VsZC5ub3QudGhyb3coKTtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLmNsaWNrQ3VycmVudCgyKTt9KS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnc2V0TmV0d29ya0Nvbm5lY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBnaXZlbiBubyB0eXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0TmV0d29ya0Nvbm5lY3Rpb24oKTt9KS5zaG91bGQudGhyb3coLzAsIDEsIDIsIDQsIDYvaSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGdpdmVuIGFuIGludmFsaWQgdHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHt2YWxpZGF0b3JzLnNldE5ldHdvcmtDb25uZWN0aW9uKDgpO30pLnNob3VsZC50aHJvdygvMCwgMSwgMiwgNCwgNi9pKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHdoZW4gZ2l2ZW4gYSB2YWxpZCB0eXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0TmV0d29ya0Nvbm5lY3Rpb24oMCk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0TmV0d29ya0Nvbm5lY3Rpb24oMSk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0TmV0d29ya0Nvbm5lY3Rpb24oMik7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0TmV0d29ya0Nvbm5lY3Rpb24oNCk7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgICAoKCkgPT4ge3ZhbGlkYXRvcnMuc2V0TmV0d29ya0Nvbm5lY3Rpb24oNik7fSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvcHJvdG9jb2wvdmFsaWRhdG9yLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
package/index.d.ts CHANGED
@@ -173,7 +173,6 @@ declare class BaseDriver {
173
173
  updateSettings(newSettings: Record<string, unknown>): Promise<void>;
174
174
  getSettings(): Promise<Record<string, unknown>>;
175
175
  receiveAsyncResponse?(response: unknown): Promise<void>;
176
- executeDriverScript(script: string, scriptType?: string, timeout?: number): Promise<unknown>;
177
176
  getLogEvents(type?: string | string[]): {};
178
177
  logCustomEvent(vendor: string, event: string): void;
179
178
  setClipboard?(content: string, contentType?: string, label?: string): Promise<void>;
package/index.js CHANGED
@@ -1,62 +1 @@
1
- // transpile:main
2
-
3
- // BaseDriver exports
4
- import * as driver from './lib/basedriver/driver';
5
- import * as deviceSettings from './lib/basedriver/device-settings';
6
-
7
- const { BaseDriver } = driver;
8
- const { DeviceSettings, BASEDRIVER_HANDLED_SETTINGS } = deviceSettings;
9
-
10
- export { BaseDriver, DeviceSettings, BASEDRIVER_HANDLED_SETTINGS };
11
- export default BaseDriver;
12
-
13
-
14
- // MJSONWP exports
15
- import * as protocol from './lib/protocol';
16
- import {
17
- DEFAULT_BASE_PATH, PROTOCOLS
18
- } from './lib/constants';
19
-
20
- const {
21
- Protocol, routeConfiguringFunction, errors, isErrorType,
22
- errorFromMJSONWPStatusCode, errorFromW3CJsonCode, ALL_COMMANDS, METHOD_MAP,
23
- routeToCommandName, NO_SESSION_ID_COMMANDS, isSessionCommand,
24
- normalizeBasePath, determineProtocol, CREATE_SESSION_COMMAND, DELETE_SESSION_COMMAND,
25
- } = protocol;
26
-
27
- export {
28
- Protocol, routeConfiguringFunction, errors, isErrorType, PROTOCOLS,
29
- errorFromMJSONWPStatusCode, errorFromW3CJsonCode, determineProtocol,
30
- errorFromMJSONWPStatusCode as errorFromCode, ALL_COMMANDS, METHOD_MAP,
31
- routeToCommandName, NO_SESSION_ID_COMMANDS, isSessionCommand,
32
- DEFAULT_BASE_PATH, normalizeBasePath, CREATE_SESSION_COMMAND, DELETE_SESSION_COMMAND
33
- };
34
-
35
- // Express exports
36
- import * as staticIndex from './lib/express/static';
37
- const { STATIC_DIR } = staticIndex;
38
- export { STATIC_DIR };
39
-
40
- import * as serverIndex from './lib/express/server';
41
- const { server } = serverIndex;
42
- export { server };
43
-
44
- // jsonwp-proxy exports
45
- import * as proxyIndex from './lib/jsonwp-proxy/proxy';
46
- const { JWProxy } = proxyIndex;
47
- export { JWProxy };
48
-
49
- // jsonwp-status exports
50
- import * as statusIndex from './lib/jsonwp-status/status';
51
- const { codes: statusCodes, getSummaryByCode } = statusIndex;
52
- export { statusCodes, getSummaryByCode };
53
-
54
- // W3C capabilities parser
55
- import * as caps from './lib/basedriver/capabilities';
56
- const { processCapabilities, isStandardCap, validateCaps } = caps;
57
- export { processCapabilities, isStandardCap, validateCaps };
58
-
59
- // Web socket helpers
60
- import * as ws from './lib/express/websocket';
61
- const { DEFAULT_WS_PATHNAME_PREFIX } = ws;
62
- export { DEFAULT_WS_PATHNAME_PREFIX };
1
+ module.exports = require('./build/lib');
@@ -145,7 +145,10 @@ function parseCaps (caps, constraints = {}, shouldValidateCaps = true) {
145
145
  }
146
146
 
147
147
  // If an empty array as provided, we'll be forgiving and make it an array of one empty object
148
+ // In the future, reject 'firstMatch' argument if its array did not have one or more entries (#3.2)
148
149
  if (allFirstMatchCaps.length === 0) {
150
+ log.warn(`The firstMatch array in the given capabilities has no entries. Adding an empty entry fo rnow, ` +
151
+ `but it will require one or more entries as W3C spec.`);
149
152
  allFirstMatchCaps.push({});
150
153
  }
151
154
 
@@ -3,7 +3,6 @@ import settingsCmds from './settings';
3
3
  import timeoutCmds from './timeout';
4
4
  import findCmds from './find';
5
5
  import logCmds from './log';
6
- import executeCmds from './execute';
7
6
  import eventCmds from './event';
8
7
 
9
8
 
@@ -16,7 +15,6 @@ Object.assign(
16
15
  timeoutCmds,
17
16
  findCmds,
18
17
  logCmds,
19
- executeCmds,
20
18
  eventCmds,
21
19
  // add other command types here
22
20
  );
@@ -1,5 +1,5 @@
1
1
  import {
2
- Protocol, errors, determineProtocol
2
+ Protocol, errors, determineProtocol, DELETE_SESSION_COMMAND,
3
3
  } from '../protocol';
4
4
  import { fs } from '@appium/support';
5
5
  import { PROTOCOLS, DEFAULT_BASE_PATH } from '../constants';
@@ -311,7 +311,7 @@ class BaseDriver extends Protocol {
311
311
  // If creating a session determine if W3C or MJSONWP protocol was requested and remember the choice
312
312
  this.protocol = determineProtocol(...args);
313
313
  this.logEvent(EVENT_SESSION_INIT);
314
- } else if (cmd === 'deleteSession') {
314
+ } else if (cmd === DELETE_SESSION_COMMAND) {
315
315
  this.logEvent(EVENT_SESSION_QUIT_START);
316
316
  }
317
317
 
@@ -342,7 +342,7 @@ class BaseDriver extends Protocol {
342
342
  unexpectedShutdownListener = null;
343
343
  }
344
344
  });
345
- const res = this.isCommandsQueueEnabled && cmd !== 'executeDriverScript'
345
+ const res = this.isCommandsQueueEnabled
346
346
  ? await this.commandsQueueGuard.acquire(BaseDriver.name, commandExecutor)
347
347
  : await commandExecutor();
348
348
 
@@ -352,7 +352,7 @@ class BaseDriver extends Protocol {
352
352
  // automatic session deletion in this.onCommandTimeout. Of course we don't
353
353
  // want to trigger the timer when the user is shutting down the session
354
354
  // intentionally
355
- if (this.isCommandsQueueEnabled && cmd !== 'deleteSession') {
355
+ if (this.isCommandsQueueEnabled && cmd !== DELETE_SESSION_COMMAND) {
356
356
  // resetting existing timeout
357
357
  this.startNewCommandTimeout();
358
358
  }
@@ -362,7 +362,7 @@ class BaseDriver extends Protocol {
362
362
  this._eventHistory.commands.push({cmd, startTime, endTime});
363
363
  if (cmd === 'createSession') {
364
364
  this.logEvent(EVENT_SESSION_START);
365
- } else if (cmd === 'deleteSession') {
365
+ } else if (cmd === DELETE_SESSION_COMMAND) {
366
366
  this.logEvent(EVENT_SESSION_QUIT_DONE);
367
367
  }
368
368