@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.
- package/build/lib/basedriver/capabilities.js +2 -4
- package/build/lib/basedriver/commands/event.js +2 -4
- package/build/lib/basedriver/commands/find.js +2 -4
- package/build/lib/basedriver/commands/index.js +2 -4
- package/build/lib/basedriver/commands/log.js +2 -4
- package/build/lib/basedriver/commands/session.js +2 -4
- package/build/lib/basedriver/commands/settings.js +2 -4
- package/build/lib/basedriver/commands/timeout.js +2 -4
- package/build/lib/basedriver/desired-caps.js +2 -4
- package/build/lib/basedriver/device-settings.js +2 -4
- package/build/lib/basedriver/driver.js +17 -6
- package/build/lib/basedriver/helpers.js +2 -4
- package/build/lib/basedriver/logger.js +2 -4
- package/build/lib/constants.js +2 -4
- package/build/lib/express/crash.js +2 -4
- package/build/lib/express/express-logging.js +2 -4
- package/build/lib/express/idempotency.js +2 -4
- package/build/lib/express/logger.js +2 -4
- package/build/lib/express/middleware.js +2 -4
- package/build/lib/express/server.js +2 -4
- package/build/lib/express/static.js +2 -4
- package/build/lib/express/websocket.js +2 -4
- package/build/lib/helpers/capabilities.js +2 -4
- package/build/lib/index.js +2 -4
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
- package/build/lib/jsonwp-proxy/proxy.js +2 -4
- package/build/lib/jsonwp-status/status.js +2 -4
- package/build/lib/protocol/errors.js +2 -4
- package/build/lib/protocol/helpers.js +2 -4
- package/build/lib/protocol/index.js +2 -4
- package/build/lib/protocol/protocol.js +2 -4
- package/build/lib/protocol/routes.js +2 -4
- package/build/lib/protocol/validators.js +2 -4
- package/build/test/basedriver/README.md +5 -0
- package/build/test/basedriver/driver-e2e-tests.js +2 -4
- package/build/test/basedriver/driver-tests.js +2 -4
- package/build/test/basedriver/index.js +2 -4
- package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +82 -0
- package/build/test/e2e/express/server.e2e.spec.js +159 -0
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
- package/build/test/e2e/protocol/fake-driver.js +163 -0
- package/build/test/e2e/protocol/helpers.js +25 -0
- package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
- package/build/test/helpers.js +2 -4
- package/build/test/unit/basedriver/capabilities.spec.js +672 -0
- package/build/test/unit/basedriver/capability.spec.js +353 -0
- package/build/test/unit/basedriver/commands/event.spec.js +110 -0
- package/build/test/unit/basedriver/commands/log.spec.js +85 -0
- package/build/test/unit/basedriver/driver.spec.js +15 -0
- package/build/test/unit/basedriver/helpers.spec.js +151 -0
- package/build/test/unit/basedriver/timeout.spec.js +135 -0
- package/build/test/unit/express/server.spec.js +155 -0
- package/build/test/unit/express/static.spec.js +26 -0
- package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
- package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
- package/build/test/unit/jsonwp-status/status.spec.js +34 -0
- package/build/test/unit/protocol/errors.spec.js +390 -0
- package/build/test/unit/protocol/routes.spec.js +80 -0
- package/build/test/unit/protocol/validator.spec.js +149 -0
- package/lib/basedriver/driver.js +15 -4
- package/package.json +14 -9
- package/test/basedriver/README.md +5 -0
- package/test/basedriver/driver-e2e-tests.js +1 -1
- package/build/test/basedriver/capabilities-specs.js +0 -674
- package/build/test/basedriver/capability-specs.js +0 -355
- package/build/test/basedriver/commands/event-specs.js +0 -112
- package/build/test/basedriver/commands/log-specs.js +0 -87
- package/build/test/basedriver/driver-e2e-specs.js +0 -17
- package/build/test/basedriver/driver-specs.js +0 -17
- package/build/test/basedriver/helpers-e2e-specs.js +0 -194
- package/build/test/basedriver/helpers-specs.js +0 -153
- package/build/test/basedriver/timeout-specs.js +0 -137
- package/build/test/basedriver/websockets-e2e-specs.js +0 -84
- package/build/test/express/server-e2e-specs.js +0 -161
- package/build/test/express/server-specs.js +0 -157
- package/build/test/express/static-specs.js +0 -28
- package/build/test/jsonwp-proxy/mock-request.js +0 -93
- package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
- package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
- package/build/test/jsonwp-proxy/url-specs.js +0 -167
- package/build/test/jsonwp-status/status-specs.js +0 -36
- package/build/test/protocol/errors-specs.js +0 -388
- package/build/test/protocol/fake-driver.js +0 -165
- package/build/test/protocol/helpers.js +0 -27
- package/build/test/protocol/protocol-e2e-specs.js +0 -1188
- package/build/test/protocol/routes-specs.js +0 -82
- package/build/test/protocol/validator-specs.js +0 -151
- package/test/basedriver/capabilities-specs.js +0 -537
- package/test/basedriver/capability-specs.js +0 -383
- package/test/basedriver/commands/event-specs.js +0 -74
- package/test/basedriver/commands/log-specs.js +0 -79
- package/test/basedriver/driver-e2e-specs.js +0 -8
- package/test/basedriver/driver-specs.js +0 -8
- package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
- package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
- package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
- package/test/basedriver/fixtures/custom-element-finder.js +0 -29
- package/test/basedriver/helpers-e2e-specs.js +0 -187
- package/test/basedriver/helpers-specs.js +0 -137
- package/test/basedriver/timeout-specs.js +0 -128
- package/test/basedriver/websockets-e2e-specs.js +0 -75
|
@@ -1,82 +0,0 @@
|
|
|
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('262ca3c4');
|
|
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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MUIsQ0FBaEI7QUFDQWtCLFFBQUFBLElBQUksQ0FBQ0osTUFBTCxHQUFjQyxLQUFkLENBQW9CQyxPQUFwQixFQUE2QkcsU0FBN0I7QUFDRDtBQUNGLEtBTEMsQ0FBRjtBQU1ELEdBaENPLENBQVI7QUFrQ0QsQ0F0RU8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgeyBfIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1FVEhPRF9NQVAsIHJvdXRlVG9Db21tYW5kTmFtZSB9IGZyb20gJy4uLy4uL2xpYi9wcm90b2NvbCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cblxuXG5kZXNjcmliZSgnUHJvdG9jb2wnLCBmdW5jdGlvbiAoKSB7XG5cbiAgLy8gVE9ETyB0ZXN0IGFnYWluc3QgYW4gZXhwbGljaXQgcHJvdG9jb2wgcmF0aGVyIHRoYW4gYSBoYXNoIG9mIGEgcHJldmlvdXNcbiAgLy8gcHJvdG9jb2xcblxuICBkZXNjcmliZSgnZW5zdXJlIHByb3RvY29sIGNvbnNpc3RlbmN5JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbm90IGNoYW5nZSBwcm90b2NvbCBiZXR3ZWVuIHBhdGNoIHZlcnNpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNoYXN1bSA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICBmb3IgKGxldCBbdXJsLCB1cmxNYXBwaW5nXSBvZiBfLnRvUGFpcnMoTUVUSE9EX01BUCkpIHtcbiAgICAgICAgc2hhc3VtLnVwZGF0ZSh1cmwpO1xuICAgICAgICBmb3IgKGxldCBbbWV0aG9kLCBtZXRob2RNYXBwaW5nXSBvZiBfLnRvUGFpcnModXJsTWFwcGluZykpIHtcbiAgICAgICAgICBzaGFzdW0udXBkYXRlKG1ldGhvZCk7XG4gICAgICAgICAgaWYgKG1ldGhvZE1hcHBpbmcuY29tbWFuZCkge1xuICAgICAgICAgICAgc2hhc3VtLnVwZGF0ZShtZXRob2RNYXBwaW5nLmNvbW1hbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWV0aG9kTWFwcGluZy5wYXlsb2FkUGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYWxsUGFyYW1zID0gXy5mbGF0dGVuKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy5yZXF1aXJlZCk7XG4gICAgICAgICAgICBpZiAobWV0aG9kTWFwcGluZy5wYXlsb2FkUGFyYW1zLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgIGFsbFBhcmFtcyA9IGFsbFBhcmFtcy5jb25jYXQoXy5mbGF0dGVuKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy5vcHRpb25hbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgcGFyYW0gb2YgYWxsUGFyYW1zKSB7XG4gICAgICAgICAgICAgIHNoYXN1bS51cGRhdGUocGFyYW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1ldGhvZE1hcHBpbmcucGF5bG9hZFBhcmFtcy53cmFwKSB7XG4gICAgICAgICAgICAgIHNoYXN1bS51cGRhdGUoJ3NraXAnKTtcbiAgICAgICAgICAgICAgc2hhc3VtLnVwZGF0ZShtZXRob2RNYXBwaW5nLnBheWxvYWRQYXJhbXMud3JhcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgaGFzaCA9IHNoYXN1bS5kaWdlc3QoJ2hleCcpLnN1YnN0cmluZygwLCA4KTtcbiAgICAgIC8vIE1vZGlmeSB0aGUgaGFzaCB3aGVuZXZlciB0aGUgcHJvdG9jb2wgaGFzIGludGVudGlvbmFsbHkgYmVlbiBtb2RpZmllZC5cbiAgICAgIGhhc2guc2hvdWxkLmVxdWFsKCcyNjJjYTNjNCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY2hlY2sgcm91dGUgdG8gY29tbWFuZCBuYW1lIGNvbnZlcnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBwcm9wZXJseSBsb29rdXAgY29ycmVjdCBjb21tYW5kIG5hbWUgZm9yIGVuZHBvaW50IHdpdGggc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNtZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUoJy90aW1lb3V0cycsICdQT1NUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgndGltZW91dHMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvcGVybHkgbG9va3VwIGNvcnJlY3QgY29tbWFuZCBuYW1lIGZvciBlbmRwb2ludCB3aXRoIHNlc3Npb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKCcvdGltZW91dHMvaW1wbGljaXRfd2FpdCcsICdQT1NUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgnaW1wbGljaXRXYWl0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IGxvb2t1cCBjb3JyZWN0IGNvbW1hbmQgbmFtZSBmb3IgZW5kcG9pbnQgd2l0aG91dCBzZXNzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgIGNtZE5hbWUuc2hvdWxkLmVxdWFsKCdnZXRTdGF0dXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvcGVybHkgbG9va3VwIGNvcnJlY3QgY29tbWFuZCBuYW1lIGZvciBlbmRwb2ludCB3aXRob3V0IGxlYWRpbmcgc2xhc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKCdzdGF0dXMnLCAnR0VUJyk7XG4gICAgICBjbWROYW1lLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb3Blcmx5IGxvb2t1cCBjb3JyZWN0IGNvbW1hbmQgbmFtZSBmb3IgZnVsbHkgc3BlY2lmaWVkIGVuZHBvaW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY21kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgIGNtZE5hbWUuc2hvdWxkLmVxdWFsKCdnZXRTdGF0dXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgY29tbWFuZCBuYW1lIGlmIGluY29ycmVjdCBpbnB1dCBkYXRhIGhhcyBiZWVuIHNwZWNpZmllZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAobGV0IFtyb3V0ZSwgbWV0aG9kXSBvZiBbWycvc3RhdHVzJywgJ1BPU1QnXSwgWycveHN0YXR1cycsICdHRVQnXSwgWydzdGF0dXMnLCAnUE9TVCddXSkge1xuICAgICAgICBjb25zdCBjbWROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKHJvdXRlLCBtZXRob2QpO1xuICAgICAgICBjaGFpLnNob3VsZCgpLmVxdWFsKGNtZE5hbWUsIHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiJdLCJmaWxlIjoidGVzdC9wcm90b2NvbC9yb3V0ZXMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -1,151 +0,0 @@
|
|
|
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=
|