appium-uiautomator2-driver 6.6.1 → 6.6.3

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 (33) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +14 -9
  3. package/build/lib/commands/screenshot.d.ts +17 -14
  4. package/build/lib/commands/screenshot.d.ts.map +1 -1
  5. package/build/lib/commands/screenshot.js +50 -36
  6. package/build/lib/commands/screenshot.js.map +1 -1
  7. package/build/lib/constraints.d.ts +3 -0
  8. package/build/lib/constraints.d.ts.map +1 -1
  9. package/build/test/unit/commands/general-specs.d.ts +2 -0
  10. package/build/test/unit/commands/general-specs.d.ts.map +1 -0
  11. package/build/test/unit/commands/general-specs.js +80 -0
  12. package/build/test/unit/commands/general-specs.js.map +1 -0
  13. package/build/test/unit/commands/screenshot-specs.d.ts +2 -0
  14. package/build/test/unit/commands/screenshot-specs.d.ts.map +1 -0
  15. package/build/test/unit/commands/screenshot-specs.js +124 -0
  16. package/build/test/unit/commands/screenshot-specs.js.map +1 -0
  17. package/build/test/unit/css-converter-specs.d.ts +2 -0
  18. package/build/test/unit/css-converter-specs.d.ts.map +1 -0
  19. package/build/test/unit/css-converter-specs.js +68 -0
  20. package/build/test/unit/css-converter-specs.js.map +1 -0
  21. package/build/test/unit/driver-specs.d.ts +2 -0
  22. package/build/test/unit/driver-specs.d.ts.map +1 -0
  23. package/build/test/unit/driver-specs.js +328 -0
  24. package/build/test/unit/driver-specs.js.map +1 -0
  25. package/build/test/unit/uiautomator2-specs.d.ts +2 -0
  26. package/build/test/unit/uiautomator2-specs.d.ts.map +1 -0
  27. package/build/test/unit/uiautomator2-specs.js +320 -0
  28. package/build/test/unit/uiautomator2-specs.js.map +1 -0
  29. package/build/tsconfig.tsbuildinfo +1 -1
  30. package/lib/commands/screenshot.ts +146 -0
  31. package/npm-shrinkwrap.json +252 -387
  32. package/package.json +2 -3
  33. package/lib/commands/screenshot.js +0 -116
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const css_converter_1 = __importDefault(require("../../lib/css-converter"));
7
+ const chai_1 = require("chai");
8
+ describe('css-converter.js', function () {
9
+ describe('simple cases', function () {
10
+ const simpleCases = [
11
+ ['android.widget.TextView', 'new UiSelector().className("android.widget.TextView")'],
12
+ ['TextView', 'new UiSelector().classNameMatches("TextView")'],
13
+ ['.TextView', 'new UiSelector().classNameMatches("TextView")'],
14
+ ['.widget.TextView', 'new UiSelector().classNameMatches("widget\\.TextView")'],
15
+ ['*[checkable=true]', 'new UiSelector().checkable(true)'],
16
+ ['*[checkable]', 'new UiSelector().checkable(true)'],
17
+ ['*:checked', 'new UiSelector().checked(true)'],
18
+ ['*[checked]', 'new UiSelector().checked(true)'],
19
+ ['TextView[description="Some description"]', 'new UiSelector().classNameMatches("TextView").description("Some description")'],
20
+ ['*[description]', 'new UiSelector().descriptionMatches("")'],
21
+ ['*[description^=blah]', 'new UiSelector().descriptionStartsWith("blah")'],
22
+ ['*[description$=bar]', 'new UiSelector().descriptionMatches("bar$")'],
23
+ ['*[description*=bar]', 'new UiSelector().descriptionContains("bar")'],
24
+ ['#identifier[description=foo]', 'new UiSelector().resourceId("android:id/identifier").description("foo")'],
25
+ ['*[id=foo]', 'new UiSelector().resourceId("android:id/foo")'],
26
+ ['*[description$="hello [ ^ $ . | ? * + ( ) world"]', 'new UiSelector().descriptionMatches("hello \\[ \\^ \\$ \\. \\| \\? \\* \\+ \\( \\) world$")'],
27
+ ['TextView:iNdEx(4)', 'new UiSelector().classNameMatches("TextView").index(4)'],
28
+ ['*:long-clickable', 'new UiSelector().longClickable(true)'],
29
+ ['*[lOnG-cLiCkAbLe]', 'new UiSelector().longClickable(true)'],
30
+ ['*:nth-child(3)', 'new UiSelector().index(3)'],
31
+ ['*:instance(3)', 'new UiSelector().instance(3)'],
32
+ [
33
+ 'android.widget.TextView[checkable] android.widget.WidgetView[focusable]:nth-child(1)',
34
+ 'new UiSelector().className("android.widget.TextView").checkable(true).childSelector(new UiSelector().className("android.widget.WidgetView").focusable(true).index(1))'
35
+ ],
36
+ ['* *[clickable=true][focused]', 'new UiSelector().childSelector(new UiSelector().clickable(true).focused(true))'],
37
+ [
38
+ '*[clickable=true], *[clickable=false]',
39
+ 'new UiSelector().clickable(true)',
40
+ ],
41
+ ['*[description~="word"]', 'new UiSelector().descriptionMatches("\\b(\\w*word\\w*)\\b")'],
42
+ [
43
+ 'android.widget.ListView android.widget.TextView',
44
+ 'new UiSelector().className("android.widget.ListView").childSelector(new UiSelector().className("android.widget.TextView"))'
45
+ ],
46
+ ];
47
+ for (const [cssSelector, uiAutomatorSelector] of simpleCases) {
48
+ it(`should convert '${cssSelector}' to '${uiAutomatorSelector}'`, function () {
49
+ (0, chai_1.expect)(new css_converter_1.default(cssSelector).toUiAutomatorSelector()).to.equal(uiAutomatorSelector);
50
+ });
51
+ }
52
+ });
53
+ describe('unsupported css', function () {
54
+ const testCases = [
55
+ '*[checked="ItS ChEcKeD"]',
56
+ '*[foo="bar"]',
57
+ '*:checked("ischecked")',
58
+ `This isn't valid[ css`,
59
+ 'p ~ a',
60
+ ];
61
+ for (const cssSelector of testCases) {
62
+ it(`should reject '${cssSelector}'`, function () {
63
+ (0, chai_1.expect)(() => new css_converter_1.default(cssSelector).toUiAutomatorSelector()).to.throw();
64
+ });
65
+ }
66
+ });
67
+ });
68
+ //# sourceMappingURL=css-converter-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-converter-specs.js","sourceRoot":"","sources":["../../../test/unit/css-converter-specs.ts"],"names":[],"mappings":";;;;;AAAA,4EAAmD;AACnD,+BAA4B;AAE5B,QAAQ,CAAC,kBAAkB,EAAE;IAC3B,QAAQ,CAAC,cAAc,EAAE;QACvB,MAAM,WAAW,GAA4B;YAC3C,CAAC,yBAAyB,EAAE,uDAAuD,CAAC;YACpF,CAAC,UAAU,EAAE,+CAA+C,CAAC;YAC7D,CAAC,WAAW,EAAE,+CAA+C,CAAC;YAC9D,CAAC,kBAAkB,EAAE,wDAAwD,CAAC;YAC9E,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;YACzD,CAAC,cAAc,EAAE,kCAAkC,CAAC;YACpD,CAAC,WAAW,EAAE,gCAAgC,CAAC;YAC/C,CAAC,YAAY,EAAE,gCAAgC,CAAC;YAChD,CAAC,0CAA0C,EAAE,+EAA+E,CAAC;YAC7H,CAAC,gBAAgB,EAAE,yCAAyC,CAAC;YAC7D,CAAC,sBAAsB,EAAE,gDAAgD,CAAC;YAC1E,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;YACtE,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;YACtE,CAAC,8BAA8B,EAAE,yEAAyE,CAAC;YAC3G,CAAC,WAAW,EAAE,+CAA+C,CAAC;YAC9D,CAAC,mDAAmD,EAAE,6FAA6F,CAAC;YACpJ,CAAC,mBAAmB,EAAE,wDAAwD,CAAC;YAC/E,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;YAC5D,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;YAC7D,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;YAC/C,CAAC,eAAe,EAAE,8BAA8B,CAAC;YACjD;gBACE,sFAAsF;gBACtF,uKAAuK;aACxK;YACD,CAAC,8BAA8B,EAAE,gFAAgF,CAAC;YAClH;gBACE,uCAAuC;gBACvC,kCAAkC;aACnC;YACD,CAAC,wBAAwB,EAAE,6DAA6D,CAAC;YACzF;gBACE,iDAAiD;gBACjD,4HAA4H;aAC7H;SACF,CAAC;QACF,KAAK,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,IAAI,WAAW,EAAE,CAAC;YAC7D,EAAE,CAAC,mBAAmB,WAAW,SAAS,mBAAmB,GAAG,EAAE;gBAChE,IAAA,aAAM,EAAC,IAAI,uBAAY,CAAC,WAAW,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,MAAM,SAAS,GAAa;YAC1B,0BAA0B;YAC1B,cAAc;YACd,wBAAwB;YACxB,uBAAuB;YACvB,OAAO;SACR,CAAC;QACF,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;YACpC,EAAE,CAAC,kBAAkB,WAAW,GAAG,EAAE;gBACnC,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,IAAI,uBAAY,CAAC,WAAW,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACjF,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=driver-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-specs.d.ts","sourceRoot":"","sources":["../../../test/unit/driver-specs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const driver_1 = require("../../lib/driver");
40
+ const sinon_1 = __importDefault(require("sinon"));
41
+ const path = __importStar(require("node:path"));
42
+ const bluebird_1 = __importDefault(require("bluebird"));
43
+ const appium_adb_1 = require("appium-adb");
44
+ const chai_1 = __importDefault(require("chai"));
45
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
46
+ const { expect } = chai_1.default;
47
+ chai_1.default.use(chai_as_promised_1.default);
48
+ const sandbox = sinon_1.default.createSandbox();
49
+ function defaultStub(driver) {
50
+ sandbox.stub(driver, 'getDeviceDetails');
51
+ const adb = new appium_adb_1.ADB();
52
+ sandbox.stub(driver, 'createADB').returns(Promise.resolve(adb));
53
+ sandbox.mock(driver).expects('getDeviceInfoFromCaps').once().returns(Promise.resolve({
54
+ udid: '123',
55
+ emPort: false
56
+ }));
57
+ return adb;
58
+ }
59
+ describe('driver.js', function () {
60
+ this.afterEach(function () {
61
+ sandbox.restore();
62
+ });
63
+ describe('constructor', function () {
64
+ it('calls BaseDriver constructor with opts', function () {
65
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
66
+ expect(driver).to.exist;
67
+ expect(driver.opts).to.exist;
68
+ });
69
+ });
70
+ describe('createSession', function () {
71
+ it('should throw an error if app can not be found', async function () {
72
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
73
+ const adb = defaultStub(driver);
74
+ sandbox.stub(adb, 'getApiLevel').onFirstCall().returns(bluebird_1.default.resolve(24));
75
+ await expect(driver
76
+ .createSession({}, {}, {
77
+ firstMatch: [{}],
78
+ alwaysMatch: {
79
+ 'appium:app': 'foo.apk',
80
+ },
81
+ })).to.be.rejectedWith('does not exist or is not accessible');
82
+ });
83
+ it('should set sessionId', async function () {
84
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
85
+ const adb = defaultStub(driver);
86
+ sandbox.mock(driver).expects('checkAppPresent').once().returns(bluebird_1.default.resolve());
87
+ sandbox.stub(adb, 'getApiLevel').onFirstCall().returns(bluebird_1.default.resolve(24));
88
+ sandbox.mock(driver).expects('startUiAutomator2Session').once().returns(bluebird_1.default.resolve());
89
+ await driver.createSession({}, {}, {
90
+ firstMatch: [{}],
91
+ alwaysMatch: {
92
+ browserName: 'chrome',
93
+ },
94
+ });
95
+ expect(driver.sessionId).to.exist;
96
+ });
97
+ it('should set the default context', async function () {
98
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
99
+ const adb = defaultStub(driver);
100
+ sandbox.stub(adb, 'getApiLevel').onFirstCall().returns(bluebird_1.default.resolve(24));
101
+ sandbox.mock(driver).expects('checkAppPresent').returns(bluebird_1.default.resolve());
102
+ sandbox.mock(driver).expects('startUiAutomator2Session').returns(bluebird_1.default.resolve());
103
+ await driver.createSession({}, {}, {
104
+ firstMatch: [{}],
105
+ alwaysMatch: {
106
+ browserName: 'chrome',
107
+ },
108
+ });
109
+ expect(driver.curContext).to.equal('NATIVE_APP');
110
+ });
111
+ });
112
+ describe('checkAppPresent', function () {
113
+ it('should resolve if app present', async function () {
114
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
115
+ defaultStub(driver);
116
+ const app = path.resolve('.');
117
+ sandbox.mock(driver).expects('startUiAutomator2Session').returns(bluebird_1.default.resolve());
118
+ const configureAppStub = sandbox.stub(driver.helpers, 'configureApp').returns(app);
119
+ await driver.createSession({}, {}, {
120
+ firstMatch: [{}],
121
+ alwaysMatch: { 'appium:app': app },
122
+ });
123
+ await driver.checkAppPresent(); // should not error
124
+ // configureApp is shared between the two,
125
+ // so restore mock or the next test will fail
126
+ configureAppStub.restore();
127
+ });
128
+ it('should reject if app not present', async function () {
129
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
130
+ defaultStub(driver);
131
+ const app = path.resolve('asdfasdf');
132
+ const checkAppPresentStub = sandbox.stub(driver, 'checkAppPresent').returns(bluebird_1.default.resolve());
133
+ sandbox.mock(driver).expects('startUiAutomator2Session').returns(bluebird_1.default.resolve());
134
+ sandbox.mock(driver.helpers).expects('configureApp').returns(app);
135
+ await driver.createSession({}, {}, {
136
+ firstMatch: [{}],
137
+ alwaysMatch: { 'appium:app': app },
138
+ });
139
+ checkAppPresentStub.restore();
140
+ await expect(driver.checkAppPresent()).to.be.rejectedWith('Could not find');
141
+ });
142
+ });
143
+ describe('proxying', function () {
144
+ let driver;
145
+ before(function () {
146
+ driver = new driver_1.AndroidUiautomator2Driver({}, false);
147
+ defaultStub(driver);
148
+ driver.sessionId = 'abc';
149
+ });
150
+ describe('#proxyActive', function () {
151
+ it('should exist', function () {
152
+ expect(driver.proxyActive).to.be.an.instanceof(Function);
153
+ });
154
+ it('should return true', function () {
155
+ expect(driver.proxyActive('abc')).to.be.true;
156
+ });
157
+ it('should throw an error if session id is wrong', function () {
158
+ expect(() => {
159
+ driver.proxyActive('aaa');
160
+ }).to.throw;
161
+ });
162
+ });
163
+ describe('#getProxyAvoidList', function () {
164
+ it('should exist', function () {
165
+ expect(driver.getProxyAvoidList).to.be.an.instanceof(Function);
166
+ });
167
+ it('should return jwpProxyAvoid array', function () {
168
+ const avoidList = driver.getProxyAvoidList();
169
+ expect(avoidList).to.be.an.instanceof(Array);
170
+ expect(avoidList).to.eql(driver.jwpProxyAvoid);
171
+ });
172
+ it('should throw an error if session id is wrong', function () {
173
+ expect(() => {
174
+ driver.getProxyAvoidList();
175
+ }).to.not.throw;
176
+ });
177
+ describe('nativeWebScreenshot', function () {
178
+ let proxyAvoidList;
179
+ const nativeWebScreenshotFilter = (item) => item[0] === 'GET' && item[1].test('/session/xxx/screenshot/');
180
+ beforeEach(function () {
181
+ driver = new driver_1.AndroidUiautomator2Driver({}, false);
182
+ const adb = defaultStub(driver);
183
+ sandbox.mock(driver).expects('checkAppPresent').once().returns(bluebird_1.default.resolve());
184
+ sandbox.stub(adb, 'getApiLevel').onFirstCall().returns(bluebird_1.default.resolve(24));
185
+ sandbox.mock(driver).expects('startUiAutomator2Session').once().returns(bluebird_1.default.resolve());
186
+ });
187
+ describe('on webview mode', function () {
188
+ beforeEach(function () {
189
+ driver.chromedriver = true;
190
+ });
191
+ it('should proxy screenshot if nativeWebScreenshot is off on chromedriver mode', async function () {
192
+ await driver.createSession({}, {}, {
193
+ firstMatch: [{}],
194
+ alwaysMatch: {
195
+ platformName: 'Android',
196
+ 'appium:deviceName': 'device',
197
+ browserName: 'chrome',
198
+ 'appium:nativeWebScreenshot': false,
199
+ },
200
+ });
201
+ proxyAvoidList = driver.getProxyAvoidList().filter(nativeWebScreenshotFilter);
202
+ expect(proxyAvoidList).to.be.empty;
203
+ });
204
+ it('should not proxy screenshot if nativeWebScreenshot is on on chromedriver mode', async function () {
205
+ await driver.createSession({}, {}, {
206
+ firstMatch: [{}],
207
+ alwaysMatch: {
208
+ platformName: 'Android',
209
+ 'appium:deviceName': 'device',
210
+ browserName: 'chrome',
211
+ 'appium:nativeWebScreenshot': true,
212
+ },
213
+ });
214
+ proxyAvoidList = driver.getProxyAvoidList().filter(nativeWebScreenshotFilter);
215
+ expect(proxyAvoidList).to.not.be.empty;
216
+ });
217
+ });
218
+ describe('on native mode', function () {
219
+ it('should never proxy screenshot regardless of nativeWebScreenshot setting (on)', async function () {
220
+ // nativeWebScreenshot on
221
+ await driver.createSession({}, {}, {
222
+ firstMatch: [{}],
223
+ alwaysMatch: {
224
+ platformName: 'Android',
225
+ 'appium:deviceName': 'device',
226
+ browserName: 'chrome',
227
+ 'appium:nativeWebScreenshot': true,
228
+ },
229
+ });
230
+ proxyAvoidList = driver.getProxyAvoidList().filter(nativeWebScreenshotFilter);
231
+ expect(proxyAvoidList).to.not.be.empty;
232
+ });
233
+ it('should never proxy screenshot regardless of nativeWebScreenshot setting (off)', async function () {
234
+ // nativeWebScreenshot off
235
+ await driver.createSession({}, {}, {
236
+ firstMatch: [{}],
237
+ alwaysMatch: {
238
+ platformName: 'Android',
239
+ 'appium:deviceName': 'device',
240
+ browserName: 'chrome',
241
+ 'appium:nativeWebScreenshot': false,
242
+ },
243
+ });
244
+ proxyAvoidList = driver.getProxyAvoidList().filter(nativeWebScreenshotFilter);
245
+ expect(proxyAvoidList).to.not.be.empty;
246
+ });
247
+ });
248
+ });
249
+ });
250
+ describe('#canProxy', function () {
251
+ it('should exist', function () {
252
+ expect(driver.canProxy).to.be.an.instanceof(Function);
253
+ });
254
+ it('should return true', function () {
255
+ expect(driver.canProxy('abc')).to.be.true;
256
+ });
257
+ it('should throw an error if session id is wrong', function () {
258
+ expect(() => {
259
+ driver.canProxy('aaa');
260
+ }).to.throw;
261
+ });
262
+ });
263
+ });
264
+ describe('magic first visible child xpath', function () {
265
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
266
+ it('should trap and proxy to special uia2 server endpoint', async function () {
267
+ defaultStub(driver);
268
+ driver.uiautomator2 = { jwproxy: { command: () => { } } };
269
+ const proxySpy = sandbox.stub(driver.uiautomator2.jwproxy, 'command');
270
+ await driver.doFindElementOrEls({
271
+ strategy: 'xpath',
272
+ selector: '/*[@firstVisible="true"]',
273
+ context: 'foo',
274
+ multiple: false,
275
+ });
276
+ expect(proxySpy.firstCall.args).to.eql([`/appium/element/foo/first_visible`, 'GET', {}]);
277
+ });
278
+ });
279
+ describe('magic scrollable view xpath', function () {
280
+ const driver = new driver_1.AndroidUiautomator2Driver({}, false);
281
+ it('should trap and rewrite as uiautomator locator', async function () {
282
+ defaultStub(driver);
283
+ driver.uiautomator2 = { jwproxy: { command: () => { } } };
284
+ const proxySpy = sandbox.stub(driver.uiautomator2.jwproxy, 'command');
285
+ await driver.doFindElementOrEls({
286
+ strategy: 'xpath',
287
+ selector: '//*[@scrollable="true"]',
288
+ context: 'foo',
289
+ multiple: false,
290
+ });
291
+ expect(proxySpy.firstCall.args).to.eql([
292
+ '/element',
293
+ 'POST',
294
+ {
295
+ context: 'foo',
296
+ multiple: false,
297
+ strategy: '-android uiautomator',
298
+ selector: 'new UiSelector().scrollable(true)',
299
+ },
300
+ ]);
301
+ });
302
+ });
303
+ describe('deleteSession', function () {
304
+ let driver;
305
+ beforeEach(function () {
306
+ driver = new driver_1.AndroidUiautomator2Driver({}, false);
307
+ driver.adb = new appium_adb_1.ADB();
308
+ driver.caps = {};
309
+ sandbox.stub(driver.adb, 'stopLogcat');
310
+ });
311
+ afterEach(function () {
312
+ sandbox.restore();
313
+ });
314
+ it('should call setDefaultHiddenApiPolicy', async function () {
315
+ sandbox.stub(driver.adb, 'getApiLevel').returns(28);
316
+ const setDefaultHiddenApiPolicyStub = sandbox.stub(driver.adb, 'setDefaultHiddenApiPolicy');
317
+ await driver.deleteSession();
318
+ expect(setDefaultHiddenApiPolicyStub.calledOnce).to.be.true;
319
+ });
320
+ it('should not call setDefaultHiddenApiPolicy', async function () {
321
+ sandbox.stub(driver.adb, 'getApiLevel').returns(27);
322
+ const setDefaultHiddenApiPolicyStub = sandbox.stub(driver.adb, 'setDefaultHiddenApiPolicy');
323
+ await driver.deleteSession();
324
+ expect(setDefaultHiddenApiPolicyStub.calledOnce).to.be.false;
325
+ });
326
+ });
327
+ });
328
+ //# sourceMappingURL=driver-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-specs.js","sourceRoot":"","sources":["../../../test/unit/driver-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=uiautomator2-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiautomator2-specs.d.ts","sourceRoot":"","sources":["../../../test/unit/uiautomator2-specs.ts"],"names":[],"mappings":""}