appium-uiautomator2-driver 6.6.1 → 6.6.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.
Files changed (30) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/lib/commands/screenshot.d.ts +17 -14
  3. package/build/lib/commands/screenshot.d.ts.map +1 -1
  4. package/build/lib/commands/screenshot.js +50 -36
  5. package/build/lib/commands/screenshot.js.map +1 -1
  6. package/build/test/unit/commands/general-specs.d.ts +2 -0
  7. package/build/test/unit/commands/general-specs.d.ts.map +1 -0
  8. package/build/test/unit/commands/general-specs.js +80 -0
  9. package/build/test/unit/commands/general-specs.js.map +1 -0
  10. package/build/test/unit/commands/screenshot-specs.d.ts +2 -0
  11. package/build/test/unit/commands/screenshot-specs.d.ts.map +1 -0
  12. package/build/test/unit/commands/screenshot-specs.js +124 -0
  13. package/build/test/unit/commands/screenshot-specs.js.map +1 -0
  14. package/build/test/unit/css-converter-specs.d.ts +2 -0
  15. package/build/test/unit/css-converter-specs.d.ts.map +1 -0
  16. package/build/test/unit/css-converter-specs.js +68 -0
  17. package/build/test/unit/css-converter-specs.js.map +1 -0
  18. package/build/test/unit/driver-specs.d.ts +2 -0
  19. package/build/test/unit/driver-specs.d.ts.map +1 -0
  20. package/build/test/unit/driver-specs.js +328 -0
  21. package/build/test/unit/driver-specs.js.map +1 -0
  22. package/build/test/unit/uiautomator2-specs.d.ts +2 -0
  23. package/build/test/unit/uiautomator2-specs.d.ts.map +1 -0
  24. package/build/test/unit/uiautomator2-specs.js +325 -0
  25. package/build/test/unit/uiautomator2-specs.js.map +1 -0
  26. package/build/tsconfig.tsbuildinfo +1 -1
  27. package/lib/commands/screenshot.ts +146 -0
  28. package/npm-shrinkwrap.json +8 -8
  29. package/package.json +2 -2
  30. package/lib/commands/screenshot.js +0 -116
