appium-mcp 1.84.0 → 1.84.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 (100) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/command.d.ts +9 -0
  3. package/dist/command.d.ts.map +1 -1
  4. package/dist/command.js +29 -0
  5. package/dist/command.js.map +1 -1
  6. package/dist/tools/interactions/find.d.ts.map +1 -1
  7. package/dist/tools/interactions/find.js +2 -1
  8. package/dist/tools/interactions/find.js.map +1 -1
  9. package/package.json +2 -1
  10. package/server.json +2 -2
  11. package/src/command.ts +37 -0
  12. package/src/tools/interactions/find.ts +6 -1
  13. package/dist/tests/__mocks__/@appium/support.d.ts +0 -92
  14. package/dist/tests/__mocks__/@appium/support.d.ts.map +0 -1
  15. package/dist/tests/__mocks__/@appium/support.js +0 -66
  16. package/dist/tests/__mocks__/@appium/support.js.map +0 -1
  17. package/dist/tests/benchmark_model/benchmark_model.d.ts +0 -3
  18. package/dist/tests/benchmark_model/benchmark_model.d.ts.map +0 -1
  19. package/dist/tests/benchmark_model/benchmark_model.js +0 -617
  20. package/dist/tests/benchmark_model/benchmark_model.js.map +0 -1
  21. package/dist/tests/create-server.test.d.ts +0 -2
  22. package/dist/tests/create-server.test.d.ts.map +0 -1
  23. package/dist/tests/create-server.test.js +0 -586
  24. package/dist/tests/create-server.test.js.map +0 -1
  25. package/dist/tests/generate-all-locators.test.d.ts +0 -2
  26. package/dist/tests/generate-all-locators.test.d.ts.map +0 -1
  27. package/dist/tests/generate-all-locators.test.js +0 -136
  28. package/dist/tests/generate-all-locators.test.js.map +0 -1
  29. package/dist/tests/persistence.test.d.ts +0 -2
  30. package/dist/tests/persistence.test.d.ts.map +0 -1
  31. package/dist/tests/persistence.test.js +0 -116
  32. package/dist/tests/persistence.test.js.map +0 -1
  33. package/dist/tests/plugin.test.d.ts +0 -2
  34. package/dist/tests/plugin.test.d.ts.map +0 -1
  35. package/dist/tests/plugin.test.js +0 -399
  36. package/dist/tests/plugin.test.js.map +0 -1
  37. package/dist/tests/policy.test.d.ts +0 -2
  38. package/dist/tests/policy.test.d.ts.map +0 -1
  39. package/dist/tests/policy.test.js +0 -44
  40. package/dist/tests/policy.test.js.map +0 -1
  41. package/dist/tests/screenshot.test.d.ts +0 -2
  42. package/dist/tests/screenshot.test.d.ts.map +0 -1
  43. package/dist/tests/screenshot.test.js +0 -243
  44. package/dist/tests/screenshot.test.js.map +0 -1
  45. package/dist/tests/session-store.test.d.ts +0 -2
  46. package/dist/tests/session-store.test.d.ts.map +0 -1
  47. package/dist/tests/session-store.test.js +0 -459
  48. package/dist/tests/session-store.test.js.map +0 -1
  49. package/dist/tests/test-setup-wda.d.ts +0 -2
  50. package/dist/tests/test-setup-wda.d.ts.map +0 -1
  51. package/dist/tests/test-setup-wda.js +0 -199
  52. package/dist/tests/test-setup-wda.js.map +0 -1
  53. package/dist/tests/tools/evidence.test.d.ts +0 -2
  54. package/dist/tests/tools/evidence.test.d.ts.map +0 -1
  55. package/dist/tests/tools/evidence.test.js +0 -158
  56. package/dist/tests/tools/evidence.test.js.map +0 -1
  57. package/dist/tests/tools/gestures/ai-element.test.d.ts +0 -2
  58. package/dist/tests/tools/gestures/ai-element.test.d.ts.map +0 -1
  59. package/dist/tests/tools/gestures/ai-element.test.js +0 -114
  60. package/dist/tests/tools/gestures/ai-element.test.js.map +0 -1
  61. package/dist/tests/tools/gestures/swipe-scroll.test.d.ts +0 -2
  62. package/dist/tests/tools/gestures/swipe-scroll.test.d.ts.map +0 -1
  63. package/dist/tests/tools/gestures/swipe-scroll.test.js +0 -63
  64. package/dist/tests/tools/gestures/swipe-scroll.test.js.map +0 -1
  65. package/dist/tests/tools/interactions/webdriver-ai-element-rejection.test.d.ts +0 -2
  66. package/dist/tests/tools/interactions/webdriver-ai-element-rejection.test.d.ts.map +0 -1
  67. package/dist/tests/tools/interactions/webdriver-ai-element-rejection.test.js +0 -94
  68. package/dist/tests/tools/interactions/webdriver-ai-element-rejection.test.js.map +0 -1
  69. package/dist/tests/tools/llm-wording.test.d.ts +0 -2
  70. package/dist/tests/tools/llm-wording.test.d.ts.map +0 -1
  71. package/dist/tests/tools/llm-wording.test.js +0 -89
  72. package/dist/tests/tools/llm-wording.test.js.map +0 -1
  73. package/dist/tests/tools/session/device-info.test.d.ts +0 -2
  74. package/dist/tests/tools/session/device-info.test.d.ts.map +0 -1
  75. package/dist/tests/tools/session/device-info.test.js +0 -144
  76. package/dist/tests/tools/session/device-info.test.js.map +0 -1
  77. package/dist/tests/tools/session/file-transfer.test.d.ts +0 -2
  78. package/dist/tests/tools/session/file-transfer.test.d.ts.map +0 -1
  79. package/dist/tests/tools/session/file-transfer.test.js +0 -98
  80. package/dist/tests/tools/session/file-transfer.test.js.map +0 -1
  81. package/dist/tests/tools/session/session.test.d.ts +0 -2
  82. package/dist/tests/tools/session/session.test.d.ts.map +0 -1
  83. package/dist/tests/tools/session/session.test.js +0 -413
  84. package/dist/tests/tools/session/session.test.js.map +0 -1
  85. package/dist/tests/utils/collection.test.d.ts +0 -2
  86. package/dist/tests/utils/collection.test.d.ts.map +0 -1
  87. package/dist/tests/utils/collection.test.js +0 -87
  88. package/dist/tests/utils/collection.test.js.map +0 -1
  89. package/dist/tests/utils/paths.test.d.ts +0 -2
  90. package/dist/tests/utils/paths.test.d.ts.map +0 -1
  91. package/dist/tests/utils/paths.test.js +0 -21
  92. package/dist/tests/utils/paths.test.js.map +0 -1
  93. package/dist/tests/verify.test.d.ts +0 -2
  94. package/dist/tests/verify.test.d.ts.map +0 -1
  95. package/dist/tests/verify.test.js +0 -148
  96. package/dist/tests/verify.test.js.map +0 -1
  97. package/dist/tests/vision-finder.test.d.ts +0 -10
  98. package/dist/tests/vision-finder.test.d.ts.map +0 -1
  99. package/dist/tests/vision-finder.test.js +0 -420
  100. package/dist/tests/vision-finder.test.js.map +0 -1
