appium-webdriveragent 10.5.4 → 11.0.0

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 (69) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/Scripts/{build-webdriveragent.js → build-webdriveragent.mjs} +13 -7
  3. package/Scripts/{fetch-prebuilt-wda.js → fetch-prebuilt-wda.mjs} +17 -9
  4. package/Scripts/update-wda-version.mjs +42 -0
  5. package/WebDriverAgentLib/Info.plist +2 -2
  6. package/build/index.d.ts +1 -1
  7. package/build/index.d.ts.map +1 -1
  8. package/build/index.js +1 -2
  9. package/build/index.js.map +1 -1
  10. package/build/lib/check-dependencies.d.ts +2 -7
  11. package/build/lib/check-dependencies.d.ts.map +1 -1
  12. package/build/lib/check-dependencies.js +0 -11
  13. package/build/lib/check-dependencies.js.map +1 -1
  14. package/build/lib/constants.d.ts +12 -12
  15. package/build/lib/constants.d.ts.map +1 -1
  16. package/build/lib/constants.js +14 -26
  17. package/build/lib/constants.js.map +1 -1
  18. package/build/lib/logger.d.ts +1 -2
  19. package/build/lib/logger.d.ts.map +1 -1
  20. package/build/lib/logger.js +2 -2
  21. package/build/lib/logger.js.map +1 -1
  22. package/build/lib/no-session-proxy.d.ts +5 -5
  23. package/build/lib/no-session-proxy.d.ts.map +1 -1
  24. package/build/lib/no-session-proxy.js +0 -1
  25. package/build/lib/no-session-proxy.js.map +1 -1
  26. package/build/lib/utils.d.ts +53 -96
  27. package/build/lib/utils.d.ts.map +1 -1
  28. package/build/lib/utils.js +124 -110
  29. package/build/lib/utils.js.map +1 -1
  30. package/build/lib/webdriveragent.d.ts +123 -170
  31. package/build/lib/webdriveragent.d.ts.map +1 -1
  32. package/build/lib/webdriveragent.js +319 -349
  33. package/build/lib/webdriveragent.js.map +1 -1
  34. package/build/lib/xcodebuild.d.ts +66 -77
  35. package/build/lib/xcodebuild.d.ts.map +1 -1
  36. package/build/lib/xcodebuild.js +123 -92
  37. package/build/lib/xcodebuild.js.map +1 -1
  38. package/build/test/functional/desired.d.ts +3 -0
  39. package/build/test/functional/desired.d.ts.map +1 -0
  40. package/build/test/functional/desired.js +9 -0
  41. package/build/test/functional/desired.js.map +1 -0
  42. package/build/test/functional/helpers/simulator.d.ts +5 -0
  43. package/build/test/functional/helpers/simulator.d.ts.map +1 -0
  44. package/build/test/functional/helpers/simulator.js +39 -0
  45. package/build/test/functional/helpers/simulator.js.map +1 -0
  46. package/build/test/functional/webdriveragent-e2e-specs.d.ts +2 -0
  47. package/build/test/functional/webdriveragent-e2e-specs.d.ts.map +1 -0
  48. package/build/test/functional/webdriveragent-e2e-specs.js +133 -0
  49. package/build/test/functional/webdriveragent-e2e-specs.js.map +1 -0
  50. package/build/test/unit/utils-specs.d.ts +2 -0
  51. package/build/test/unit/utils-specs.d.ts.map +1 -0
  52. package/build/test/unit/utils-specs.js +161 -0
  53. package/build/test/unit/utils-specs.js.map +1 -0
  54. package/build/test/unit/webdriveragent-specs.d.ts +2 -0
  55. package/build/test/unit/webdriveragent-specs.d.ts.map +1 -0
  56. package/build/test/unit/webdriveragent-specs.js +424 -0
  57. package/build/test/unit/webdriveragent-specs.js.map +1 -0
  58. package/build/tsconfig.tsbuildinfo +1 -0
  59. package/index.ts +1 -1
  60. package/lib/{check-dependencies.js → check-dependencies.ts} +4 -13
  61. package/lib/constants.ts +18 -0
  62. package/lib/logger.ts +3 -0
  63. package/lib/{no-session-proxy.js → no-session-proxy.ts} +4 -5
  64. package/lib/{utils.js → utils.ts} +101 -111
  65. package/lib/{webdriveragent.js → webdriveragent.ts} +353 -390
  66. package/lib/{xcodebuild.js → xcodebuild.ts} +145 -114
  67. package/package.json +7 -9
  68. package/lib/constants.js +0 -24
  69. package/lib/logger.js +0 -5