@@ -0,0 +1,325 @@
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 appium_adb_1 = require("appium-adb");
40
+ const test_support_1 = require("@appium/test-support");
41
+ const uiautomator2_1 = require("../../lib/uiautomator2");
42
+ const helpers = __importStar(require("../../lib/helpers"));
43
+ const logger_1 = __importDefault(require("../../lib/logger"));
44
+ const chai_1 = require("chai");
45
+ describe('UiAutomator2', function () {
46
+ let uiautomator2;
47
+ const adb = new appium_adb_1.ADB();
48
+ const serverApk = {
49
+ 'appPath': 'path/to/appium-uiautomator2-server.apk',
50
+ 'appId': 'io.appium.uiautomator2.server'
51
+ };
52
+ const serverTestApk = {
53
+ 'appPath': 'path/to/appium-uiautomator2-server-test.apk',
54
+ 'appId': 'io.appium.uiautomator2.server.test'
55
+ };
56
+ const defaultUIA2ServerOptions = {
57
+ systemPort: 4724,
58
+ host: 'localhost',
59
+ disableWindowAnimation: false
60
+ };
61
+ describe('shouldUninstallServerPackages', function () {
62
+ beforeEach(function () {
63
+ uiautomator2 = new uiautomator2_1.UiAutomator2Server(logger_1.default, {
64
+ adb, ...defaultUIA2ServerOptions
65
+ });
66
+ });
67
+ it('with newer servers are installed', function () {
68
+ // @ts-expect-error - private method
69
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
70
+ {
71
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
72
+ ...serverApk
73
+ },
74
+ {
75
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
76
+ ...serverTestApk
77
+ }
78
+ ])).to.be.true;
79
+ }),
80
+ it('with newer server is installed but the other could be old one', function () {
81
+ // Then, enforce to uninstall all apks
82
+ // @ts-expect-error - private method
83
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
84
+ {
85
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
86
+ ...serverApk
87
+ },
88
+ {
89
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
90
+ ...serverTestApk
91
+ }
92
+ ])).to.be.true;
93
+ }),
94
+ it('with newer server is installed', function () {
95
+ // @ts-expect-error - private method
96
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
97
+ {
98
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
99
+ ...serverApk
100
+ },
101
+ {
102
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
103
+ ...serverTestApk
104
+ }
105
+ ])).to.be.false;
106
+ }),
107
+ it('with older servers are installed', function () {
108
+ // then, installing newer serves are sufficient.
109
+ // @ts-expect-error - private method
110
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
111
+ {
112
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
113
+ ...serverApk
114
+ },
115
+ {
116
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
117
+ ...serverTestApk
118
+ }
119
+ ])).to.be.false;
120
+ }),
121
+ it('with no server are installed', function () {
122
+ // @ts-expect-error - private method
123
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
124
+ {
125
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
126
+ ...serverApk
127
+ },
128
+ {
129
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
130
+ ...serverTestApk
131
+ }
132
+ ])).to.be.false;
133
+ });
134
+ });
135
+ describe('shouldInstallServerPackages', function () {
136
+ beforeEach(function () {
137
+ uiautomator2 = new uiautomator2_1.UiAutomator2Server(logger_1.default, {
138
+ adb, ...defaultUIA2ServerOptions
139
+ });
140
+ });
141
+ it('with newer servers are installed', function () {
142
+ // @ts-expect-error - private method
143
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
144
+ {
145
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
146
+ ...serverApk
147
+ },
148
+ {
149
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
150
+ ...serverTestApk
151
+ }
152
+ // since installation may fail
153
+ ])).to.be.false;
154
+ }),
155
+ it('with newer server is installed but the other could be old one', function () {
156
+ // Then, enforce to uninstall all apks
157
+ // @ts-expect-error - private method
158
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
159
+ {
160
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
161
+ ...serverApk
162
+ },
163
+ {
164
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
165
+ ...serverTestApk
166
+ }
167
+ ])).to.be.true;
168
+ }),
169
+ it('with newer server is installed', function () {
170
+ // @ts-expect-error - private method
171
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
172
+ {
173
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
174
+ ...serverApk
175
+ },
176
+ {
177
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
178
+ ...serverTestApk
179
+ }
180
+ ])).to.be.false;
181
+ }),
182
+ it('with older servers are installed', function () {
183
+ // then, installing newer serves are sufficient.
184
+ // @ts-expect-error - private method
185
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
186
+ {
187
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
188
+ ...serverApk
189
+ },
190
+ {
191
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
192
+ ...serverTestApk
193
+ }
194
+ ])).to.be.true;
195
+ }),
196
+ it('with no server are installed', function () {
197
+ // @ts-expect-error - private method
198
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
199
+ {
200
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
201
+ ...serverApk
202
+ },
203
+ {
204
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
205
+ ...serverTestApk
206
+ }
207
+ ])).to.be.true;
208
+ });
209
+ });
210
+ describe('installServerApk', (0, test_support_1.withMocks)({ adb, helpers }, (mocks) => {
211
+ beforeEach(function () {
212
+ uiautomator2 = new uiautomator2_1.UiAutomator2Server(logger_1.default, {
213
+ adb, ...defaultUIA2ServerOptions
214
+ });
215
+ });
216
+ afterEach(function () {
217
+ mocks.verify();
218
+ });
219
+ it('new server and server.test are older than installed version', async function () {
220
+ mocks.helpers.expects('isWriteable').never();
221
+ // SERVER_PACKAGE_ID
222
+ mocks.adb.expects('getApplicationInstallState').once()
223
+ .returns(adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED);
224
+ // SERVER_PACKAGE_ID and SERVER_TEST_PACKAGE_ID
225
+ mocks.adb.expects('checkApkCert').twice().returns(true);
226
+ mocks.adb.expects('uninstallApk').twice();
227
+ mocks.adb.expects('install').twice();
228
+ mocks.adb.expects('isAppInstalled')
229
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
230
+ .once().returns(true);
231
+ mocks.adb.expects('shell')
232
+ .withExactArgs(['pm', 'list', 'instrumentation'])
233
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
234
+ await uiautomator2.installServerApk();
235
+ });
236
+ it('new server and server.test are newer than installed version', async function () {
237
+ mocks.helpers.expects('isWriteable').never();
238
+ // SERVER_PACKAGE_ID
239
+ mocks.adb.expects('getApplicationInstallState').once()
240
+ .returns(adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED);
241
+ // SERVER_PACKAGE_ID and SERVER_TEST_PACKAGE_ID
242
+ mocks.adb.expects('checkApkCert').twice().returns(true);
243
+ mocks.adb.expects('isAppInstalled')
244
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
245
+ .once().returns(true);
246
+ mocks.adb.expects('uninstallApk').twice();
247
+ mocks.adb.expects('install').twice();
248
+ mocks.adb.expects('shell')
249
+ .withExactArgs(['pm', 'list', 'instrumentation'])
250
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
251
+ await uiautomator2.installServerApk();
252
+ });
253
+ it('new server and server.test are the same as installed version', async function () {
254
+ mocks.helpers.expects('isWriteable').never();
255
+ // SERVER_PACKAGE_ID
256
+ mocks.adb.expects('getApplicationInstallState').once()
257
+ .returns(adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED);
258
+ // SERVER_PACKAGE_ID and SERVER_TEST_PACKAGE_ID
259
+ mocks.adb.expects('checkApkCert').twice().returns(true);
260
+ mocks.adb.expects('isAppInstalled')
261
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
262
+ .once().returns(true);
263
+ mocks.adb.expects('uninstallApk').never();
264
+ mocks.adb.expects('install').never();
265
+ mocks.adb.expects('shell')
266
+ .withExactArgs(['pm', 'list', 'instrumentation'])
267
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
268
+ await uiautomator2.installServerApk();
269
+ });
270
+ it('new server and server.test are not installed', async function () {
271
+ mocks.helpers.expects('isWriteable').atLeast(1)
272
+ .returns(true);
273
+ // SERVER_PACKAGE_ID
274
+ mocks.adb.expects('getApplicationInstallState').once()
275
+ .returns(adb.APP_INSTALL_STATE.NOT_INSTALLED);
276
+ // SERVER_PACKAGE_ID and SERVER_TEST_PACKAGE_ID
277
+ mocks.adb.expects('checkApkCert').twice().returns(false);
278
+ mocks.adb.expects('sign').twice();
279
+ // SERVER_TEST_PACKAGE_ID
280
+ mocks.adb.expects('isAppInstalled')
281
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
282
+ .once().returns(false);
283
+ mocks.adb.expects('uninstallApk').never();
284
+ mocks.adb.expects('install').twice();
285
+ mocks.adb.expects('shell').withExactArgs(['pm', 'list', 'instrumentation'])
286
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
287
+ await uiautomator2.installServerApk();
288
+ });
289
+ it('version numbers of new server and server.test are unknown', async function () {
290
+ mocks.helpers.expects('isWriteable').never();
291
+ // SERVER_PACKAGE_ID
292
+ mocks.adb.expects('getApplicationInstallState').once()
293
+ .returns(adb.APP_INSTALL_STATE.UNKNOWN);
294
+ // SERVER_PACKAGE_ID and SERVER_TEST_PACKAGE_ID
295
+ mocks.adb.expects('checkApkCert').twice().returns(true);
296
+ mocks.adb.expects('isAppInstalled')
297
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
298
+ .once().returns(false);
299
+ mocks.adb.expects('uninstallApk').twice();
300
+ mocks.adb.expects('install').twice();
301
+ mocks.adb.expects('shell')
302
+ .withExactArgs(['pm', 'list', 'instrumentation'])
303
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
304
+ await uiautomator2.installServerApk();
305
+ });
306
+ it('a server is installed but server.test is not', async function () {
307
+ mocks.helpers.expects('isWriteable').never();
308
+ // SERVER_PACKAGE_ID
309
+ mocks.adb.expects('getApplicationInstallState').once()
310
+ .returns(adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED);
311
+ // SERVER_PACKAGE_ID and SERVER_TEST_PACKAGE_ID
312
+ mocks.adb.expects('checkApkCert').twice().returns(true);
313
+ mocks.adb.expects('isAppInstalled')
314
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
315
+ .once().returns(false);
316
+ mocks.adb.expects('uninstallApk').never();
317
+ mocks.adb.expects('install').twice();
318
+ mocks.adb.expects('shell')
319
+ .withExactArgs(['pm', 'list', 'instrumentation'])
320
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
321
+ await uiautomator2.installServerApk();
322
+ });
323
+ }));
324
+ });
325
+ //# sourceMappingURL=uiautomator2-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiautomator2-specs.js","sourceRoot":"","sources":["../../../test/unit/uiautomator2-specs.ts"],"names":[],"mappings":"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"}