@appium/fake-driver 3.0.5 → 3.2.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.
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("source-map-support/register");
6
+
7
+ var _lodash = _interopRequireDefault(require("lodash"));
8
+
9
+ var _lib = require("../lib");
10
+
11
+ var _helpers = require("./helpers");
12
+
13
+ var _basedriver = require("@appium/base-driver/build/test/basedriver");
14
+
15
+ (0, _basedriver.baseDriverUnitTests)(_lib.FakeDriver, _lodash.default.cloneDeep(_helpers.W3C_PREFIXED_CAPS));
16
+ describe('FakeDriver', function () {
17
+ it('should not start a session when a unique session is already running', async function () {
18
+ let d1 = new _lib.FakeDriver();
19
+ let [uniqueSession] = await d1.createSession(null, null, {
20
+ alwaysMatch: { ..._lodash.default.cloneDeep(_helpers.W3C_PREFIXED_CAPS),
21
+ 'appium:uniqueApp': true
22
+ },
23
+ firstMatch: [{}]
24
+ });
25
+ uniqueSession.should.be.a('string');
26
+ let d2 = new _lib.FakeDriver();
27
+ let otherSessionData = [d1.driverData];
28
+
29
+ try {
30
+ await d2.createSession(null, null, _lodash.default.cloneDeep(_helpers.W3C_CAPS), otherSessionData).should.eventually.be.rejectedWith(/unique/);
31
+ } finally {
32
+ await d1.deleteSession(uniqueSession);
33
+ }
34
+ });
35
+ it('should start a new session when another non-unique session is running', async function () {
36
+ let d1 = new _lib.FakeDriver();
37
+ let [session1Id] = await d1.createSession(null, null, _lodash.default.cloneDeep(_helpers.W3C_CAPS));
38
+ session1Id.should.be.a('string');
39
+ let d2 = new _lib.FakeDriver();
40
+ let [session2Id] = await d2.createSession(null, null, _lodash.default.cloneDeep(_helpers.W3C_CAPS));
41
+ session2Id.should.be.a('string');
42
+ session1Id.should.not.equal(session2Id);
43
+ await d1.deleteSession(session1Id);
44
+ await d2.deleteSession(session2Id);
45
+ });
46
+ });require('source-map-support').install();
47
+
48
+
49
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZHJpdmVyLXNwZWNzLmpzIl0sIm5hbWVzIjpbIkZha2VEcml2ZXIiLCJfIiwiY2xvbmVEZWVwIiwiVzNDX1BSRUZJWEVEX0NBUFMiLCJkZXNjcmliZSIsIml0IiwiZDEiLCJ1bmlxdWVTZXNzaW9uIiwiY3JlYXRlU2Vzc2lvbiIsImFsd2F5c01hdGNoIiwiZmlyc3RNYXRjaCIsInNob3VsZCIsImJlIiwiYSIsImQyIiwib3RoZXJTZXNzaW9uRGF0YSIsImRyaXZlckRhdGEiLCJXM0NfQ0FQUyIsImV2ZW50dWFsbHkiLCJyZWplY3RlZFdpdGgiLCJkZWxldGVTZXNzaW9uIiwic2Vzc2lvbjFJZCIsInNlc3Npb24ySWQiLCJub3QiLCJlcXVhbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUEscUNBQW9CQSxlQUFwQixFQUFnQ0MsZ0JBQUVDLFNBQUYsQ0FBWUMsMEJBQVosQ0FBaEM7QUFFQUMsUUFBUSxDQUFDLFlBQUQsRUFBZSxZQUFZO0FBQ2pDQyxFQUFBQSxFQUFFLENBQUMscUVBQUQsRUFBd0Usa0JBQWtCO0FBQzFGLFFBQUlDLEVBQUUsR0FBRyxJQUFJTixlQUFKLEVBQVQ7QUFDQSxRQUFJLENBQUNPLGFBQUQsSUFBa0IsTUFBTUQsRUFBRSxDQUFDRSxhQUFILENBQWlCLElBQWpCLEVBQXVCLElBQXZCLEVBQTZCO0FBQ3ZEQyxNQUFBQSxXQUFXLEVBQUUsRUFBRSxHQUFHUixnQkFBRUMsU0FBRixDQUFZQywwQkFBWixDQUFMO0FBQXFDLDRCQUFvQjtBQUF6RCxPQUQwQztBQUV2RE8sTUFBQUEsVUFBVSxFQUFFLENBQUMsRUFBRDtBQUYyQyxLQUE3QixDQUE1QjtBQUlBSCxJQUFBQSxhQUFhLENBQUNJLE1BQWQsQ0FBcUJDLEVBQXJCLENBQXdCQyxDQUF4QixDQUEwQixRQUExQjtBQUNBLFFBQUlDLEVBQUUsR0FBRyxJQUFJZCxlQUFKLEVBQVQ7QUFDQSxRQUFJZSxnQkFBZ0IsR0FBRyxDQUFDVCxFQUFFLENBQUNVLFVBQUosQ0FBdkI7O0FBQ0EsUUFBSTtBQUNGLFlBQU1GLEVBQUUsQ0FDTE4sYUFERyxDQUVGLElBRkUsRUFHRixJQUhFLEVBSUZQLGdCQUFFQyxTQUFGLENBQVllLGlCQUFaLENBSkUsRUFLRkYsZ0JBTEUsRUFPSEosTUFQRyxDQU9JTyxVQVBKLENBT2VOLEVBUGYsQ0FPa0JPLFlBUGxCLENBTytCLFFBUC9CLENBQU47QUFRRCxLQVRELFNBU1U7QUFDUixZQUFNYixFQUFFLENBQUNjLGFBQUgsQ0FBaUJiLGFBQWpCLENBQU47QUFDRDtBQUNGLEdBckJDLENBQUY7QUFzQkFGLEVBQUFBLEVBQUUsQ0FBQyx1RUFBRCxFQUEwRSxrQkFBa0I7QUFDNUYsUUFBSUMsRUFBRSxHQUFHLElBQUlOLGVBQUosRUFBVDtBQUNBLFFBQUksQ0FBQ3FCLFVBQUQsSUFBZSxNQUFNZixFQUFFLENBQUNFLGFBQUgsQ0FBaUIsSUFBakIsRUFBdUIsSUFBdkIsRUFBNkJQLGdCQUFFQyxTQUFGLENBQVllLGlCQUFaLENBQTdCLENBQXpCO0FBQ0FJLElBQUFBLFVBQVUsQ0FBQ1YsTUFBWCxDQUFrQkMsRUFBbEIsQ0FBcUJDLENBQXJCLENBQXVCLFFBQXZCO0FBQ0EsUUFBSUMsRUFBRSxHQUFHLElBQUlkLGVBQUosRUFBVDtBQUNBLFFBQUksQ0FBQ3NCLFVBQUQsSUFBZSxNQUFNUixFQUFFLENBQUNOLGFBQUgsQ0FBaUIsSUFBakIsRUFBdUIsSUFBdkIsRUFBNkJQLGdCQUFFQyxTQUFGLENBQVllLGlCQUFaLENBQTdCLENBQXpCO0FBQ0FLLElBQUFBLFVBQVUsQ0FBQ1gsTUFBWCxDQUFrQkMsRUFBbEIsQ0FBcUJDLENBQXJCLENBQXVCLFFBQXZCO0FBQ0FRLElBQUFBLFVBQVUsQ0FBQ1YsTUFBWCxDQUFrQlksR0FBbEIsQ0FBc0JDLEtBQXRCLENBQTRCRixVQUE1QjtBQUNBLFVBQU1oQixFQUFFLENBQUNjLGFBQUgsQ0FBaUJDLFVBQWpCLENBQU47QUFDQSxVQUFNUCxFQUFFLENBQUNNLGFBQUgsQ0FBaUJFLFVBQWpCLENBQU47QUFDRCxHQVZDLENBQUY7QUFXRCxDQWxDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBGYWtlRHJpdmVyIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IFczQ19DQVBTLCBXM0NfUFJFRklYRURfQ0FQUyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBiYXNlRHJpdmVyVW5pdFRlc3RzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlci9idWlsZC90ZXN0L2Jhc2Vkcml2ZXInO1xuXG5cbi8vIHRlc3QgdGhlIHNhbWUgdGhpbmdzIGFzIGZvciBiYXNlIGRyaXZlclxuYmFzZURyaXZlclVuaXRUZXN0cyhGYWtlRHJpdmVyLCBfLmNsb25lRGVlcChXM0NfUFJFRklYRURfQ0FQUykpO1xuXG5kZXNjcmliZSgnRmFrZURyaXZlcicsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBub3Qgc3RhcnQgYSBzZXNzaW9uIHdoZW4gYSB1bmlxdWUgc2Vzc2lvbiBpcyBhbHJlYWR5IHJ1bm5pbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGQxID0gbmV3IEZha2VEcml2ZXIoKTtcbiAgICBsZXQgW3VuaXF1ZVNlc3Npb25dID0gYXdhaXQgZDEuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDogeyAuLi5fLmNsb25lRGVlcChXM0NfUFJFRklYRURfQ0FQUyksICdhcHBpdW06dW5pcXVlQXBwJzogdHJ1ZSB9LFxuICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICB9KTtcbiAgICB1bmlxdWVTZXNzaW9uLnNob3VsZC5iZS5hKCdzdHJpbmcnKTtcbiAgICBsZXQgZDIgPSBuZXcgRmFrZURyaXZlcigpO1xuICAgIGxldCBvdGhlclNlc3Npb25EYXRhID0gW2QxLmRyaXZlckRhdGFdO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkMlxuICAgICAgICAuY3JlYXRlU2Vzc2lvbihcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgXy5jbG9uZURlZXAoVzNDX0NBUFMpLFxuICAgICAgICAgIG90aGVyU2Vzc2lvbkRhdGEsXG4gICAgICAgIClcbiAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvdW5pcXVlLyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGQxLmRlbGV0ZVNlc3Npb24odW5pcXVlU2Vzc2lvbik7XG4gICAgfVxuICB9KTtcbiAgaXQoJ3Nob3VsZCBzdGFydCBhIG5ldyBzZXNzaW9uIHdoZW4gYW5vdGhlciBub24tdW5pcXVlIHNlc3Npb24gaXMgcnVubmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgZDEgPSBuZXcgRmFrZURyaXZlcigpO1xuICAgIGxldCBbc2Vzc2lvbjFJZF0gPSBhd2FpdCBkMS5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKFczQ19DQVBTKSk7XG4gICAgc2Vzc2lvbjFJZC5zaG91bGQuYmUuYSgnc3RyaW5nJyk7XG4gICAgbGV0IGQyID0gbmV3IEZha2VEcml2ZXIoKTtcbiAgICBsZXQgW3Nlc3Npb24ySWRdID0gYXdhaXQgZDIuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcChXM0NfQ0FQUykpO1xuICAgIHNlc3Npb24ySWQuc2hvdWxkLmJlLmEoJ3N0cmluZycpO1xuICAgIHNlc3Npb24xSWQuc2hvdWxkLm5vdC5lcXVhbChzZXNzaW9uMklkKTtcbiAgICBhd2FpdCBkMS5kZWxldGVTZXNzaW9uKHNlc3Npb24xSWQpO1xuICAgIGF3YWl0IGQyLmRlbGV0ZVNlc3Npb24oc2Vzc2lvbjJJZCk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvZHJpdmVyLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _chaiWebdriverioAsync = _interopRequireDefault(require("chai-webdriverio-async"));
13
+
14
+ var _helpers = require("./helpers");
15
+
16
+ function elementTests() {
17
+ describe('element interaction and introspection', function () {
18
+ let driver;
19
+ before(async function () {
20
+ driver = await (0, _helpers.initSession)(_helpers.W3C_PREFIXED_CAPS);
21
+ chai.use((0, _chaiWebdriverioAsync.default)(driver));
22
+ });
23
+ after(async function () {
24
+ return await (0, _helpers.deleteSession)(driver);
25
+ });
26
+ it('should not set value on an invalid element', async function () {
27
+ const el = await driver.$('//MockListItem');
28
+ await el.setValue('test value').should.eventually.be.rejectedWith(/invalid state/);
29
+ });
30
+ it('should set value on an element and retrieve text', async function () {
31
+ let el = await driver.$('//MockInputField');
32
+ await el.setValue('test value');
33
+ await el.should.have.text('test value');
34
+ });
35
+ it('should not clear an invalid element', async function () {
36
+ await (await driver.$('//MockListItem')).clearValue().should.eventually.be.rejectedWith(/invalid state/);
37
+ });
38
+ it('should clear an element', async function () {
39
+ let el = await driver.$('//MockInputField');
40
+ await el.setValue('test value');
41
+ await el.should.not.have.text('');
42
+ await el.clearValue();
43
+ await el.should.have.text('');
44
+ });
45
+ it('should not click an invisible element', async function () {
46
+ await (await driver.$('#Button1')).click().should.eventually.be.rejectedWith(/invalid state/);
47
+ });
48
+ it('should click an element and get its attributes', async function () {
49
+ let el = await driver.$('#Button2');
50
+ await el.click();
51
+ await el.click();
52
+ await el.click();
53
+ (await el.getAttribute('clicks')).should.equal(3);
54
+ });
55
+ it('should get the name of an element', async function () {
56
+ let el = await driver.$('MockInputField');
57
+ (await el.getTagName()).should.equal('MockInputField');
58
+ el = await driver.$('#wv');
59
+ (await el.getTagName()).should.equal('MockWebView');
60
+ });
61
+ it('should detect whether an element is displayed', async function () {
62
+ await driver.$('#Button1').should.not.be.displayed();
63
+ await driver.$('#Button2').should.be.displayed();
64
+ });
65
+ it('should detect whether an element is enabled', async function () {
66
+ await driver.$('#Button1').should.not.be.enabled();
67
+ await driver.$('#Button2').should.be.enabled();
68
+ });
69
+ it('should detect whether an element is selected', async function () {
70
+ await driver.$('#Button1').should.not.be.selected();
71
+ await driver.$('#Button2').should.be.selected();
72
+ });
73
+ it('should get the rect of an element', async function () {
74
+ let {
75
+ elementId
76
+ } = await driver.$('#nav');
77
+ (await driver.getElementRect(elementId)).should.eql({
78
+ x: 1,
79
+ y: 1,
80
+ width: 100,
81
+ height: 100
82
+ });
83
+ });
84
+ it('should get the rect of an element with float vals', async function () {
85
+ let {
86
+ elementId
87
+ } = await driver.$('#lv');
88
+ (await driver.getElementRect(elementId)).should.eql({
89
+ x: 20.8,
90
+ y: 15.3,
91
+ height: 2,
92
+ width: 30.5
93
+ });
94
+ });
95
+ it('should determine element equality', async function () {
96
+ let el1 = await driver.$('#wv');
97
+ let el2 = await driver.$('#wv');
98
+ (await el1.isEqual(el2)).should.equal(true);
99
+ });
100
+ it('should determine element inequality', async function () {
101
+ let el1 = await driver.$('#wv');
102
+ let el2 = await driver.$('#lv');
103
+ (await el1.isEqual(el2)).should.equal(false);
104
+ });
105
+ it('should not get the css property of an element when not in a webview', async function () {
106
+ const {
107
+ elementId
108
+ } = await driver.$('#Button1');
109
+ await driver.getElementCSSValue(elementId, 'height').should.eventually.be.rejectedWith({
110
+ code: 36
111
+ });
112
+ });
113
+ it('should get the css property of an element when in a webview', async function () {
114
+ await driver.switchContext('WEBVIEW_1');
115
+ let {
116
+ elementId
117
+ } = await driver.$('body');
118
+ (await driver.getElementCSSValue(elementId, 'background-color')).should.equal('#000');
119
+ });
120
+ it('should return null for an unspecified css property', async function () {
121
+ let {
122
+ elementId
123
+ } = await driver.$('body');
124
+ should.equal(await driver.getElementCSSValue(elementId, 'font-size'), null);
125
+ });
126
+ });
127
+ }
128
+
129
+ var _default = elementTests;
130
+ exports.default = _default;require('source-map-support').install();
131
+
132
+
133
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZWxlbWVudC1pbnRlcmFjdGlvbi10ZXN0cy5qcyJdLCJuYW1lcyI6WyJlbGVtZW50VGVzdHMiLCJkZXNjcmliZSIsImRyaXZlciIsImJlZm9yZSIsIlczQ19QUkVGSVhFRF9DQVBTIiwiY2hhaSIsInVzZSIsImFmdGVyIiwiaXQiLCJlbCIsIiQiLCJzZXRWYWx1ZSIsInNob3VsZCIsImV2ZW50dWFsbHkiLCJiZSIsInJlamVjdGVkV2l0aCIsImhhdmUiLCJ0ZXh0IiwiY2xlYXJWYWx1ZSIsIm5vdCIsImNsaWNrIiwiZ2V0QXR0cmlidXRlIiwiZXF1YWwiLCJnZXRUYWdOYW1lIiwiZGlzcGxheWVkIiwiZW5hYmxlZCIsInNlbGVjdGVkIiwiZWxlbWVudElkIiwiZ2V0RWxlbWVudFJlY3QiLCJlcWwiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiZWwxIiwiZWwyIiwiaXNFcXVhbCIsImdldEVsZW1lbnRDU1NWYWx1ZSIsImNvZGUiLCJzd2l0Y2hDb250ZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUVBLFNBQVNBLFlBQVQsR0FBeUI7QUFDdkJDLEVBQUFBLFFBQVEsQ0FBQyx1Q0FBRCxFQUEwQyxZQUFZO0FBQzVELFFBQUlDLE1BQUo7QUFDQUMsSUFBQUEsTUFBTSxDQUFFLGtCQUFrQjtBQUN4QkQsTUFBQUEsTUFBTSxHQUFHLE1BQU0sMEJBQVlFLDBCQUFaLENBQWY7QUFDQUMsTUFBQUEsSUFBSSxDQUFDQyxHQUFMLENBQVMsbUNBQXFCSixNQUFyQixDQUFUO0FBQ0QsS0FISyxDQUFOO0FBSUFLLElBQUFBLEtBQUssQ0FBQyxrQkFBa0I7QUFDdEIsYUFBTyxNQUFNLDRCQUFjTCxNQUFkLENBQWI7QUFDRCxLQUZJLENBQUw7QUFJQU0sSUFBQUEsRUFBRSxDQUFDLDRDQUFELEVBQStDLGtCQUFrQjtBQUNqRSxZQUFNQyxFQUFFLEdBQUcsTUFBTVAsTUFBTSxDQUFDUSxDQUFQLENBQVMsZ0JBQVQsQ0FBakI7QUFDQSxZ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RUFBd0Usa0JBQWtCO0FBQzFGLFlBQU07QUFBQ21CLFFBQUFBO0FBQUQsVUFBYyxNQUFNekIsTUFBTSxDQUFDUSxDQUFQLENBQVMsVUFBVCxDQUExQjtBQUNBLFlBQU1SLE1BQU0sQ0FBQ21DLGtCQUFQLENBQTBCVixTQUExQixFQUFxQyxRQUFyQyxFQUErQ2YsTUFBL0MsQ0FBc0RDLFVBQXRELENBQWlFQyxFQUFqRSxDQUFvRUMsWUFBcEUsQ0FBaUY7QUFBQ3VCLFFBQUFBLElBQUksRUFBRTtBQUFQLE9BQWpGLENBQU47QUFDRCxLQUhDLENBQUY7QUFJQTlCLElBQUFBLEVBQUUsQ0FBQyw2REFBRCxFQUFnRSxrQkFBa0I7QUFDbEYsWUFBTU4sTUFBTSxDQUFDcUMsYUFBUCxDQUFxQixXQUFyQixDQUFOO0FBQ0EsVUFBSTtBQUFDWixRQUFBQTtBQUFELFVBQWMsTUFBTXpCLE1BQU0sQ0FBQ1EsQ0FBUCxDQUFTLE1BQVQsQ0FBeEI7QUFDQSxPQUFDLE1BQU1SLE1BQU0sQ0FBQ21DLGtCQUFQLENBQTBCVixTQUExQixFQUFxQyxrQkFBckMsQ0FBUCxFQUFpRWYsTUFBakUsQ0FBd0VVLEtBQXhFLENBQThFLE1BQTlFO0FBQ0QsS0FKQyxDQUFGO0FBS0FkLElBQUFBLEVBQUUsQ0FBQyxvREFBRCxFQUF1RCxrQkFBa0I7QUFDekUsVUFBSTtBQUFDbUIsUUFBQUE7QUFBRCxVQUFjLE1BQU16QixNQUFNLENBQUNRLENBQVAsQ0FBUyxNQUFULENBQXhCO0FBQ0FFLE1BQUFBLE1BQU0sQ0FBQ1UsS0FBUCxDQUFhLE1BQU1wQixNQUFNLENBQUNtQyxrQkFBUCxDQUEwQlYsU0FBMUIsRUFBcUMsV0FBckMsQ0FBbkIsRUFBc0UsSUFBdEU7QUFDRCxLQUhDLENBQUY7QUFJRCxHQTNGTyxDQUFSO0FBNEZEOztlQUVjM0IsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFpV2ViZHJpdmVySU9Bc3luYyBmcm9tICdjaGFpLXdlYmRyaXZlcmlvLWFzeW5jJztcblxuaW1wb3J0IHsgaW5pdFNlc3Npb24sIGRlbGV0ZVNlc3Npb24sIFczQ19QUkVGSVhFRF9DQVBTIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuZnVuY3Rpb24gZWxlbWVudFRlc3RzICgpIHtcbiAgZGVzY3JpYmUoJ2VsZW1lbnQgaW50ZXJhY3Rpb24gYW5kIGludHJvc3BlY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGRyaXZlcjtcbiAgICBiZWZvcmUgKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRyaXZlciA9IGF3YWl0IGluaXRTZXNzaW9uKFczQ19QUkVGSVhFRF9DQVBTKTtcbiAgICAgIGNoYWkudXNlKGNoYWlXZWJkcml2ZXJJT0FzeW5jKGRyaXZlcikpO1xuICAgIH0pO1xuICAgIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhd2FpdCBkZWxldGVTZXNzaW9uKGRyaXZlcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBzZXQgdmFsdWUgb24gYW4gaW52YWxpZCBlbGVtZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZWwgPSBhd2FpdCBkcml2ZXIuJCgnLy9Nb2NrTGlzdEl0ZW0nKTtcbiAgICAgIGF3YWl0IGVsLnNldFZhbHVlKCd0ZXN0IHZhbHVlJykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9pbnZhbGlkIHN0YXRlLyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdmFsdWUgb24gYW4gZWxlbWVudCBhbmQgcmV0cmlldmUgdGV4dCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBlbCA9IGF3YWl0IGRyaXZlci4kKCcvL01vY2tJbnB1dEZpZWxkJyk7XG4gICAgICBhd2FpdCBlbC5zZXRWYWx1ZSgndGVzdCB2YWx1ZScpO1xuICAgICAgYXdhaXQgZWwuc2hvdWxkLmhhdmUudGV4dCgndGVzdCB2YWx1ZScpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IGNsZWFyIGFuIGludmFsaWQgZWxlbWVudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IChhd2FpdCBkcml2ZXIuJCgnLy9Nb2NrTGlzdEl0ZW0nKSkuY2xlYXJWYWx1ZSgpXG4gICAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2ludmFsaWQgc3RhdGUvKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNsZWFyIGFuIGVsZW1lbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgZWwgPSBhd2FpdCBkcml2ZXIuJCgnLy9Nb2NrSW5wdXRGaWVsZCcpO1xuICAgICAgYXdhaXQgZWwuc2V0VmFsdWUoJ3Rlc3QgdmFsdWUnKTtcbiAgICAgIGF3YWl0IGVsLnNob3VsZC5ub3QuaGF2ZS50ZXh0KCcnKTtcbiAgICAgIGF3YWl0IGVsLmNsZWFyVmFsdWUoKTtcbiAgICAgIGF3YWl0IGVsLnNob3VsZC5oYXZlLnRleHQoJycpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IGNsaWNrIGFuIGludmlzaWJsZSBlbGVtZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgKGF3YWl0IGRyaXZlci4kKCcjQnV0dG9uMScpKS5jbGljaygpXG4gICAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2ludmFsaWQgc3RhdGUvKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNsaWNrIGFuIGVsZW1lbnQgYW5kIGdldCBpdHMgYXR0cmlidXRlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBlbCA9IGF3YWl0IGRyaXZlci4kKCcjQnV0dG9uMicpO1xuICAgICAgYXdhaXQgZWwuY2xpY2soKTtcbiAgICAgIGF3YWl0IGVsLmNsaWNrKCk7XG4gICAgICBhd2FpdCBlbC5jbGljaygpO1xuICAgICAgKGF3YWl0IGVsLmdldEF0dHJpYnV0ZSgnY2xpY2tzJykpLnNob3VsZC5lcXVhbCgzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgbmFtZSBvZiBhbiBlbGVtZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGVsID0gYXdhaXQgZHJpdmVyLiQoJ01vY2tJbnB1dEZpZWxkJyk7XG4gICAgICAoYXdhaXQgZWwuZ2V0VGFnTmFtZSgpKS5zaG91bGQuZXF1YWwoJ01vY2tJbnB1dEZpZWxkJyk7XG4gICAgICBlbCA9IGF3YWl0IGRyaXZlci4kKCcjd3YnKTtcbiAgICAgIChhd2FpdCBlbC5nZXRUYWdOYW1lKCkpLnNob3VsZC5lcXVhbCgnTW9ja1dlYlZpZXcnKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGRldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgZGlzcGxheWVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZHJpdmVyLiQoJyNCdXR0b24xJykuc2hvdWxkLm5vdC5iZS5kaXNwbGF5ZWQoKTtcbiAgICAgIGF3YWl0IGRyaXZlci4kKCcjQnV0dG9uMicpLnNob3VsZC5iZS5kaXNwbGF5ZWQoKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGRldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgZW5hYmxlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGRyaXZlci4kKCcjQnV0dG9uMScpLnNob3VsZC5ub3QuYmUuZW5hYmxlZCgpO1xuICAgICAgYXdhaXQgZHJpdmVyLiQoJyNCdXR0b24yJykuc2hvdWxkLmJlLmVuYWJsZWQoKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGRldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgc2VsZWN0ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuJCgnI0J1dHRvbjEnKS5zaG91bGQubm90LmJlLnNlbGVjdGVkKCk7XG4gICAgICBhd2FpdCBkcml2ZXIuJCgnI0J1dHRvbjInKS5zaG91bGQuYmUuc2VsZWN0ZWQoKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgcmVjdCBvZiBhbiBlbGVtZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHtlbGVtZW50SWR9ID0gYXdhaXQgZHJpdmVyLiQoJyNuYXYnKTtcbiAgICAgIChhd2FpdCBkcml2ZXIuZ2V0RWxlbWVudFJlY3QoZWxlbWVudElkKSkuc2hvdWxkLmVxbCh7eDogMSwgeTogMSwgd2lkdGg6IDEwMCwgaGVpZ2h0OiAxMDB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgcmVjdCBvZiBhbiBlbGVtZW50IHdpdGggZmxvYXQgdmFscycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCB7ZWxlbWVudElkfSA9IGF3YWl0IGRyaXZlci4kKCcjbHYnKTtcbiAgICAgIChhd2FpdCBkcml2ZXIuZ2V0RWxlbWVudFJlY3QoZWxlbWVudElkKSkuc2hvdWxkLmVxbCh7eDogMjAuOCwgeTogMTUuMywgaGVpZ2h0OiAyLCB3aWR0aDogMzAuNX0pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZGV0ZXJtaW5lIGVsZW1lbnQgZXF1YWxpdHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgZWwxID0gYXdhaXQgZHJpdmVyLiQoJyN3dicpO1xuICAgICAgbGV0IGVsMiA9IGF3YWl0IGRyaXZlci4kKCcjd3YnKTtcbiAgICAgIChhd2FpdCBlbDEuaXNFcXVhbChlbDIpKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBkZXRlcm1pbmUgZWxlbWVudCBpbmVxdWFsaXR5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGVsMSA9IGF3YWl0IGRyaXZlci4kKCcjd3YnKTtcbiAgICAgIGxldCBlbDIgPSBhd2FpdCBkcml2ZXIuJCgnI2x2Jyk7XG4gICAgICAoYXdhaXQgZWwxLmlzRXF1YWwoZWwyKSkuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGdldCB0aGUgY3NzIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgd2hlbiBub3QgaW4gYSB3ZWJ2aWV3JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qge2VsZW1lbnRJZH0gPSBhd2FpdCBkcml2ZXIuJCgnI0J1dHRvbjEnKTtcbiAgICAgIGF3YWl0IGRyaXZlci5nZXRFbGVtZW50Q1NTVmFsdWUoZWxlbWVudElkLCAnaGVpZ2h0Jykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKHtjb2RlOiAzNn0pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjc3MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCB3aGVuIGluIGEgd2VidmlldycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5zd2l0Y2hDb250ZXh0KCdXRUJWSUVXXzEnKTtcbiAgICAgIGxldCB7ZWxlbWVudElkfSA9IGF3YWl0IGRyaXZlci4kKCdib2R5Jyk7XG4gICAgICAoYXdhaXQgZHJpdmVyLmdldEVsZW1lbnRDU1NWYWx1ZShlbGVtZW50SWQsICdiYWNrZ3JvdW5kLWNvbG9yJykpLnNob3VsZC5lcXVhbCgnIzAwMCcpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgZm9yIGFuIHVuc3BlY2lmaWVkIGNzcyBwcm9wZXJ0eScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCB7ZWxlbWVudElkfSA9IGF3YWl0IGRyaXZlci4kKCdib2R5Jyk7XG4gICAgICBzaG91bGQuZXF1YWwoYXdhaXQgZHJpdmVyLmdldEVsZW1lbnRDU1NWYWx1ZShlbGVtZW50SWQsICdmb250LXNpemUnKSwgbnVsbCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlbGVtZW50VGVzdHM7XG4iXSwiZmlsZSI6InRlc3QvZWxlbWVudC1pbnRlcmFjdGlvbi10ZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _helpers = require("./helpers");
13
+
14
+ var _chaiWebdriverioAsync = _interopRequireDefault(require("chai-webdriverio-async"));
15
+
16
+ function findElementTests() {
17
+ describe('finding elements', function () {
18
+ let driver;
19
+ before(async function () {
20
+ driver = await (0, _helpers.initSession)(_helpers.W3C_PREFIXED_CAPS);
21
+ chai.use((0, _chaiWebdriverioAsync.default)(driver));
22
+ });
23
+ after(async function () {
24
+ return await (0, _helpers.deleteSession)(driver);
25
+ });
26
+ describe('by XPath', function () {
27
+ it('should find a single element by xpath', async function () {
28
+ await driver.$('//MockWebView').should.be.existing();
29
+ });
30
+ it('should not find a single element that is not there', async function () {
31
+ await driver.$('//dontexist').should.not.be.existing();
32
+ });
33
+ it('should find multiple elements', async function () {
34
+ await driver.$$('//MockListItem').should.have.count(3);
35
+ });
36
+ });
37
+ describe('by classname', function () {
38
+ it('should find a single element by class', async function () {
39
+ await driver.$('.MockWebView').should.be.existing();
40
+ });
41
+ it('should not find a single element by class that is not there', async function () {
42
+ await driver.$('.dontexist').should.not.be.existing();
43
+ });
44
+ });
45
+ describe('using bad selectors', function () {
46
+ it('should not find a single element with bad selector', async function () {
47
+ await driver.$('badsel').should.eventually.be.rejectedWith({
48
+ code: 32
49
+ });
50
+ });
51
+ it('should not find multiple elements with bad selector', async function () {
52
+ await driver.$$('badsel').should.eventually.be.rejectedWith({
53
+ code: 32
54
+ });
55
+ });
56
+ });
57
+ describe('via element selectors', function () {
58
+ it('should find an element from another element', async function () {
59
+ let el = await driver.$('#1');
60
+ let title = await el.$('title');
61
+ let earlierTitle = await driver.$('title');
62
+ await earlierTitle.isEqual(title).should.eventually.equal(false);
63
+ });
64
+ it('should find multiple elements from another element', async function () {
65
+ let el = await driver.$('html');
66
+ await el.$$('title').should.have.count(2);
67
+ });
68
+ it(`should not find an element that doesn't exist from another element`, async function () {
69
+ let el = await driver.$('#1');
70
+ await el.$('marquee').should.not.be.existing();
71
+ });
72
+ it(`should not find multiple elements that don't exist from another element`, async function () {
73
+ let el = await driver.$('#1');
74
+ (await el.$$('marquee')).should.have.count(0);
75
+ });
76
+ it('should not find elements if root element does not exist', async function () {
77
+ let el = await driver.$('#blub');
78
+ await el.$('body').should.eventually.be.rejectedWith(/Can't call \$/);
79
+ });
80
+ });
81
+ });
82
+ }
83
+
84
+ var _default = findElementTests;
85
+ exports.default = _default;require('source-map-support').install();
86
+
87
+
88
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZmluZC1lbGVtZW50LXRlc3RzLmpzIl0sIm5hbWVzIjpbImZpbmRFbGVtZW50VGVzdHMiLCJkZXNjcmliZSIsImRyaXZlciIsImJlZm9yZSIsIlczQ19QUkVGSVhFRF9DQVBTIiwiY2hhaSIsInVzZSIsImFmdGVyIiwiaXQiLCIkIiwic2hvdWxkIiwiYmUiLCJleGlzdGluZyIsIm5vdCIsIiQkIiwiaGF2ZSIsImNvdW50IiwiZXZlbnR1YWxseSIsInJlamVjdGVkV2l0aCIsImNvZGUiLCJlbCIsInRpdGxlIiwiZWFybGllclRpdGxlIiwiaXNFcXVhbCIsImVxdWFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLFNBQVNBLGdCQUFULEdBQTZCO0FBQzNCQyxFQUFBQSxRQUFRLENBQUMsa0JBQUQsRUFBcUIsWUFBWTtBQUN2QyxRQUFJQyxNQUFKO0FBQ0FDLElBQUFBLE1BQU0sQ0FBRSxrQkFBa0I7QUFDeEJELE1BQUFBLE1BQU0sR0FBRyxNQUFNLDBCQUFZRSwwQkFBWixDQUFmO0FBQ0FDLE1BQUFBLElBQUksQ0FBQ0MsR0FBTCxDQUFTLG1DQUFxQkosTUFBckIsQ0FBVDtBQUNELEtBSEssQ0FBTjtBQUlBSyxJQUFBQSxLQUFLLENBQUMsa0JBQWtCO0FBQ3RCLGFBQU8sTUFBTSw0QkFBY0wsTUFBZCxDQUFiO0FBQ0QsS0FGSSxDQUFMO0FBSUFELElBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBWTtBQUMvQk8sTUFBQUEsRUFBRSxDQUFDLHVDQUFELEVBQTBDLGtCQUFrQjtBQUM1RCxjQUFNTixNQUFNLENBQUNPLENBQVAsQ0FBUyxlQUFULEVBQTBCQyxNQUExQixDQUFpQ0MsRUFBakMsQ0FBb0NDLFFBQXBDLEVBQU47QUFDRCxPQUZDLENBQUY7QUFHQUosTUFBQUEsRUFBRSxDQUFDLG9EQUFELEVBQXVELGtCQUFrQjtBQUN6RSxjQUFNTixNQUFNLENBQUNPLENBQVAsQ0FBUyxhQUFULEVBQXdCQyxNQUF4QixDQUEr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QUUseUVBQUYsRUFBNEUsa0JBQWtCO0FBQzlGLFlBQUlZLEVBQUUsR0FBRyxNQUFNbEIsTUFBTSxDQUFDTyxDQUFQLENBQVMsSUFBVCxDQUFmO0FBQ0EsU0FBQyxNQUFNVyxFQUFFLENBQUNOLEVBQUgsQ0FBTSxTQUFOLENBQVAsRUFBeUJKLE1BQXpCLENBQWdDSyxJQUFoQyxDQUFxQ0MsS0FBckMsQ0FBMkMsQ0FBM0M7QUFDRCxPQUhDLENBQUY7QUFJQVIsTUFBQUEsRUFBRSxDQUFDLHlEQUFELEVBQTRELGtCQUFrQjtBQUM5RSxZQUFJWSxFQUFFLEdBQUcsTUFBTWxCLE1BQU0sQ0FBQ08sQ0FBUCxDQUFTLE9BQVQsQ0FBZjtBQUNBLGNBQU1XLEVBQUUsQ0FBQ1gsQ0FBSCxDQUFLLE1BQUwsRUFBYUMsTUFBYixDQUFvQk8sVUFBcEIsQ0FBK0JOLEVBQS9CLENBQWtDTyxZQUFsQyxDQUErQyxlQUEvQyxDQUFOO0FBQ0QsT0FIQyxDQUFGO0FBSUQsS0F2Qk8sQ0FBUjtBQXdCRCxHQXBFTyxDQUFSO0FBcUVEOztlQUVjbEIsZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbml0U2Vzc2lvbiwgZGVsZXRlU2Vzc2lvbiwgVzNDX1BSRUZJWEVEX0NBUFMgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IGNoYWlXZWJkcml2ZXJJT0FzeW5jIGZyb20gJ2NoYWktd2ViZHJpdmVyaW8tYXN5bmMnO1xuXG5cbmZ1bmN0aW9uIGZpbmRFbGVtZW50VGVzdHMgKCkge1xuICBkZXNjcmliZSgnZmluZGluZyBlbGVtZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgZHJpdmVyO1xuICAgIGJlZm9yZSAoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZHJpdmVyID0gYXdhaXQgaW5pdFNlc3Npb24oVzNDX1BSRUZJWEVEX0NBUFMpO1xuICAgICAgY2hhaS51c2UoY2hhaVdlYmRyaXZlcklPQXN5bmMoZHJpdmVyKSk7XG4gICAgfSk7XG4gICAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGRlbGV0ZVNlc3Npb24oZHJpdmVyKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdieSBYUGF0aCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgZmluZCBhIHNpbmdsZSBlbGVtZW50IGJ5IHhwYXRoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIuJCgnLy9Nb2NrV2ViVmlldycpLnNob3VsZC5iZS5leGlzdGluZygpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIG5vdCBmaW5kIGEgc2luZ2xlIGVsZW1lbnQgdGhhdCBpcyBub3QgdGhlcmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci4kKCcvL2RvbnRleGlzdCcpLnNob3VsZC5ub3QuYmUuZXhpc3RpbmcoKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBmaW5kIG11bHRpcGxlIGVsZW1lbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIuJCQoJy8vTW9ja0xpc3RJdGVtJykuc2hvdWxkLmhhdmUuY291bnQoMyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdieSBjbGFzc25hbWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGZpbmQgYSBzaW5nbGUgZWxlbWVudCBieSBjbGFzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLiQoJy5Nb2NrV2ViVmlldycpLnNob3VsZC5iZS5leGlzdGluZygpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IGZpbmQgYSBzaW5nbGUgZWxlbWVudCBieSBjbGFzcyB0aGF0IGlzIG5vdCB0aGVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLiQoJy5kb250ZXhpc3QnKS5zaG91bGQubm90LmJlLmV4aXN0aW5nKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd1c2luZyBiYWQgc2VsZWN0b3JzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgZmluZCBhIHNpbmdsZSBlbGVtZW50IHdpdGggYmFkIHNlbGVjdG9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIuJCgnYmFkc2VsJylcbiAgICAgICAgICAgICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKHtjb2RlOiAzMn0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IGZpbmQgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCBiYWQgc2VsZWN0b3InLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci4kJCgnYmFkc2VsJylcbiAgICAgICAgICAgICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKHtjb2RlOiAzMn0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndmlhIGVsZW1lbnQgc2VsZWN0b3JzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBmaW5kIGFuIGVsZW1lbnQgZnJvbSBhbm90aGVyIGVsZW1lbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBlbCA9IGF3YWl0IGRyaXZlci4kKCcjMScpO1xuICAgICAgICBsZXQgdGl0bGUgPSBhd2FpdCBlbC4kKCd0aXRsZScpO1xuICAgICAgICBsZXQgZWFybGllclRpdGxlID0gYXdhaXQgZHJpdmVyLiQoJ3RpdGxlJyk7XG4gICAgICAgIGF3YWl0IGVhcmxpZXJUaXRsZS5pc0VxdWFsKHRpdGxlKS5zaG91bGQuZXZlbnR1YWxseS5lcXVhbChmYWxzZSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZmluZCBtdWx0aXBsZSBlbGVtZW50cyBmcm9tIGFub3RoZXIgZWxlbWVudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IGVsID0gYXdhaXQgZHJpdmVyLiQoJ2h0bWwnKTtcbiAgICAgICAgYXdhaXQgZWwuJCQoJ3RpdGxlJykuc2hvdWxkLmhhdmUuY291bnQoMik7XG4gICAgICB9KTtcbiAgICAgIGl0KGBzaG91bGQgbm90IGZpbmQgYW4gZWxlbWVudCB0aGF0IGRvZXNuJ3QgZXhpc3QgZnJvbSBhbm90aGVyIGVsZW1lbnRgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBlbCA9IGF3YWl0IGRyaXZlci4kKCcjMScpO1xuICAgICAgICBhd2FpdCBlbC4kKCdtYXJxdWVlJykuc2hvdWxkLm5vdC5iZS5leGlzdGluZygpO1xuICAgICAgfSk7XG4gICAgICBpdChgc2hvdWxkIG5vdCBmaW5kIG11bHRpcGxlIGVsZW1lbnRzIHRoYXQgZG9uJ3QgZXhpc3QgZnJvbSBhbm90aGVyIGVsZW1lbnRgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBlbCA9IGF3YWl0IGRyaXZlci4kKCcjMScpO1xuICAgICAgICAoYXdhaXQgZWwuJCQoJ21hcnF1ZWUnKSkuc2hvdWxkLmhhdmUuY291bnQoMCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgbm90IGZpbmQgZWxlbWVudHMgaWYgcm9vdCBlbGVtZW50IGRvZXMgbm90IGV4aXN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgZWwgPSBhd2FpdCBkcml2ZXIuJCgnI2JsdWInKTtcbiAgICAgICAgYXdhaXQgZWwuJCgnYm9keScpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvQ2FuJ3QgY2FsbCBcXCQvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZmluZEVsZW1lbnRUZXN0cztcbiJdLCJmaWxlIjoidGVzdC9maW5kLWVsZW1lbnQtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <app width="400" height="852">
3
+ <MockNavBar id="nav" top="1" left="1" width="100" height="100">
4
+ <MockTextField id="Mock App" />
5
+ </MockNavBar>
6
+ <MockWebView id="wv" top="10" left="10.57" width="20.8" height="20.5">
7
+ <html>
8
+ <head>
9
+ <title value="webview title">Test Webview</title>
10
+ </head>
11
+ <body style="background-color: #000">
12
+ <h1>Hello</h1>
13
+ <iframe id="1">
14
+ <html>
15
+ <head>
16
+ <title value="iframe title">Test iFrame</title>
17
+ </head>
18
+ <body>
19
+ <h1 style="font-family: 'comic sans'">I'm an iFrame</h1>
20
+ </body>
21
+ </html>
22
+ </iframe>
23
+ </body>
24
+ </html>
25
+ </MockWebView>
26
+ <MockListView id="lv" top="15.3" left="20.8" width="30.5" height="2">
27
+ <MockListItem id="li" />
28
+ <MockListItem id="li" />
29
+ <MockListItem />
30
+ </MockListView>
31
+ <MockInputField id="input" name="TypeMe" />
32
+ <MockButton id="Button1" visible="false" enabled="false" />
33
+ <MockButton id="Button2" selected="true" />
34
+ <MockButton id="AlertButton" showAlert="alert1" />
35
+ <MockButton id="AlertButton2" showAlert="alert2" />
36
+ <alert id="alert1" text="Fake Alert" hasPrompt="true" />
37
+ <alert id="alert2" text="Fake Alert 2" hasPrompt="false" />
38
+ </app>
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _chaiWebdriverioAsync = _interopRequireDefault(require("chai-webdriverio-async"));
13
+
14
+ var _helpers = require("./helpers");
15
+
16
+ function generalTests() {
17
+ describe('generic actions', function () {
18
+ let driver;
19
+ before(async function () {
20
+ driver = await (0, _helpers.initSession)(_helpers.W3C_PREFIXED_CAPS);
21
+ chai.use((0, _chaiWebdriverioAsync.default)(driver));
22
+ });
23
+ after(async function () {
24
+ return await (0, _helpers.deleteSession)(driver);
25
+ });
26
+ it.skip('should set geolocation', async function () {
27
+ await driver.setGeoLocation(-30, 30);
28
+ });
29
+ it('should get geolocation', async function () {
30
+ let geo = await driver.getGeoLocation();
31
+ should.exist(geo.latitude);
32
+ should.exist(geo.longitude);
33
+ });
34
+ it('should get app source', async function () {
35
+ let source = await driver.getPageSource();
36
+ source.should.contain('<MockNavBar id="nav"');
37
+ });
38
+ it('should get the orientation', async function () {
39
+ (await driver.getOrientation()).should.equal('PORTRAIT');
40
+ });
41
+ it('should set the orientation to something valid', async function () {
42
+ await driver.setOrientation('LANDSCAPE');
43
+ (await driver.getOrientation()).should.equal('LANDSCAPE');
44
+ });
45
+ it('should not set the orientation to something invalid', async function () {
46
+ await driver.setOrientation('INSIDEOUT').should.eventually.be.rejectedWith(/Orientation must be/);
47
+ });
48
+ it('should get a screenshot', async function () {
49
+ const screenshot = await driver.takeScreenshot();
50
+ screenshot.should.match(/^iVBOR/);
51
+ screenshot.should.have.length.above(4000);
52
+ });
53
+ it('should get screen height/width', async function () {
54
+ const {
55
+ height,
56
+ width
57
+ } = await driver.getWindowSize();
58
+ height.should.be.above(100);
59
+ width.should.be.above(100);
60
+ });
61
+ it('should set implicit wait timeout', async function () {
62
+ await driver.setTimeout({
63
+ implicit: 1000
64
+ });
65
+ });
66
+ it('should not set invalid implicit wait timeout', async function () {
67
+ await driver.setTimeout({
68
+ implicit: 'foo'
69
+ }).should.eventually.be.rejectedWith(/values are not valid/);
70
+ });
71
+ it.skip('should set async script timeout', async function () {
72
+ await driver.setTimeout({
73
+ script: 1000
74
+ });
75
+ });
76
+ it.skip('should not set invalid async script timeout', async function () {
77
+ await driver.setTimeout({
78
+ script: 'foo'
79
+ }).should.eventually.be.rejectedWith(/values are not valid/);
80
+ });
81
+ it.skip('should set page load timeout', async function () {
82
+ await driver.setTimeout({
83
+ pageLoad: 1000
84
+ });
85
+ });
86
+ it.skip('should not set page load script timeout', async function () {
87
+ await driver.setTimeout({
88
+ pageLoad: 'foo'
89
+ }).should.eventually.be.rejectedWith(/values are not valid/);
90
+ });
91
+ it('should allow performing actions that do nothing but save them', async function () {
92
+ const actions = [{
93
+ type: 'pointer',
94
+ id: 'finger1',
95
+ parameters: {
96
+ pointerType: 'touch'
97
+ },
98
+ actions: [{
99
+ type: 'pointerDown',
100
+ button: 0
101
+ }, {
102
+ type: 'pointerUp',
103
+ button: 0
104
+ }]
105
+ }];
106
+ await driver.performActions(actions);
107
+ const [res] = await driver.getLogs('actions');
108
+ res[0].type.should.eql('pointer');
109
+ res[0].actions.should.have.length(2);
110
+ });
111
+ });
112
+ }
113
+
114
+ var _default = generalTests;
115
+ exports.default = _default;require('source-map-support').install();
116
+
117
+
118
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZ2VuZXJhbC10ZXN0cy5qcyJdLCJuYW1lcyI6WyJnZW5lcmFsVGVzdHMiLCJkZXNjcmliZSIsImRyaXZlciIsImJlZm9yZSIsIlczQ19QUkVGSVhFRF9DQVBTIiwiY2hhaSIsInVzZSIsImFmdGVyIiwiaXQiLCJza2lwIiwic2V0R2VvTG9jYXRpb24iLCJnZW8iLCJnZXRHZW9Mb2NhdGlvbiIsInNob3VsZCIsImV4aXN0IiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJzb3VyY2UiLCJnZXRQYWdlU291cmNlIiwiY29udGFpbiIsImdldE9yaWVudGF0aW9uIiwiZXF1YWwiLCJzZXRPcmllbnRhdGlvbiIsImV2ZW50dWFsbHkiLCJiZSIsInJlamVjdGVkV2l0aCIsInNjcmVlbnNob3QiLCJ0YWtlU2NyZWVuc2hvdCIsIm1hdGNoIiwiaGF2ZSIsImxlbmd0aCIsImFib3ZlIiwiaGVpZ2h0Iiwid2lkdGgiLCJnZXRXaW5kb3dTaXplIiwic2V0VGltZW91dCIsImltcGxpY2l0Iiwic2NyaXB0IiwicGFnZUxvYWQiLCJhY3Rpb25zIiwidHlwZSIsImlkIiwicGFyYW1ldGVycyIsInBvaW50ZXJUeXBlIiwiYnV0dG9uIiwicGVyZm9ybUFjdGlvbnMiLCJyZXMiLCJnZXRMb2dzIiwiZXFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLFNBQVNBLFlBQVQsR0FBeUI7QUFDdkJDLEVBQUFBLFFBQVEsQ0FBQyxpQkFBRCxFQUFvQixZQUFZO0FBQ3RDLFFBQUlDLE1BQUo7QUFFQUMsSUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QkQsTUFBQUEsTUFBTSxHQUFHLE1BQU0sMEJBQVlFLDBCQUFaLENBQWY7QUFDQUMsTUFBQUEsSUFBSSxDQUFDQyxHQUFMLENBQVMsbUNBQXFCSixNQUFyQixDQUFUO0FBQ0QsS0FISyxDQUFOO0FBS0FLLElBQUFBLEtBQUssQ0FBQyxrQkFBa0I7QUFDdEIsYUFBTyxNQUFNLDRCQUFjTCxNQUFkLENBQWI7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SUFBSSxFQUFFLGFBRFI7QUFFRUksVUFBQUEsTUFBTSxFQUFFO0FBRlYsU0FETyxFQUtQO0FBQ0VKLFVBQUFBLElBQUksRUFBRSxXQURSO0FBRUVJLFVBQUFBLE1BQU0sRUFBRTtBQUZWLFNBTE87QUFOWCxPQURjLENBQWhCO0FBbUJBLFlBQU0xQyxNQUFNLENBQUMyQyxjQUFQLENBQXNCTixPQUF0QixDQUFOO0FBQ0EsWUFBTSxDQUFDTyxHQUFELElBQVEsTUFBTTVDLE1BQU0sQ0FBQzZDLE9BQVAsQ0FBZSxTQUFmLENBQXBCO0FBQ0FELE1BQUFBLEdBQUcsQ0FBQyxDQUFELENBQUgsQ0FBT04sSUFBUCxDQUFZM0IsTUFBWixDQUFtQm1DLEdBQW5CLENBQXVCLFNBQXZCO0FBQ0FGLE1BQUFBLEdBQUcsQ0FBQyxDQUFELENBQUgsQ0FBT1AsT0FBUCxDQUFlMUIsTUFBZixDQUFzQmdCLElBQXRCLENBQTJCQyxNQUEzQixDQUFrQyxDQUFsQztBQUNELEtBeEJDLENBQUY7QUF5QkQsR0FwR08sQ0FBUjtBQXFHRDs7ZUFFYzlCLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhaVdlYmRyaXZlcklPQXN5bmMgZnJvbSAnY2hhaS13ZWJkcml2ZXJpby1hc3luYyc7XG5pbXBvcnQgeyBpbml0U2Vzc2lvbiwgZGVsZXRlU2Vzc2lvbiwgVzNDX1BSRUZJWEVEX0NBUFMgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5mdW5jdGlvbiBnZW5lcmFsVGVzdHMgKCkge1xuICBkZXNjcmliZSgnZ2VuZXJpYyBhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBkcml2ZXI7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgZHJpdmVyID0gYXdhaXQgaW5pdFNlc3Npb24oVzNDX1BSRUZJWEVEX0NBUFMpO1xuICAgICAgY2hhaS51c2UoY2hhaVdlYmRyaXZlcklPQXN5bmMoZHJpdmVyKSk7XG4gICAgfSk7XG5cbiAgICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXdhaXQgZGVsZXRlU2Vzc2lvbihkcml2ZXIpO1xuICAgIH0pO1xuXG4gICAgaXQuc2tpcCgnc2hvdWxkIHNldCBnZW9sb2NhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRPRE8gdW5xdWFyYW50aW5lIHdoZW4gV0QgZml4ZXMgd2hhdCBpdCBzZW5kcyB0aGUgc2VydmVyXG4gICAgICBhd2FpdCBkcml2ZXIuc2V0R2VvTG9jYXRpb24oLTMwLCAzMCk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBnZXQgZ2VvbG9jYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgZ2VvID0gYXdhaXQgZHJpdmVyLmdldEdlb0xvY2F0aW9uKCk7XG4gICAgICBzaG91bGQuZXhpc3QoZ2VvLmxhdGl0dWRlKTtcbiAgICAgIHNob3VsZC5leGlzdChnZW8ubG9uZ2l0dWRlKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCBhcHAgc291cmNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNvdXJjZSA9IGF3YWl0IGRyaXZlci5nZXRQYWdlU291cmNlKCk7XG4gICAgICBzb3VyY2Uuc2hvdWxkLmNvbnRhaW4oJzxNb2NrTmF2QmFyIGlkPVwibmF2XCInKTtcbiAgICB9KTtcbiAgICAvLyBUT0RPIGRvIHdlIHdhbnQgdG8gdGVzdCBkcml2ZXIucGFnZUluZGV4PyBwcm9iYWJseSBub3RcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBvcmllbnRhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIChhd2FpdCBkcml2ZXIuZ2V0T3JpZW50YXRpb24oKSkuc2hvdWxkLmVxdWFsKCdQT1JUUkFJVCcpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgc2V0IHRoZSBvcmllbnRhdGlvbiB0byBzb21ldGhpbmcgdmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0T3JpZW50YXRpb24oJ0xBTkRTQ0FQRScpO1xuICAgICAgKGF3YWl0IGRyaXZlci5nZXRPcmllbnRhdGlvbigpKS5zaG91bGQuZXF1YWwoJ0xBTkRTQ0FQRScpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IHNldCB0aGUgb3JpZW50YXRpb24gdG8gc29tZXRoaW5nIGludmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0T3JpZW50YXRpb24oJ0lOU0lERU9VVCcpXG4gICAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL09yaWVudGF0aW9uIG11c3QgYmUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IGEgc2NyZWVuc2hvdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNjcmVlbnNob3QgPSBhd2FpdCBkcml2ZXIudGFrZVNjcmVlbnNob3QoKTtcbiAgICAgIHNjcmVlbnNob3Quc2hvdWxkLm1hdGNoKC9eaVZCT1IvKTtcbiAgICAgIHNjcmVlbnNob3Quc2hvdWxkLmhhdmUubGVuZ3RoLmFib3ZlKDQwMDApO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZ2V0IHNjcmVlbiBoZWlnaHQvd2lkdGgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7aGVpZ2h0LCB3aWR0aH0gPSBhd2FpdCBkcml2ZXIuZ2V0V2luZG93U2l6ZSgpO1xuICAgICAgaGVpZ2h0LnNob3VsZC5iZS5hYm92ZSgxMDApO1xuICAgICAgd2lkdGguc2hvdWxkLmJlLmFib3ZlKDEwMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNldCBpbXBsaWNpdCB3YWl0IHRpbWVvdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0VGltZW91dCh7aW1wbGljaXQ6IDEwMDB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG5vdCBzZXQgaW52YWxpZCBpbXBsaWNpdCB3YWl0IHRpbWVvdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0VGltZW91dCh7aW1wbGljaXQ6ICdmb28nfSlcbiAgICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvdmFsdWVzIGFyZSBub3QgdmFsaWQvKTtcbiAgICB9KTtcblxuICAgIC8vIHNraXAgdGhlc2UgdW50aWwgYmFzZWRyaXZlciBzdXBwb3J0cyB0aGVzZSB0aW1lb3V0c1xuICAgIGl0LnNraXAoJ3Nob3VsZCBzZXQgYXN5bmMgc2NyaXB0IHRpbWVvdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0VGltZW91dCh7c2NyaXB0OiAxMDAwfSk7XG4gICAgfSk7XG4gICAgaXQuc2tpcCgnc2hvdWxkIG5vdCBzZXQgaW52YWxpZCBhc3luYyBzY3JpcHQgdGltZW91dCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5zZXRUaW1lb3V0KHtzY3JpcHQ6ICdmb28nfSlcbiAgICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvdmFsdWVzIGFyZSBub3QgdmFsaWQvKTtcbiAgICB9KTtcblxuICAgIGl0LnNraXAoJ3Nob3VsZCBzZXQgcGFnZSBsb2FkIHRpbWVvdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0VGltZW91dCh7cGFnZUxvYWQ6IDEwMDB9KTtcbiAgICB9KTtcbiAgICBpdC5za2lwKCdzaG91bGQgbm90IHNldCBwYWdlIGxvYWQgc2NyaXB0IHRpbWVvdXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuc2V0VGltZW91dCh7cGFnZUxvYWQ6ICdmb28nfSlcbiAgICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvdmFsdWVzIGFyZSBub3QgdmFsaWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgcGVyZm9ybWluZyBhY3Rpb25zIHRoYXQgZG8gbm90aGluZyBidXQgc2F2ZSB0aGVtJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludGVyJyxcbiAgICAgICAgICBpZDogJ2ZpbmdlcjEnLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAndG91Y2gnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdwb2ludGVyRG93bicsXG4gICAgICAgICAgICAgIGJ1dHRvbjogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3BvaW50ZXJVcCcsXG4gICAgICAgICAgICAgIGJ1dHRvbjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXTtcbiAgICAgIGF3YWl0IGRyaXZlci5wZXJmb3JtQWN0aW9ucyhhY3Rpb25zKTtcbiAgICAgIGNvbnN0IFtyZXNdID0gYXdhaXQgZHJpdmVyLmdldExvZ3MoJ2FjdGlvbnMnKTtcbiAgICAgIHJlc1swXS50eXBlLnNob3VsZC5lcWwoJ3BvaW50ZXInKTtcbiAgICAgIHJlc1swXS5hY3Rpb25zLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdlbmVyYWxUZXN0cztcbiJdLCJmaWxlIjoidGVzdC9nZW5lcmFsLXRlc3RzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.WD_OPTS = exports.W3C_PREFIXED_CAPS = exports.W3C_CAPS = exports.TEST_PORT = exports.TEST_HOST = exports.TEST_APP = exports.BASE_CAPS = void 0;
9
+ exports.deleteSession = deleteSession;
10
+ exports.initSession = initSession;
11
+
12
+ require("source-map-support/register");
13
+
14
+ var _path = _interopRequireDefault(require("path"));
15
+
16
+ var _webdriverio = require("webdriverio");
17
+
18
+ const TEST_HOST = '127.0.0.1';
19
+ exports.TEST_HOST = TEST_HOST;
20
+ const TEST_PORT = 4774;
21
+ exports.TEST_PORT = TEST_PORT;
22
+
23
+ const TEST_APP = _path.default.join(__dirname, 'fixtures', 'app.xml');
24
+
25
+ exports.TEST_APP = TEST_APP;
26
+ const BASE_CAPS = {
27
+ platformName: 'Fake',
28
+ deviceName: 'Commodore 64',
29
+ app: TEST_APP,
30
+ address: TEST_HOST,
31
+ port: 8181
32
+ };
33
+ exports.BASE_CAPS = BASE_CAPS;
34
+ const W3C_PREFIXED_CAPS = {
35
+ 'appium:deviceName': BASE_CAPS.deviceName,
36
+ 'appium:app': BASE_CAPS.app,
37
+ 'appium:address': BASE_CAPS.address,
38
+ 'appium:port': BASE_CAPS.port,
39
+ platformName: BASE_CAPS.platformName
40
+ };
41
+ exports.W3C_PREFIXED_CAPS = W3C_PREFIXED_CAPS;
42
+ const W3C_CAPS = {
43
+ alwaysMatch: { ...W3C_PREFIXED_CAPS
44
+ },
45
+ firstMatch: [{}]
46
+ };
47
+ exports.W3C_CAPS = W3C_CAPS;
48
+ const WD_OPTS = {
49
+ hostname: TEST_HOST,
50
+ port: TEST_PORT,
51
+ connectionRetryCount: 0,
52
+ logLevel: 'error'
53
+ };
54
+ exports.WD_OPTS = WD_OPTS;
55
+
56
+ async function initSession(w3cPrefixedCaps) {
57
+ return await (0, _webdriverio.remote)({ ...WD_OPTS,
58
+ capabilities: w3cPrefixedCaps
59
+ });
60
+ }
61
+
62
+ async function deleteSession(driver) {
63
+ try {
64
+ await driver.deleteSession();
65
+ } catch (ign) {}
66
+ }require('source-map-support').install();
67
+
68
+
69
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6WyJURVNUX0hPU1QiLCJURVNUX1BPUlQiLCJURVNUX0FQUCIsInBhdGgiLCJqb2luIiwiX19kaXJuYW1lIiwiQkFTRV9DQVBTIiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsImFwcCIsImFkZHJlc3MiLCJwb3J0IiwiVzNDX1BSRUZJWEVEX0NBUFMiLCJXM0NfQ0FQUyIsImFsd2F5c01hdGNoIiwiZmlyc3RNYXRjaCIsIldEX09QVFMiLCJob3N0bmFtZSIsImNvbm5lY3Rpb25SZXRyeUNvdW50IiwibG9nTGV2ZWwiLCJpbml0U2Vzc2lvbiIsInczY1ByZWZpeGVkQ2FwcyIsImNhcGFiaWxpdGllcyIsImRlbGV0ZVNlc3Npb24iLCJkcml2ZXIiLCJpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7O0FBQ0EsTUFBTUMsU0FBUyxHQUFHLElBQWxCOzs7QUFFQSxNQUFNQyxRQUFRLEdBQUdDLGNBQUtDLElBQUwsQ0FBVUMsU0FBVixFQUFxQixVQUFyQixFQUFpQyxTQUFqQyxDQUFqQjs7O0FBRUEsTUFBTUMsU0FBUyxHQUFHO0FBQ2hCQyxFQUFBQSxZQUFZLEVBQUUsTUFERTtBQUVoQkMsRUFBQUEsVUFBVSxFQUFFLGNBRkk7QUFHaEJDLEVBQUFBLEdBQUcsRUFBRVAsUUFIVztBQUloQlEsRUFBQUEsT0FBTyxFQUFFVixTQUpPO0FBS2hCVyxFQUFBQSxJQUFJLEVBQUU7QUFMVSxDQUFsQjs7QUFRQSxNQUFNQyxpQkFBaUIsR0FBRztBQUN4Qix1QkFBcUJOLFNBQVMsQ0FBQ0UsVUFEUDtBQUV4QixnQkFBY0YsU0FBUyxDQUFDRyxHQUZBO0FBR3hCLG9CQUFrQkgsU0FBUyxDQUFDSSxPQUhKO0FBSXhCLGlCQUFlSixTQUFTLENBQUNLLElBSkQ7QUFLeEJKLEVBQUFBLFlBQVksRUFBRUQsU0FBUyxDQUFDQztBQUxBLENBQTFCOztBQVFBLE1BQU1NLFFBQVEsR0FBRztBQUNmQyxFQUFBQSxXQUFXLEVBQUUsRUFBQyxHQUFHRjtBQUFKLEdBREU7QUFFZkcsRUFBQUEsVUFBVSxFQUFFLENBQUMsRUFBRDtBQUZHLENBQWpCOztBQUtBLE1BQU1DLE9BQU8sR0FBRztBQUNkQyxFQUFBQSxRQUFRLEVBQUVqQixTQURJO0FBRWRXLEVBQUFBLElBQUksRUFBRVYsU0FGUTtBQUdkaUIsRUFBQUEsb0JBQW9CLEVBQUUsQ0FIUjtBQUlkQyxFQUFBQSxRQUFRLEVBQUU7QUFKSSxDQUFoQjs7O0FBT0EsZUFBZUMsV0FBZixDQUE0QkMsZUFBNUIsRUFBNkM7QUFDM0MsU0FBTyxNQUFNLHlCQUFLLEVBQUMsR0FBR0wsT0FBSjtBQUFhTSxJQUFBQSxZQUFZLEVBQUVEO0FBQTNCLEdBQUwsQ0FBYjtBQUNEOztBQUVELGVBQWVFLGFBQWYsQ0FBOEJDLE1BQTlCLEVBQXNDO0FBQ3BDLE1BQUk7QUFDRixVQUFNQSxNQUFNLENBQUNELGFBQVAsRUFBTjtBQUNELEdBRkQsQ0FFRSxPQUFPRSxHQUFQLEVBQVksQ0FBRTtBQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcmVtb3RlIGFzIHdkaW8gfSBmcm9tICd3ZWJkcml2ZXJpbyc7XG5cbmNvbnN0IFRFU1RfSE9TVCA9ICcxMjcuMC4wLjEnO1xuY29uc3QgVEVTVF9QT1JUID0gNDc3NDtcblxuY29uc3QgVEVTVF9BUFAgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnZml4dHVyZXMnLCAnYXBwLnhtbCcpO1xuXG5jb25zdCBCQVNFX0NBUFMgPSB7XG4gIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICBkZXZpY2VOYW1lOiAnQ29tbW9kb3JlIDY0JyxcbiAgYXBwOiBURVNUX0FQUCxcbiAgYWRkcmVzczogVEVTVF9IT1NULFxuICBwb3J0OiA4MTgxLFxufTtcblxuY29uc3QgVzNDX1BSRUZJWEVEX0NBUFMgPSB7XG4gICdhcHBpdW06ZGV2aWNlTmFtZSc6IEJBU0VfQ0FQUy5kZXZpY2VOYW1lLFxuICAnYXBwaXVtOmFwcCc6IEJBU0VfQ0FQUy5hcHAsXG4gICdhcHBpdW06YWRkcmVzcyc6IEJBU0VfQ0FQUy5hZGRyZXNzLFxuICAnYXBwaXVtOnBvcnQnOiBCQVNFX0NBUFMucG9ydCxcbiAgcGxhdGZvcm1OYW1lOiBCQVNFX0NBUFMucGxhdGZvcm1OYW1lXG59O1xuXG5jb25zdCBXM0NfQ0FQUyA9IHtcbiAgYWx3YXlzTWF0Y2g6IHsuLi5XM0NfUFJFRklYRURfQ0FQU30sXG4gIGZpcnN0TWF0Y2g6IFt7fV0sXG59O1xuXG5jb25zdCBXRF9PUFRTID0ge1xuICBob3N0bmFtZTogVEVTVF9IT1NULFxuICBwb3J0OiBURVNUX1BPUlQsXG4gIGNvbm5lY3Rpb25SZXRyeUNvdW50OiAwLFxuICBsb2dMZXZlbDogJ2Vycm9yJ1xufTtcblxuYXN5bmMgZnVuY3Rpb24gaW5pdFNlc3Npb24gKHczY1ByZWZpeGVkQ2Fwcykge1xuICByZXR1cm4gYXdhaXQgd2Rpbyh7Li4uV0RfT1BUUywgY2FwYWJpbGl0aWVzOiB3M2NQcmVmaXhlZENhcHN9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbiAoZHJpdmVyKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgfSBjYXRjaCAoaWduKSB7fVxufVxuXG5leHBvcnQgeyBpbml0U2Vzc2lvbiwgZGVsZXRlU2Vzc2lvbiwgVEVTVF9BUFAsIFRFU1RfSE9TVCwgVEVTVF9QT1JULCBCQVNFX0NBUFMsIFczQ19DQVBTLCBXM0NfUFJFRklYRURfQ0FQUywgV0RfT1BUUyB9O1xuIl0sImZpbGUiOiJ0ZXN0L2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
package/index.js CHANGED
@@ -1,29 +1,3 @@
1
1
  #!/usr/bin/env node
2
- // transpile:main
3
2
 
4
- import { asyncify } from 'asyncbox';
5
- import * as driver from './lib/driver';
6
- import * as server from './lib/server';
7
-
8
-
9
- const { FakeDriver } = driver;
10
- const { startServer } = server;
11
-
12
- const DEFAULT_HOST = 'localhost';
13
- const DEFAULT_PORT = 4774;
14
-
15
- async function main () {
16
- const getArgValue = (argName) => {
17
- const argIndex = process.argv.indexOf(argName);
18
- return argIndex > 0 ? process.argv[argIndex + 1] : null;
19
- };
20
- const port = parseInt(getArgValue('--port'), 10) || DEFAULT_PORT;
21
- const host = getArgValue('--host') || DEFAULT_HOST;
22
- return await startServer(port, host);
23
- }
24
-
25
- if (require.main === module) {
26
- asyncify(main);
27
- }
28
-
29
- export { FakeDriver, startServer };
3
+ module.exports = require('./build/lib');
@@ -4,7 +4,7 @@ import { errors } from '@appium/base-driver';
4
4
  let commands = {}, helpers = {}, extensions = {};
5
5
 
6
6
  helpers.getRawContexts = function getRawContexts () {
7
- let contexts = {'NATIVE_APP': null};
7
+ let contexts = {NATIVE_APP: null, PROXY: null};
8
8
  let wvs = this.appModel.getWebviews();
9
9
  for (let i = 1; i < wvs.length + 1; i++) {
10
10
  contexts[`WEBVIEW_${i}`] = wvs[i - 1];
@@ -32,8 +32,12 @@ commands.setContext = async function setContext (context) {
32
32
  this.curContext = context;
33
33
  if (context === 'NATIVE_APP') {
34
34
  this.appModel.deactivateWebview();
35
+ this._proxyActive = false;
36
+ } else if (context === 'PROXY') {
37
+ this._proxyActive = true;
35
38
  } else {
36
39
  this.appModel.activateWebview(contexts[context]);
40
+ this._proxyActive = false;
37
41
  }
38
42
  } else {
39
43
  throw new errors.NoSuchContextError();