@@ -1,459 +0,0 @@
1
- import { describe, test, expect, jest, afterEach } from '@jest/globals';
2
- // Mock heavy native driver packages so the module can be imported without
3
- // native dependencies installed in the test environment.
4
- await jest.unstable_mockModule('appium-uiautomator2-driver', () => ({
5
- AndroidUiautomator2Driver: class MockAndroidUiautomator2Driver {
6
- async deleteSession() { }
7
- },
8
- }));
9
- await jest.unstable_mockModule('appium-xcuitest-driver', () => ({
10
- XCUITestDriver: class MockXCUITestDriver {
11
- async deleteSession() { }
12
- },
13
- }));
14
- await jest.unstable_mockModule('../logger', () => ({
15
- default: {
16
- debug: jest.fn(),
17
- info: jest.fn(),
18
- warn: jest.fn(),
19
- error: jest.fn(),
20
- },
21
- }));
22
- const { detachSession, isRemoteDriverSession, isAndroidUiautomator2DriverSession, isXCUITestDriverSession, setSession, getDriver, getSessionOwnership, getSessionId, listSessions, setActiveSession, setCurrentContext, getCurrentContext, isDeletingSessionInProgress, hasActiveSession, safeDeleteSession, safeDeleteAllSessions, getPlatformName, PLATFORM, } = await import('../session-store.js');
23
- const { AndroidUiautomator2Driver } = await import('appium-uiautomator2-driver');
24
- const { XCUITestDriver } = await import('appium-xcuitest-driver');
25
- // Shared mock driver factory with a controllable deleteSession.
26
- function makeMockDriver(deleteSessionImpl) {
27
- return { deleteSession: deleteSessionImpl ?? (async () => { }) };
28
- }
29
- afterEach(async () => {
30
- // Remove all sessions to reset shared module-level state between tests.
31
- await safeDeleteAllSessions();
32
- for (const session of listSessions()) {
33
- if (session.ownership === 'attached') {
34
- detachSession(session.sessionId);
35
- }
36
- }
37
- });
38
- // ---------------------------------------------------------------------------
39
- // isRemoteDriverSession
40
- // ---------------------------------------------------------------------------
41
- describe('isRemoteDriverSession', () => {
42
- test('returns false for null driver', () => {
43
- expect(isRemoteDriverSession(null)).toBe(false);
44
- });
45
- test('returns false for AndroidUiautomator2Driver instance', () => {
46
- const driver = new AndroidUiautomator2Driver();
47
- expect(isRemoteDriverSession(driver)).toBe(false);
48
- });
49
- test('returns false for XCUITestDriver instance', () => {
50
- const driver = new XCUITestDriver();
51
- expect(isRemoteDriverSession(driver)).toBe(false);
52
- });
53
- test('returns true for a plain remote client object', () => {
54
- const remoteClient = {};
55
- expect(isRemoteDriverSession(remoteClient)).toBe(true);
56
- });
57
- });
58
- // ---------------------------------------------------------------------------
59
- // isAndroidUiautomator2DriverSession
60
- // ---------------------------------------------------------------------------
61
- describe('isAndroidUiautomator2DriverSession', () => {
62
- test('returns false for null driver', () => {
63
- expect(isAndroidUiautomator2DriverSession(null)).toBe(false);
64
- });
65
- test('returns true for AndroidUiautomator2Driver instance', () => {
66
- const driver = new AndroidUiautomator2Driver();
67
- expect(isAndroidUiautomator2DriverSession(driver)).toBe(true);
68
- });
69
- test('returns false for XCUITestDriver instance', () => {
70
- const driver = new XCUITestDriver();
71
- expect(isAndroidUiautomator2DriverSession(driver)).toBe(false);
72
- });
73
- test('returns false for remote client object', () => {
74
- expect(isAndroidUiautomator2DriverSession({})).toBe(false);
75
- });
76
- });
77
- // ---------------------------------------------------------------------------
78
- // isXCUITestDriverSession
79
- // ---------------------------------------------------------------------------
80
- describe('isXCUITestDriverSession', () => {
81
- test('returns false for null driver', () => {
82
- expect(isXCUITestDriverSession(null)).toBe(false);
83
- });
84
- test('returns true for XCUITestDriver instance', () => {
85
- const driver = new XCUITestDriver();
86
- expect(isXCUITestDriverSession(driver)).toBe(true);
87
- });
88
- test('returns false for AndroidUiautomator2Driver instance', () => {
89
- const driver = new AndroidUiautomator2Driver();
90
- expect(isXCUITestDriverSession(driver)).toBe(false);
91
- });
92
- test('returns false for remote client object', () => {
93
- expect(isXCUITestDriverSession({})).toBe(false);
94
- });
95
- });
96
- // ---------------------------------------------------------------------------
97
- // setSession / getDriver / getSessionId
98
- // ---------------------------------------------------------------------------
99
- describe('setSession', () => {
100
- test('setting null id clears the active session id without storing a session', async () => {
101
- const driver = makeMockDriver();
102
- await setSession(driver, 'session-1');
103
- await setSession(driver, null);
104
- expect(getSessionId()).toBeNull();
105
- expect(getDriver()).toBeNull();
106
- });
107
- test('stores the session and makes it active', async () => {
108
- const driver = makeMockDriver();
109
- await setSession(driver, 'session-1');
110
- expect(getSessionId()).toBe('session-1');
111
- expect(getDriver()).toBe(driver);
112
- });
113
- test('getDriver returns the driver for the specified sessionId', async () => {
114
- const driver1 = makeMockDriver();
115
- const driver2 = makeMockDriver();
116
- await setSession(driver1, 'session-1');
117
- await setSession(driver2, 'session-2');
118
- expect(getDriver('session-1')).toBe(driver1);
119
- expect(getDriver('session-2')).toBe(driver2);
120
- });
121
- test('getDriver returns null for an unknown session id', () => {
122
- expect(getDriver('non-existent')).toBeNull();
123
- });
124
- test('getDriver returns null when there is no active session', () => {
125
- expect(getDriver()).toBeNull();
126
- });
127
- test('extracts platform metadata from capabilities', async () => {
128
- const driver = makeMockDriver();
129
- await setSession(driver, 'session-meta', {
130
- platformName: 'Android',
131
- 'appium:automationName': 'UiAutomator2',
132
- 'appium:deviceName': 'Pixel 5',
133
- });
134
- const sessions = listSessions();
135
- const session = sessions.find((s) => s.sessionId === 'session-meta');
136
- expect(session?.platform).toBe('Android');
137
- expect(session?.automationName).toBe('UiAutomator2');
138
- expect(session?.deviceName).toBe('Pixel 5');
139
- });
140
- test('accepts non-prefixed metadata fields from attached session capabilities', async () => {
141
- const driver = makeMockDriver();
142
- await setSession(driver, 'session-meta-fallback', {
143
- platformName: 'Android',
144
- automationName: 'UiAutomator2',
145
- deviceName: 'Pixel 9 Pro XL',
146
- });
147
- const session = listSessions().find((s) => s.sessionId === 'session-meta-fallback');
148
- expect(session?.platform).toBe('Android');
149
- expect(session?.automationName).toBe('UiAutomator2');
150
- expect(session?.deviceName).toBe('Pixel 9 Pro XL');
151
- });
152
- test('stores ownership and exposes it through list/get helpers', async () => {
153
- const driver = makeMockDriver();
154
- await setSession(driver, 'session-attached', {}, 'attached');
155
- expect(getSessionOwnership('session-attached')).toBe('attached');
156
- expect(listSessions()[0]?.ownership).toBe('attached');
157
- });
158
- });
159
- // ---------------------------------------------------------------------------
160
- // listSessions
161
- // ---------------------------------------------------------------------------
162
- describe('listSessions', () => {
163
- test('returns an empty array when there are no sessions', () => {
164
- expect(listSessions()).toEqual([]);
165
- });
166
- test('marks only the active session as isActive:true', async () => {
167
- const driver1 = makeMockDriver();
168
- const driver2 = makeMockDriver();
169
- await setSession(driver1, 'session-a');
170
- await setSession(driver2, 'session-b'); // session-b becomes active
171
- const sessions = listSessions();
172
- expect(sessions).toHaveLength(2);
173
- const a = sessions.find((s) => s.sessionId === 'session-a');
174
- const b = sessions.find((s) => s.sessionId === 'session-b');
175
- expect(a.isActive).toBe(false);
176
- expect(b.isActive).toBe(true);
177
- });
178
- test('returns currentContext and capabilities for each session', async () => {
179
- const caps = { platformName: 'Android' };
180
- await setSession(makeMockDriver(), 'session-ctx', caps);
181
- const session = listSessions()[0];
182
- expect(session.currentContext).toBe('NATIVE_APP');
183
- expect(session.capabilities).toEqual(caps);
184
- });
185
- });
186
- // ---------------------------------------------------------------------------
187
- // setActiveSession
188
- // ---------------------------------------------------------------------------
189
- describe('setActiveSession', () => {
190
- test('returns false for a session that does not exist', () => {
191
- expect(setActiveSession('unknown')).toBe(false);
192
- });
193
- test('switches the active session and returns true', async () => {
194
- await setSession(makeMockDriver(), 'session-1');
195
- await setSession(makeMockDriver(), 'session-2'); // session-2 is now active
196
- expect(getSessionId()).toBe('session-2');
197
- const result = setActiveSession('session-1');
198
- expect(result).toBe(true);
199
- expect(getSessionId()).toBe('session-1');
200
- });
201
- });
202
- // ---------------------------------------------------------------------------
203
- // setCurrentContext / getCurrentContext
204
- // ---------------------------------------------------------------------------
205
- describe('setCurrentContext / getCurrentContext', () => {
206
- test('getCurrentContext returns null when there is no active session', () => {
207
- expect(getCurrentContext()).toBeNull();
208
- });
209
- test('setCurrentContext returns false when there is no active session', () => {
210
- expect(setCurrentContext('WEBVIEW')).toBe(false);
211
- });
212
- test('setCurrentContext updates the context and returns true', async () => {
213
- await setSession(makeMockDriver(), 'session-ctx');
214
- const result = setCurrentContext('WEBVIEW_chrome');
215
- expect(result).toBe(true);
216
- expect(getCurrentContext()).toBe('WEBVIEW_chrome');
217
- });
218
- test('setCurrentContext works with an explicit sessionId', async () => {
219
- await setSession(makeMockDriver(), 'session-ctx');
220
- setCurrentContext('WEBVIEW_myapp', 'session-ctx');
221
- expect(getCurrentContext('session-ctx')).toBe('WEBVIEW_myapp');
222
- });
223
- test('setCurrentContext returns false for a non-existent sessionId', () => {
224
- expect(setCurrentContext('WEBVIEW', 'no-such-session')).toBe(false);
225
- });
226
- });
227
- // ---------------------------------------------------------------------------
228
- // isDeletingSessionInProgress
229
- // ---------------------------------------------------------------------------
230
- describe('isDeletingSessionInProgress', () => {
231
- test('returns false when there is no active session', () => {
232
- expect(isDeletingSessionInProgress()).toBe(false);
233
- });
234
- test('returns false for a session that is not being deleted', async () => {
235
- await setSession(makeMockDriver(), 'session-1');
236
- expect(isDeletingSessionInProgress('session-1')).toBe(false);
237
- });
238
- test('returns true while deletion is in progress', async () => {
239
- let resolveDelete;
240
- const pending = new Promise((resolve) => {
241
- resolveDelete = resolve;
242
- });
243
- const slowDriver = { deleteSession: () => pending };
244
- await setSession(slowDriver, 'slow-session');
245
- const deleteTask = safeDeleteSession('slow-session');
246
- // Yield the microtask queue so the async function runs up to the
247
- // await of driver.deleteSession(), placing isDeletingSession = true.
248
- await Promise.resolve();
249
- expect(isDeletingSessionInProgress('slow-session')).toBe(true);
250
- resolveDelete();
251
- await deleteTask;
252
- // Session has been removed; the check should now return false.
253
- expect(isDeletingSessionInProgress('slow-session')).toBe(false);
254
- });
255
- });
256
- // ---------------------------------------------------------------------------
257
- // hasActiveSession
258
- // ---------------------------------------------------------------------------
259
- describe('hasActiveSession', () => {
260
- test('returns false when there are no sessions', () => {
261
- expect(hasActiveSession()).toBe(false);
262
- });
263
- test('returns true when there is a normal active session', async () => {
264
- await setSession(makeMockDriver(), 'session-1');
265
- expect(hasActiveSession()).toBe(true);
266
- });
267
- test('returns false while the active session is being deleted', async () => {
268
- let resolveDelete;
269
- const pending = new Promise((resolve) => {
270
- resolveDelete = resolve;
271
- });
272
- const slowDriver = { deleteSession: () => pending };
273
- await setSession(slowDriver, 'active-session');
274
- const deleteTask = safeDeleteSession('active-session');
275
- await Promise.resolve();
276
- expect(hasActiveSession()).toBe(false);
277
- resolveDelete();
278
- await deleteTask;
279
- });
280
- });
281
- // ---------------------------------------------------------------------------
282
- // safeDeleteSession
283
- // ---------------------------------------------------------------------------
284
- describe('safeDeleteSession', () => {
285
- test('returns false when there is no active session', async () => {
286
- const result = await safeDeleteSession();
287
- expect(result).toBe(false);
288
- });
289
- test('returns false when the specified session does not exist', async () => {
290
- const result = await safeDeleteSession('ghost-session');
291
- expect(result).toBe(false);
292
- });
293
- test('calls driver.deleteSession() and removes the session', async () => {
294
- let calledDeleteSession = false;
295
- const driver = {
296
- deleteSession: async () => {
297
- calledDeleteSession = true;
298
- },
299
- };
300
- await setSession(driver, 'session-del');
301
- const result = await safeDeleteSession('session-del');
302
- expect(result).toBe(true);
303
- expect(calledDeleteSession).toBe(true);
304
- expect(getDriver('session-del')).toBeNull();
305
- });
306
- test('deletes the active session when no sessionId is provided', async () => {
307
- await setSession(makeMockDriver(), 'session-active');
308
- const result = await safeDeleteSession();
309
- expect(result).toBe(true);
310
- expect(getSessionId()).toBeNull();
311
- });
312
- test('promotes another session as active after the active one is deleted', async () => {
313
- await setSession(makeMockDriver(), 'session-1');
314
- await setSession(makeMockDriver(), 'session-2'); // session-2 is active
315
- await safeDeleteSession('session-2');
316
- // The remaining session-1 should now be (or there is simply no active session,
317
- // but a remaining session exists in the store).
318
- const remaining = listSessions();
319
- expect(remaining).toHaveLength(1);
320
- expect(remaining[0].sessionId).toBe('session-1');
321
- });
322
- test('returns false and skips when deletion is already in progress', async () => {
323
- let resolveDelete;
324
- const pending = new Promise((resolve) => {
325
- resolveDelete = resolve;
326
- });
327
- const slowDriver = { deleteSession: () => pending };
328
- await setSession(slowDriver, 'double-delete-session');
329
- const firstDelete = safeDeleteSession('double-delete-session');
330
- await Promise.resolve(); // let the first deletion acquire the lock
331
- const secondResult = await safeDeleteSession('double-delete-session');
332
- expect(secondResult).toBe(false);
333
- resolveDelete();
334
- await firstDelete;
335
- });
336
- test('re-throws driver errors', async () => {
337
- // Throw only on the first call so the afterEach cleanup can still succeed.
338
- let calls = 0;
339
- const errorDriver = {
340
- deleteSession: async () => {
341
- if (calls++ === 0) {
342
- throw new Error('driver error');
343
- }
344
- },
345
- };
346
- await setSession(errorDriver, 'error-session');
347
- await expect(safeDeleteSession('error-session')).rejects.toThrow('driver error');
348
- });
349
- });
350
- // ---------------------------------------------------------------------------
351
- // safeDeleteAllSessions
352
- // ---------------------------------------------------------------------------
353
- describe('safeDeleteAllSessions', () => {
354
- test('returns 0 when there are no sessions', async () => {
355
- const count = await safeDeleteAllSessions();
356
- expect(count).toBe(0);
357
- });
358
- test('deletes all sessions and returns the deleted count', async () => {
359
- await setSession(makeMockDriver(), 'session-1');
360
- await setSession(makeMockDriver(), 'session-2');
361
- await setSession(makeMockDriver(), 'session-3');
362
- const count = await safeDeleteAllSessions();
363
- expect(count).toBe(3);
364
- expect(listSessions()).toHaveLength(0);
365
- });
366
- test('counts only successfully deleted sessions', async () => {
367
- const goodDriver = makeMockDriver();
368
- // Throw only on the first call so the afterEach cleanup can still succeed.
369
- let calls = 0;
370
- const badDriver = {
371
- deleteSession: async () => {
372
- if (calls++ === 0) {
373
- throw new Error('fail');
374
- }
375
- },
376
- };
377
- await setSession(goodDriver, 'good-session');
378
- await setSession(badDriver, 'bad-session');
379
- const count = await safeDeleteAllSessions();
380
- // Only the good session should have been deleted.
381
- expect(count).toBe(1);
382
- });
383
- test('deletes only owned sessions', async () => {
384
- let ownedDeleted = false;
385
- await setSession({
386
- deleteSession: async () => {
387
- ownedDeleted = true;
388
- },
389
- }, 'owned-session', {}, 'owned');
390
- await setSession(makeMockDriver(), 'attached-session', {}, 'attached');
391
- const count = await safeDeleteAllSessions();
392
- expect(count).toBe(1);
393
- expect(ownedDeleted).toBe(true);
394
- expect(getDriver('owned-session')).toBeNull();
395
- expect(getDriver('attached-session')).not.toBeNull();
396
- });
397
- });
398
- // ---------------------------------------------------------------------------
399
- // detachSession / getSessionOwnership
400
- // ---------------------------------------------------------------------------
401
- describe('detachSession / getSessionOwnership', () => {
402
- test('returns null ownership for a missing session', () => {
403
- expect(getSessionOwnership('missing')).toBeNull();
404
- });
405
- test('does not detach an owned session', async () => {
406
- await setSession(makeMockDriver(), 'owned-session', {}, 'owned');
407
- expect(() => detachSession('owned-session')).toThrow('Session owned-session is owned by MCP Appium. Use action=delete to remove it.');
408
- expect(getDriver('owned-session')).not.toBeNull();
409
- });
410
- test('detaches an attached session without deleting it', async () => {
411
- let deleted = false;
412
- const driver = {
413
- deleteSession: async () => {
414
- deleted = true;
415
- },
416
- };
417
- await setSession(driver, 'attached-session', {}, 'attached');
418
- expect(() => detachSession('attached-session')).not.toThrow();
419
- expect(getDriver('attached-session')).toBeNull();
420
- expect(deleted).toBe(false);
421
- });
422
- });
423
- // ---------------------------------------------------------------------------
424
- // getPlatformName
425
- // ---------------------------------------------------------------------------
426
- describe('getPlatformName', () => {
427
- test('returns platform.android for AndroidUiautomator2Driver instance', () => {
428
- const driver = new AndroidUiautomator2Driver();
429
- expect(getPlatformName(driver)).toBe(PLATFORM.android);
430
- });
431
- test('returns platform.ios for XCUITestDriver instance', () => {
432
- const driver = new XCUITestDriver();
433
- expect(getPlatformName(driver)).toBe(PLATFORM.ios);
434
- });
435
- test('returns platform.android for a Client with isAndroid=true', () => {
436
- const client = { isAndroid: true, isIOS: false };
437
- expect(getPlatformName(client)).toBe(PLATFORM.android);
438
- });
439
- test('returns platform.ios for a Client with isIOS=true', () => {
440
- const client = { isAndroid: false, isIOS: true };
441
- expect(getPlatformName(client)).toBe(PLATFORM.ios);
442
- });
443
- test('throws for an unrecognised driver type', () => {
444
- const unknown = { isAndroid: false, isIOS: false };
445
- expect(() => getPlatformName(unknown)).toThrow('Unknown driver type');
446
- });
447
- test('falls back to session platformName for remote sessions', async () => {
448
- const client = {
449
- isAndroid: false,
450
- isIOS: false,
451
- sessionId: 'session-remote-android',
452
- };
453
- await setSession(client, 'session-remote-android', {
454
- platformName: 'Android',
455
- });
456
- expect(getPlatformName(client)).toBe(PLATFORM.android);
457
- });
458
- });
459
- //# sourceMappingURL=session-store.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.test.js","sourceRoot":"","sources":["../../src/tests/session-store.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAExE,0EAA0E;AAC1E,yDAAyD;AACzD,MAAM,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,yBAAyB,EAAE,MAAM,6BAA6B;QAC5D,KAAK,CAAC,aAAa,KAAI,CAAC;KACzB;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,cAAc,EAAE,MAAM,kBAAkB;QACtC,KAAK,CAAC,aAAa,KAAI,CAAC;KACzB;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,OAAO,EAAE;QACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,EACJ,aAAa,EACb,qBAAqB,EACrB,kCAAkC,EAClC,uBAAuB,EACvB,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,QAAQ,GACT,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAExC,MAAM,EAAE,yBAAyB,EAAE,GACjC,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAC7C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAElE,gEAAgE;AAChE,SAAS,cAAc,CAAC,iBAAuC;IAC7D,OAAO,EAAE,aAAa,EAAE,iBAAiB,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,EAAS,CAAC;AACzE,CAAC;AAED,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,wEAAwE;IACxE,MAAM,qBAAqB,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACrC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAC9E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,IAAK,yBAAiC,EAAE,CAAC;QACxD,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,IAAK,cAAsB,EAAE,CAAC;QAC7C,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,YAAY,GAAG,EAAS,CAAC;QAC/B,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAC9E,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,IAAK,yBAAiC,EAAE,CAAC;QACxD,MAAM,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,IAAK,cAAsB,EAAE,CAAC;QAC7C,MAAM,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,kCAAkC,CAAC,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAC9E,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,IAAK,cAAsB,EAAE,CAAC;QAC7C,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,IAAK,yBAAiC,EAAE,CAAC;QACxD,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,uBAAuB,CAAC,EAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAC9E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvC,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE;YACvC,YAAY,EAAE,SAAS;YACvB,uBAAuB,EAAE,cAAc;YACvC,mBAAmB,EAAE,SAAS;SAC/B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,UAAU,CAAC,MAAM,EAAE,uBAAuB,EAAE;YAChD,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,cAAc;YAC9B,UAAU,EAAE,gBAAgB;SAC7B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,uBAAuB,CAC/C,CAAC;QACF,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,UAAU,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAE7D,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAC9E,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvC,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,2BAA2B;QAEnE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,CAAE,CAAC;QAC7D,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,CAAE,CAAC;QAC7D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,IAAI,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACzC,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAC9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,0BAA0B;QAE3E,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAC9E,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,CAAC;QAClD,iBAAiB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAClD,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAC9E,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,2BAA2B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC5D,IAAI,aAA0B,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,EAAS,CAAC;QAC3D,MAAM,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAErD,iEAAiE;QACjE,qEAAqE;QACrE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,aAAa,EAAE,CAAC;QAChB,MAAM,UAAU,CAAC;QAEjB,+DAA+D;QAC/D,MAAM,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAC9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACzE,IAAI,aAA0B,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,EAAS,CAAC;QAC3D,MAAM,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,aAAa,EAAE,CAAC;QAChB,MAAM,UAAU,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAC9E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACtE,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,MAAM,MAAM,GAAG;YACb,aAAa,EAAE,KAAK,IAAI,EAAE;gBACxB,mBAAmB,GAAG,IAAI,CAAC;YAC7B,CAAC;SACK,CAAC;QAET,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,sBAAsB;QAEvE,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAErC,+EAA+E;QAC/E,gDAAgD;QAChD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC9E,IAAI,aAA0B,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,EAAS,CAAC;QAC3D,MAAM,UAAU,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAEtD,MAAM,WAAW,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QAC/D,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,0CAA0C;QAEnE,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjC,aAAa,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,2EAA2E;QAC3E,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,WAAW,GAAG;YAClB,aAAa,EAAE,KAAK,IAAI,EAAE;gBACxB,IAAI,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;SACK,CAAC;QAET,MAAM,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC9D,cAAc,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAC9E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,KAAK,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;QACpC,2EAA2E;QAC3E,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,SAAS,GAAG;YAChB,aAAa,EAAE,KAAK,IAAI,EAAE;gBACxB,IAAI,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;SACK,CAAC;QAET,MAAM,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC7C,MAAM,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAE3C,MAAM,KAAK,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC5C,kDAAkD;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,UAAU,CACd;YACE,aAAa,EAAE,KAAK,IAAI,EAAE;gBACxB,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;SACK,EACR,eAAe,EACf,EAAE,EACF,OAAO,CACR,CAAC;QACF,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAE5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAC9E,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAEjE,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAClD,+EAA+E,CAChF,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG;YACb,aAAa,EAAE,KAAK,IAAI,EAAE;gBACxB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;SACK,CAAC;QAET,MAAM,UAAU,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QAE7D,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAC9E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC3E,MAAM,MAAM,GAAG,IAAK,yBAAiC,EAAE,CAAC;QACxD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,IAAK,cAAsB,EAAE,CAAC;QAC7C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAS,CAAC;QACxD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC;QACxD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAS,CAAC;QAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,wBAAwB;SAC7B,CAAC;QACT,MAAM,UAAU,CAAC,MAAM,EAAE,wBAAwB,EAAE;YACjD,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-setup-wda.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-setup-wda.d.ts","sourceRoot":"","sources":["../../src/tests/test-setup-wda.ts"],"names":[],"mappings":""}