@@ -0,0 +1,424 @@
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 chai_1 = __importStar(require("chai"));
40
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
41
+ const utils_1 = require("../../lib/utils");
42
+ const webdriveragent_1 = require("../../lib/webdriveragent");
43
+ const utils = __importStar(require("../../lib/utils"));
44
+ const path_1 = __importDefault(require("path"));
45
+ const lodash_1 = __importDefault(require("lodash"));
46
+ const sinon_1 = __importDefault(require("sinon"));
47
+ chai_1.default.use(chai_as_promised_1.default);
48
+ const fakeConstructorArgs = {
49
+ device: {
50
+ udid: 'some-sim-udid',
51
+ simctl: {},
52
+ devicectl: {},
53
+ idb: null
54
+ },
55
+ platformVersion: '9',
56
+ host: 'me',
57
+ realDevice: false
58
+ };
59
+ const defaultAgentPath = path_1.default.resolve(utils_1.BOOTSTRAP_PATH, 'WebDriverAgent.xcodeproj');
60
+ const customBootstrapPath = '/path/to/wda';
61
+ const customAgentPath = '/path/to/some/agent/WebDriverAgent.xcodeproj';
62
+ const customDerivedDataPath = '/path/to/some/agent/DerivedData/';
63
+ describe('WebDriverAgent', function () {
64
+ describe('Constructor', function () {
65
+ it('should have a default wda agent if not specified', function () {
66
+ const agent = new webdriveragent_1.WebDriverAgent(fakeConstructorArgs);
67
+ (0, chai_1.expect)(agent.bootstrapPath).to.eql(utils_1.BOOTSTRAP_PATH);
68
+ (0, chai_1.expect)(agent.agentPath).to.eql(defaultAgentPath);
69
+ });
70
+ it('should have custom wda bootstrap and default agent if only bootstrap specified', function () {
71
+ const agent = new webdriveragent_1.WebDriverAgent(lodash_1.default.defaults({
72
+ bootstrapPath: customBootstrapPath,
73
+ }, fakeConstructorArgs));
74
+ (0, chai_1.expect)(agent.bootstrapPath).to.eql(customBootstrapPath);
75
+ (0, chai_1.expect)(agent.agentPath).to.eql(path_1.default.resolve(customBootstrapPath, 'WebDriverAgent.xcodeproj'));
76
+ });
77
+ it('should have custom wda bootstrap and agent if both specified', function () {
78
+ const agent = new webdriveragent_1.WebDriverAgent(lodash_1.default.defaults({
79
+ bootstrapPath: customBootstrapPath,
80
+ agentPath: customAgentPath,
81
+ }, fakeConstructorArgs));
82
+ (0, chai_1.expect)(agent.bootstrapPath).to.eql(customBootstrapPath);
83
+ (0, chai_1.expect)(agent.agentPath).to.eql(customAgentPath);
84
+ });
85
+ it('should have custom derivedDataPath if specified', function () {
86
+ const agent = new webdriveragent_1.WebDriverAgent(lodash_1.default.defaults({
87
+ derivedDataPath: customDerivedDataPath
88
+ }, fakeConstructorArgs));
89
+ if (agent.xcodebuild) {
90
+ (0, chai_1.expect)(agent.xcodebuild.derivedDataPath).to.eql(customDerivedDataPath);
91
+ }
92
+ });
93
+ });
94
+ describe('launch', function () {
95
+ it('should use webDriverAgentUrl override and return current status', async function () {
96
+ const override = 'http://mockurl:8100/';
97
+ const args = Object.assign({}, fakeConstructorArgs);
98
+ args.webDriverAgentUrl = override;
99
+ const agent = new webdriveragent_1.WebDriverAgent(args);
100
+ const wdaStub = sinon_1.default.stub(agent, 'getStatus');
101
+ wdaStub.callsFake(function () {
102
+ return { build: 'data' };
103
+ });
104
+ await (0, chai_1.expect)(agent.launch('sessionId')).to.eventually.eql({ build: 'data' });
105
+ (0, chai_1.expect)(agent.url.href).to.eql(override);
106
+ if (agent.jwproxy) {
107
+ (0, chai_1.expect)(agent.jwproxy.server).to.eql('mockurl');
108
+ (0, chai_1.expect)(agent.jwproxy.port).to.eql(8100);
109
+ (0, chai_1.expect)(agent.jwproxy.base).to.eql('');
110
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('http');
111
+ }
112
+ if (agent.noSessionProxy) {
113
+ (0, chai_1.expect)(agent.noSessionProxy.server).to.eql('mockurl');
114
+ (0, chai_1.expect)(agent.noSessionProxy.port).to.eql(8100);
115
+ (0, chai_1.expect)(agent.noSessionProxy.base).to.eql('');
116
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('http');
117
+ }
118
+ wdaStub.reset();
119
+ });
120
+ });
121
+ describe('use wda proxy url', function () {
122
+ it('should use webDriverAgentUrl wda proxy url', async function () {
123
+ const override = 'http://127.0.0.1:8100/aabbccdd';
124
+ const args = Object.assign({}, fakeConstructorArgs);
125
+ args.webDriverAgentUrl = override;
126
+ const agent = new webdriveragent_1.WebDriverAgent(args);
127
+ const wdaStub = sinon_1.default.stub(agent, 'getStatus');
128
+ wdaStub.callsFake(function () {
129
+ return { build: 'data' };
130
+ });
131
+ await (0, chai_1.expect)(agent.launch('sessionId')).to.eventually.eql({ build: 'data' });
132
+ (0, chai_1.expect)(agent.url.port).to.eql('8100');
133
+ (0, chai_1.expect)(agent.url.hostname).to.eql('127.0.0.1');
134
+ (0, chai_1.expect)(agent.url.path).to.eql('/aabbccdd');
135
+ if (agent.jwproxy) {
136
+ (0, chai_1.expect)(agent.jwproxy.server).to.eql('127.0.0.1');
137
+ (0, chai_1.expect)(agent.jwproxy.port).to.eql(8100);
138
+ (0, chai_1.expect)(agent.jwproxy.base).to.eql('/aabbccdd');
139
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('http');
140
+ }
141
+ if (agent.noSessionProxy) {
142
+ (0, chai_1.expect)(agent.noSessionProxy.server).to.eql('127.0.0.1');
143
+ (0, chai_1.expect)(agent.noSessionProxy.port).to.eql(8100);
144
+ (0, chai_1.expect)(agent.noSessionProxy.base).to.eql('/aabbccdd');
145
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('http');
146
+ }
147
+ });
148
+ });
149
+ describe('get url', function () {
150
+ it('should use default WDA listening url', function () {
151
+ const args = Object.assign({}, fakeConstructorArgs);
152
+ const agent = new webdriveragent_1.WebDriverAgent(args);
153
+ (0, chai_1.expect)(agent.url.href).to.eql('http://127.0.0.1:8100/');
154
+ agent.setupProxies('mysession');
155
+ if (agent.jwproxy) {
156
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('http');
157
+ }
158
+ if (agent.noSessionProxy) {
159
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('http');
160
+ }
161
+ });
162
+ it('should use default WDA listening url with emply base url', function () {
163
+ const wdaLocalPort = '9100';
164
+ const wdaBaseUrl = '';
165
+ const args = Object.assign({}, fakeConstructorArgs);
166
+ args.wdaBaseUrl = wdaBaseUrl;
167
+ args.wdaLocalPort = parseInt(wdaLocalPort, 10);
168
+ const agent = new webdriveragent_1.WebDriverAgent(args);
169
+ (0, chai_1.expect)(agent.url.href).to.eql('http://127.0.0.1:9100/');
170
+ agent.setupProxies('mysession');
171
+ if (agent.jwproxy) {
172
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('http');
173
+ }
174
+ if (agent.noSessionProxy) {
175
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('http');
176
+ }
177
+ });
178
+ it('should use customised WDA listening url', function () {
179
+ const wdaLocalPort = '9100';
180
+ const wdaBaseUrl = 'http://mockurl';
181
+ const args = Object.assign({}, fakeConstructorArgs);
182
+ args.wdaBaseUrl = wdaBaseUrl;
183
+ args.wdaLocalPort = parseInt(wdaLocalPort, 10);
184
+ const agent = new webdriveragent_1.WebDriverAgent(args);
185
+ (0, chai_1.expect)(agent.url.href).to.eql('http://mockurl:9100/');
186
+ agent.setupProxies('mysession');
187
+ if (agent.jwproxy) {
188
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('http');
189
+ }
190
+ if (agent.noSessionProxy) {
191
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('http');
192
+ }
193
+ });
194
+ it('should use customised WDA listening url with slash', function () {
195
+ const wdaLocalPort = '9100';
196
+ const wdaBaseUrl = 'http://mockurl/';
197
+ const args = Object.assign({}, fakeConstructorArgs);
198
+ args.wdaBaseUrl = wdaBaseUrl;
199
+ args.wdaLocalPort = parseInt(wdaLocalPort, 10);
200
+ const agent = new webdriveragent_1.WebDriverAgent(args);
201
+ (0, chai_1.expect)(agent.url.href).to.eql('http://mockurl:9100/');
202
+ agent.setupProxies('mysession');
203
+ if (agent.jwproxy) {
204
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('http');
205
+ }
206
+ if (agent.noSessionProxy) {
207
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('http');
208
+ }
209
+ });
210
+ it('should use the given webDriverAgentUrl and ignore other params', function () {
211
+ const args = Object.assign({}, fakeConstructorArgs);
212
+ args.wdaBaseUrl = 'http://mockurl/';
213
+ args.wdaLocalPort = 9100;
214
+ args.webDriverAgentUrl = 'https://127.0.0.1:8100/';
215
+ const agent = new webdriveragent_1.WebDriverAgent(args);
216
+ (0, chai_1.expect)(agent.url.href).to.eql('https://127.0.0.1:8100/');
217
+ });
218
+ it('should set scheme to https for https webDriverAgentUrl', function () {
219
+ const args = Object.assign({}, fakeConstructorArgs);
220
+ args.webDriverAgentUrl = 'https://127.0.0.1:8100/';
221
+ const agent = new webdriveragent_1.WebDriverAgent(args);
222
+ agent.setupProxies('mysession');
223
+ if (agent.jwproxy) {
224
+ (0, chai_1.expect)(agent.jwproxy.scheme).to.eql('https');
225
+ }
226
+ if (agent.noSessionProxy) {
227
+ (0, chai_1.expect)(agent.noSessionProxy.scheme).to.eql('https');
228
+ }
229
+ });
230
+ });
231
+ describe('setupCaching()', function () {
232
+ let wda;
233
+ let wdaStub;
234
+ let wdaStubUninstall;
235
+ const getTimestampStub = sinon_1.default.stub(utils, 'getWDAUpgradeTimestamp');
236
+ beforeEach(function () {
237
+ wda = new webdriveragent_1.WebDriverAgent(fakeConstructorArgs);
238
+ wdaStub = sinon_1.default.stub(wda, 'getStatus');
239
+ wdaStubUninstall = sinon_1.default.stub(wda, 'uninstall');
240
+ });
241
+ afterEach(function () {
242
+ for (const stub of [wdaStub, wdaStubUninstall, getTimestampStub]) {
243
+ if (stub) {
244
+ stub.reset();
245
+ }
246
+ }
247
+ });
248
+ it('should not call uninstall since no Running WDA', async function () {
249
+ wdaStub.callsFake(function () {
250
+ return null;
251
+ });
252
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
253
+ await wda.setupCaching();
254
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
255
+ (0, chai_1.expect)(wdaStubUninstall.notCalled).to.be.true;
256
+ (0, chai_1.expect)(lodash_1.default.isUndefined(wda.webDriverAgentUrl)).to.be.true;
257
+ });
258
+ it('should not call uninstall since running WDA has only time', async function () {
259
+ wdaStub.callsFake(function () {
260
+ return { build: { time: 'Jun 24 2018 17:08:21' } };
261
+ });
262
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
263
+ await wda.setupCaching();
264
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
265
+ (0, chai_1.expect)(wdaStubUninstall.notCalled).to.be.true;
266
+ (0, chai_1.expect)(wda.webDriverAgentUrl).to.equal('http://127.0.0.1:8100/');
267
+ });
268
+ it('should call uninstall once since bundle id is not default without updatedWDABundleId capability', async function () {
269
+ wdaStub.callsFake(function () {
270
+ return { build: { time: 'Jun 24 2018 17:08:21', productBundleIdentifier: 'com.example.WebDriverAgent' } };
271
+ });
272
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
273
+ await wda.setupCaching();
274
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
275
+ (0, chai_1.expect)(wdaStubUninstall.calledOnce).to.be.true;
276
+ (0, chai_1.expect)(lodash_1.default.isUndefined(wda.webDriverAgentUrl)).to.be.true;
277
+ });
278
+ it('should call uninstall once since bundle id is different with updatedWDABundleId capability', async function () {
279
+ wdaStub.callsFake(function () {
280
+ return { build: { time: 'Jun 24 2018 17:08:21', productBundleIdentifier: 'com.example.different.WebDriverAgent' } };
281
+ });
282
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
283
+ await wda.setupCaching();
284
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
285
+ (0, chai_1.expect)(wdaStubUninstall.calledOnce).to.be.true;
286
+ (0, chai_1.expect)(lodash_1.default.isUndefined(wda.webDriverAgentUrl)).to.be.true;
287
+ });
288
+ it('should not call uninstall since bundle id is equal to updatedWDABundleId capability', async function () {
289
+ wda = new webdriveragent_1.WebDriverAgent({ ...fakeConstructorArgs, updatedWDABundleId: 'com.example.WebDriverAgent' });
290
+ wdaStub = sinon_1.default.stub(wda, 'getStatus');
291
+ wdaStubUninstall = sinon_1.default.stub(wda, 'uninstall');
292
+ wdaStub.callsFake(function () {
293
+ return { build: { time: 'Jun 24 2018 17:08:21', productBundleIdentifier: 'com.example.WebDriverAgent' } };
294
+ });
295
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
296
+ await wda.setupCaching();
297
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
298
+ (0, chai_1.expect)(wdaStubUninstall.notCalled).to.be.true;
299
+ (0, chai_1.expect)(wda.webDriverAgentUrl).to.equal('http://127.0.0.1:8100/');
300
+ });
301
+ it('should call uninstall if current revision differs from the bundled one', async function () {
302
+ wdaStub.callsFake(function () {
303
+ return { build: { upgradedAt: '1' } };
304
+ });
305
+ getTimestampStub.callsFake(() => '2');
306
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
307
+ await wda.setupCaching();
308
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
309
+ (0, chai_1.expect)(wdaStubUninstall.calledOnce).to.be.true;
310
+ });
311
+ it('should not call uninstall if current revision is the same as the bundled one', async function () {
312
+ wdaStub.callsFake(function () {
313
+ return { build: { upgradedAt: '1' } };
314
+ });
315
+ getTimestampStub.callsFake(() => '1');
316
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
317
+ await wda.setupCaching();
318
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
319
+ (0, chai_1.expect)(wdaStubUninstall.notCalled).to.be.true;
320
+ });
321
+ it('should not call uninstall if current revision cannot be retrieved from WDA status', async function () {
322
+ wdaStub.callsFake(function () {
323
+ return { build: {} };
324
+ });
325
+ getTimestampStub.callsFake(() => '1');
326
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
327
+ await wda.setupCaching();
328
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
329
+ (0, chai_1.expect)(wdaStubUninstall.notCalled).to.be.true;
330
+ });
331
+ it('should not call uninstall if current revision cannot be retrieved from the file system', async function () {
332
+ wdaStub.callsFake(function () {
333
+ return { build: { upgradedAt: '1' } };
334
+ });
335
+ getTimestampStub.callsFake(() => null);
336
+ wdaStubUninstall.callsFake(lodash_1.default.noop);
337
+ await wda.setupCaching();
338
+ (0, chai_1.expect)(wdaStub.calledOnce).to.be.true;
339
+ (0, chai_1.expect)(wdaStubUninstall.notCalled).to.be.true;
340
+ });
341
+ describe('uninstall', function () {
342
+ let device;
343
+ let wda;
344
+ let deviceGetBundleIdsStub;
345
+ let deviceRemoveAppStub;
346
+ beforeEach(function () {
347
+ device = {
348
+ getUserInstalledBundleIdsByBundleName: () => { },
349
+ removeApp: () => { }
350
+ };
351
+ wda = new webdriveragent_1.WebDriverAgent({ device });
352
+ deviceGetBundleIdsStub = sinon_1.default.stub(device, 'getUserInstalledBundleIdsByBundleName');
353
+ deviceRemoveAppStub = sinon_1.default.stub(device, 'removeApp');
354
+ });
355
+ afterEach(function () {
356
+ for (const stub of [deviceGetBundleIdsStub, deviceRemoveAppStub]) {
357
+ if (stub) {
358
+ stub.reset();
359
+ }
360
+ }
361
+ });
362
+ it('should not call uninstall', async function () {
363
+ deviceGetBundleIdsStub.callsFake(() => []);
364
+ await wda.uninstall();
365
+ (0, chai_1.expect)(deviceGetBundleIdsStub.calledOnce).to.be.true;
366
+ (0, chai_1.expect)(deviceRemoveAppStub.notCalled).to.be.true;
367
+ });
368
+ it('should call uninstall once', async function () {
369
+ const uninstalledBundIds = [];
370
+ deviceGetBundleIdsStub.callsFake(() => ['com.appium.WDA1']);
371
+ deviceRemoveAppStub.callsFake((id) => uninstalledBundIds.push(id));
372
+ await wda.uninstall();
373
+ (0, chai_1.expect)(deviceGetBundleIdsStub.calledOnce).to.be.true;
374
+ (0, chai_1.expect)(deviceRemoveAppStub.calledOnce).to.be.true;
375
+ (0, chai_1.expect)(uninstalledBundIds).to.eql(['com.appium.WDA1']);
376
+ });
377
+ it('should call uninstall twice', async function () {
378
+ const uninstalledBundIds = [];
379
+ deviceGetBundleIdsStub.callsFake(() => ['com.appium.WDA1', 'com.appium.WDA2']);
380
+ deviceRemoveAppStub.callsFake((id) => uninstalledBundIds.push(id));
381
+ await wda.uninstall();
382
+ (0, chai_1.expect)(deviceGetBundleIdsStub.calledOnce).to.be.true;
383
+ (0, chai_1.expect)(deviceRemoveAppStub.calledTwice).to.be.true;
384
+ (0, chai_1.expect)(uninstalledBundIds).to.eql(['com.appium.WDA1', 'com.appium.WDA2']);
385
+ });
386
+ });
387
+ });
388
+ describe('usePreinstalledWDA related functions', function () {
389
+ describe('bundleIdForXctest', function () {
390
+ it('should have xctrunner automatically', function () {
391
+ const args = Object.assign({}, fakeConstructorArgs);
392
+ args.updatedWDABundleId = 'io.appium.wda';
393
+ const agent = new webdriveragent_1.WebDriverAgent(args);
394
+ (0, chai_1.expect)(agent.bundleIdForXctest).to.equal('io.appium.wda.xctrunner');
395
+ });
396
+ it('should have xctrunner automatically with default bundle id', function () {
397
+ const args = Object.assign({}, fakeConstructorArgs);
398
+ const agent = new webdriveragent_1.WebDriverAgent(args);
399
+ (0, chai_1.expect)(agent.bundleIdForXctest).to.equal('com.facebook.WebDriverAgentRunner.xctrunner');
400
+ });
401
+ it('should allow an empty string as xctrunner suffix', function () {
402
+ const args = Object.assign({}, fakeConstructorArgs);
403
+ args.updatedWDABundleId = 'io.appium.wda';
404
+ args.updatedWDABundleIdSuffix = '';
405
+ const agent = new webdriveragent_1.WebDriverAgent(args);
406
+ (0, chai_1.expect)(agent.bundleIdForXctest).to.equal('io.appium.wda');
407
+ });
408
+ it('should allow an empty string as xctrunner suffix with default bundle id', function () {
409
+ const args = Object.assign({}, fakeConstructorArgs);
410
+ args.updatedWDABundleIdSuffix = '';
411
+ const agent = new webdriveragent_1.WebDriverAgent(args);
412
+ (0, chai_1.expect)(agent.bundleIdForXctest).to.equal('com.facebook.WebDriverAgentRunner');
413
+ });
414
+ it('should have an arbitrary xctrunner suffix', function () {
415
+ const args = Object.assign({}, fakeConstructorArgs);
416
+ args.updatedWDABundleId = 'io.appium.wda';
417
+ args.updatedWDABundleIdSuffix = '.customsuffix';
418
+ const agent = new webdriveragent_1.WebDriverAgent(args);
419
+ (0, chai_1.expect)(agent.bundleIdForXctest).to.equal('io.appium.wda.customsuffix');
420
+ });
421
+ });
422
+ });
423
+ });
424
+ //# sourceMappingURL=webdriveragent-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webdriveragent-specs.js","sourceRoot":"","sources":["../../../test/unit/webdriveragent-specs.ts"],"names":[],"mappings":"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"}