mobilewright 0.0.51 → 0.0.53

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 (70) hide show
  1. package/README.md +4 -0
  2. package/dist/cli.js +1 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +13 -24
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +89 -24
  7. package/dist/config.js.map +1 -1
  8. package/dist/config.test.js +180 -142
  9. package/dist/config.test.js.map +1 -1
  10. package/dist/device-pool/adapters/http-client.test.js +4 -4
  11. package/dist/device-pool/adapters/http-client.test.js.map +1 -1
  12. package/dist/device-pool/adapters/http-server.test.js +7 -7
  13. package/dist/device-pool/adapters/http-server.test.js.map +1 -1
  14. package/dist/device-pool/application/device-pool.d.ts +4 -3
  15. package/dist/device-pool/application/device-pool.d.ts.map +1 -1
  16. package/dist/device-pool/application/device-pool.js +30 -8
  17. package/dist/device-pool/application/device-pool.js.map +1 -1
  18. package/dist/device-pool/application/device-pool.test.js +71 -35
  19. package/dist/device-pool/application/device-pool.test.js.map +1 -1
  20. package/dist/device-pool/application/ports.d.ts +3 -33
  21. package/dist/device-pool/application/ports.d.ts.map +1 -1
  22. package/dist/device-pool/application/ports.js +1 -12
  23. package/dist/device-pool/application/ports.js.map +1 -1
  24. package/dist/device-pool/setup.d.ts.map +1 -1
  25. package/dist/device-pool/setup.js +5 -7
  26. package/dist/device-pool/setup.js.map +1 -1
  27. package/dist/driver-registry.d.ts +10 -0
  28. package/dist/driver-registry.d.ts.map +1 -0
  29. package/dist/driver-registry.js +14 -0
  30. package/dist/driver-registry.js.map +1 -0
  31. package/dist/index.d.ts +2 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/launchers.d.ts +5 -5
  35. package/dist/launchers.d.ts.map +1 -1
  36. package/dist/launchers.js +8 -32
  37. package/dist/launchers.js.map +1 -1
  38. package/dist/observer-reporter.d.ts +21 -0
  39. package/dist/observer-reporter.d.ts.map +1 -0
  40. package/dist/observer-reporter.js +106 -0
  41. package/dist/observer-reporter.js.map +1 -0
  42. package/dist/observer-reporter.test.d.ts +2 -0
  43. package/dist/observer-reporter.test.d.ts.map +1 -0
  44. package/dist/observer-reporter.test.js +182 -0
  45. package/dist/observer-reporter.test.js.map +1 -0
  46. package/package.json +6 -6
  47. package/dist/device-pool/adapters/mobilecli-allocator.d.ts +0 -19
  48. package/dist/device-pool/adapters/mobilecli-allocator.d.ts.map +0 -1
  49. package/dist/device-pool/adapters/mobilecli-allocator.js +0 -26
  50. package/dist/device-pool/adapters/mobilecli-allocator.js.map +0 -1
  51. package/dist/device-pool/adapters/mobilecli-allocator.test.d.ts +0 -2
  52. package/dist/device-pool/adapters/mobilecli-allocator.test.d.ts.map +0 -1
  53. package/dist/device-pool/adapters/mobilecli-allocator.test.js +0 -61
  54. package/dist/device-pool/adapters/mobilecli-allocator.test.js.map +0 -1
  55. package/dist/device-pool/adapters/mobilenext-allocator.d.ts +0 -24
  56. package/dist/device-pool/adapters/mobilenext-allocator.d.ts.map +0 -1
  57. package/dist/device-pool/adapters/mobilenext-allocator.js +0 -90
  58. package/dist/device-pool/adapters/mobilenext-allocator.js.map +0 -1
  59. package/dist/device-pool/adapters/mobilenext-allocator.test.d.ts +0 -2
  60. package/dist/device-pool/adapters/mobilenext-allocator.test.d.ts.map +0 -1
  61. package/dist/device-pool/adapters/mobilenext-allocator.test.js +0 -42
  62. package/dist/device-pool/adapters/mobilenext-allocator.test.js.map +0 -1
  63. package/dist/device-pool/allocator-factory.d.ts +0 -10
  64. package/dist/device-pool/allocator-factory.d.ts.map +0 -1
  65. package/dist/device-pool/allocator-factory.js +0 -23
  66. package/dist/device-pool/allocator-factory.js.map +0 -1
  67. package/dist/server.d.ts +0 -16
  68. package/dist/server.d.ts.map +0 -1
  69. package/dist/server.js +0 -101
  70. package/dist/server.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { osVersionSatisfies } from '@mobilewright/protocol';
1
2
  import { DeviceSlot } from '../domain/device-slot.js';
2
3
  import { Allocation } from '../domain/allocation.js';
3
4
  import { NoDeviceAvailableError } from './ports.js';
@@ -8,7 +9,7 @@ export class DevicePool {
8
9
  this.waiters = [];
9
10
  this.inFlightWaiters = new Set();
10
11
  this.isShutdown = false;
11
- this.allocator = options.allocator;
12
+ this.driver = options.driver;
12
13
  this.maxSlots = options.maxSlots;
13
14
  this.allocationTimeoutMs = options.allocationTimeoutMs ?? 600_000;
14
15
  }
@@ -34,10 +35,11 @@ export class DevicePool {
34
35
  const releases = [];
35
36
  for (const slot of this.slots) {
36
37
  if (slot.state !== 'allocating' && slot.deviceId !== undefined) {
37
- releases.push(this.allocator.release(slot.deviceId).catch(() => { }));
38
+ releases.push(this.driver.release(slot.deviceId).catch(() => { }));
38
39
  }
39
40
  }
40
41
  await Promise.all(releases);
42
+ await this.driver.dispose?.().catch(() => { });
41
43
  this.slots.length = 0;
42
44
  this.allocations.clear();
43
45
  }
@@ -114,13 +116,19 @@ export class DevicePool {
114
116
  async startAllocationForWaiter(waiter) {
115
117
  const slot = new DeviceSlot();
116
118
  this.slots.push(slot);
117
- const slotIndex = this.slots.length - 1;
118
119
  this.inFlightWaiters.add(waiter);
119
120
  const abortController = new AbortController();
120
121
  const timer = setTimeout(() => abortController.abort(), this.allocationTimeoutMs);
122
+ // Raced independently of `signal`: a driver that ignores the abort signal (hangs or
123
+ // resolves anyway) must not keep the waiter/slot alive past allocationTimeoutMs.
124
+ const allocatePromise = this.driver.allocate(waiter.criteria, this.takenDeviceIds(), abortController.signal);
125
+ const timeoutError = new Error(`device allocation timed out after ${this.allocationTimeoutMs}ms`);
126
+ const timeoutPromise = new Promise((_resolve, reject) => {
127
+ abortController.signal.addEventListener('abort', () => reject(timeoutError), { once: true });
128
+ });
121
129
  let result;
122
130
  try {
123
- result = await this.allocator.allocate(waiter.criteria, this.takenDeviceIds(), abortController.signal);
131
+ result = await Promise.race([allocatePromise, timeoutPromise]);
124
132
  }
125
133
  catch (err) {
126
134
  clearTimeout(timer);
@@ -128,10 +136,18 @@ export class DevicePool {
128
136
  // Shutdown already rejected this waiter.
129
137
  return;
130
138
  }
131
- this.slots.splice(slotIndex, 1);
132
- if (abortController.signal.aborted) {
133
- waiter.reject(new Error(`device allocation timed out after ${this.allocationTimeoutMs}ms`));
139
+ // Splice by current identity, not a captured index — concurrent allocations for
140
+ // other waiters may have already spliced this.slots and shifted positions.
141
+ const currentIndex = this.slots.indexOf(slot);
142
+ if (currentIndex !== -1) {
143
+ this.slots.splice(currentIndex, 1);
144
+ }
145
+ if (err === timeoutError) {
146
+ waiter.reject(timeoutError);
134
147
  this.pump();
148
+ // The driver may still resolve after the timeout despite the abort — release
149
+ // whatever it returns instead of leaking it or publishing it to a moved-on waiter.
150
+ allocatePromise.then((late) => this.driver.release(late.deviceId).catch(() => { })).catch(() => { });
135
151
  return;
136
152
  }
137
153
  // NoDeviceAvailableError is a temporary condition: all matching devices
@@ -153,7 +169,7 @@ export class DevicePool {
153
169
  clearTimeout(timer);
154
170
  if (!this.inFlightWaiters.delete(waiter)) {
155
171
  // Shutdown already rejected this waiter; just discard the device.
156
- this.allocator.release(result.deviceId).catch(() => { });
172
+ this.driver.release(result.deviceId).catch(() => { });
157
173
  return;
158
174
  }
159
175
  slot.markAvailable(result.deviceId, result.platform, result.driver, result.model, result.osVersion, result.type);
@@ -173,6 +189,12 @@ function slotMatches(slot, criteria) {
173
189
  if (criteria.deviceId && slot.deviceId !== criteria.deviceId) {
174
190
  return false;
175
191
  }
192
+ if (criteria.deviceType && slot.type !== criteria.deviceType) {
193
+ return false;
194
+ }
195
+ if (criteria.osVersion && (slot.osVersion === undefined || !osVersionSatisfies(slot.osVersion, criteria.osVersion))) {
196
+ return false;
197
+ }
176
198
  return true;
177
199
  }
178
200
  //# sourceMappingURL=device-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-pool.js","sourceRoot":"","sources":["../../../src/device-pool/application/device-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-pool.js","sourceRoot":"","sources":["../../../src/device-pool/application/device-pool.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  import { test, expect } from '@playwright/test';
2
2
  import { DevicePool } from './device-pool.js';
3
3
  import { NoDeviceAvailableError } from './ports.js';
4
- function makeAllocator(devices) {
4
+ /** Fake driver exposing only allocate()/release() — all DevicePool needs, no cast required. */
5
+ function fakeDriver(impl) {
6
+ return impl;
7
+ }
8
+ function makeDriver(devices) {
5
9
  let i = 0;
6
- return {
10
+ return fakeDriver({
7
11
  async allocate() {
8
12
  if (i >= devices.length) {
9
13
  throw new Error('no more fake devices');
@@ -11,19 +15,19 @@ function makeAllocator(devices) {
11
15
  return devices[i++];
12
16
  },
13
17
  async release() { },
14
- };
18
+ });
15
19
  }
16
20
  test('first allocate spins up a slot and returns a handle', async () => {
17
- const allocator = makeAllocator([{ deviceId: 'd1', platform: 'ios' }]);
18
- const pool = new DevicePool({ allocator, maxSlots: 2 });
21
+ const driver = makeDriver([{ deviceId: 'd1', platform: 'ios' }]);
22
+ const pool = new DevicePool({ driver, maxSlots: 2 });
19
23
  const handle = await pool.allocate({ platform: 'ios' });
20
24
  expect(handle.deviceId).toBe('d1');
21
25
  expect(handle.platform).toBe('ios');
22
26
  expect(handle.allocationId).toMatch(/^alloc-/);
23
27
  });
24
28
  test('a released slot is reused by a subsequent allocate', async () => {
25
- const allocator = makeAllocator([{ deviceId: 'd1', platform: 'ios' }]);
26
- const pool = new DevicePool({ allocator, maxSlots: 2 });
29
+ const driver = makeDriver([{ deviceId: 'd1', platform: 'ios' }]);
30
+ const pool = new DevicePool({ driver, maxSlots: 2 });
27
31
  const first = await pool.allocate({ platform: 'ios' });
28
32
  await pool.release(first.allocationId);
29
33
  const second = await pool.allocate({ platform: 'ios' });
@@ -32,14 +36,14 @@ test('a released slot is reused by a subsequent allocate', async () => {
32
36
  });
33
37
  test('a second concurrent allocate when no free slot triggers parallel allocation', async () => {
34
38
  let calls = 0;
35
- const allocator = {
39
+ const driver = fakeDriver({
36
40
  async allocate() {
37
41
  calls++;
38
42
  return { deviceId: `d${calls}`, platform: 'ios' };
39
43
  },
40
44
  async release() { },
41
- };
42
- const pool = new DevicePool({ allocator, maxSlots: 2 });
45
+ });
46
+ const pool = new DevicePool({ driver, maxSlots: 2 });
43
47
  const [a, b] = await Promise.all([
44
48
  pool.allocate({ platform: 'ios' }),
45
49
  pool.allocate({ platform: 'ios' }),
@@ -49,8 +53,8 @@ test('a second concurrent allocate when no free slot triggers parallel allocatio
49
53
  expect(calls).toBe(2);
50
54
  });
51
55
  test('waiter resolves when an existing allocated slot is released', async () => {
52
- const allocator = makeAllocator([{ deviceId: 'd1', platform: 'ios' }]);
53
- const pool = new DevicePool({ allocator, maxSlots: 1 });
56
+ const driver = makeDriver([{ deviceId: 'd1', platform: 'ios' }]);
57
+ const pool = new DevicePool({ driver, maxSlots: 1 });
54
58
  const first = await pool.allocate({ platform: 'ios' });
55
59
  let secondHandle;
56
60
  const secondPromise = pool.allocate({ platform: 'ios' }).then((h) => { secondHandle = h; });
@@ -63,10 +67,10 @@ test('waiter resolves when an existing allocated slot is released', async () =>
63
67
  test('NoDeviceAvailableError re-queues the waiter to be served on next release', async () => {
64
68
  // Simulates 3 workers competing for 2 devices.
65
69
  // Workers 0 and 1 allocate. Worker 2 gets NoDeviceAvailableError from the
66
- // allocator. It should re-queue and be served when worker 0 releases.
70
+ // driver. It should re-queue and be served when worker 0 releases.
67
71
  let counter = 0;
68
72
  const devices = ['sim-a', 'sim-b'];
69
- const allocator = {
73
+ const driver = fakeDriver({
70
74
  async allocate(_c, takenDeviceIds) {
71
75
  const available = devices.filter(id => !takenDeviceIds.has(id));
72
76
  if (available.length === 0) {
@@ -76,8 +80,8 @@ test('NoDeviceAvailableError re-queues the waiter to be served on next release',
76
80
  return { deviceId, platform: 'ios' };
77
81
  },
78
82
  async release() { },
79
- };
80
- const pool = new DevicePool({ allocator, maxSlots: 3 });
83
+ });
84
+ const pool = new DevicePool({ driver, maxSlots: 3 });
81
85
  const w0 = await pool.allocate({ platform: 'ios' });
82
86
  await pool.allocate({ platform: 'ios' });
83
87
  // w2 should block because both devices are taken.
@@ -92,7 +96,7 @@ test('NoDeviceAvailableError re-queues the waiter to be served on next release',
92
96
  });
93
97
  test('allocation failure rejects the requesting waiter and drops the slot', async () => {
94
98
  let attempts = 0;
95
- const allocator = {
99
+ const driver = fakeDriver({
96
100
  async allocate() {
97
101
  attempts++;
98
102
  if (attempts === 1) {
@@ -101,15 +105,15 @@ test('allocation failure rejects the requesting waiter and drops the slot', asyn
101
105
  return { deviceId: `d${attempts}`, platform: 'ios' };
102
106
  },
103
107
  async release() { },
104
- };
105
- const pool = new DevicePool({ allocator, maxSlots: 2 });
108
+ });
109
+ const pool = new DevicePool({ driver, maxSlots: 2 });
106
110
  await expect(pool.allocate({ platform: 'ios' })).rejects.toThrow('boom');
107
111
  const handle = await pool.allocate({ platform: 'ios' });
108
112
  expect(handle.deviceId).toBe('d2');
109
113
  });
110
114
  test('FIFO order across multiple waiters', async () => {
111
- const allocator = makeAllocator([{ deviceId: 'd1', platform: 'ios' }]);
112
- const pool = new DevicePool({ allocator, maxSlots: 1 });
115
+ const driver = makeDriver([{ deviceId: 'd1', platform: 'ios' }]);
116
+ const pool = new DevicePool({ driver, maxSlots: 1 });
113
117
  const first = await pool.allocate({ platform: 'ios' });
114
118
  const order = [];
115
119
  const w1 = pool.allocate({ platform: 'ios' }).then((h) => order.push(`w1:${h.allocationId}`));
@@ -124,33 +128,33 @@ test('FIFO order across multiple waiters', async () => {
124
128
  expect(order[1]).toMatch(/^w2:/);
125
129
  });
126
130
  test('isAppInstalled is false until recordAppInstalled is called', async () => {
127
- const allocator = makeAllocator([{ deviceId: 'd1', platform: 'ios' }]);
128
- const pool = new DevicePool({ allocator, maxSlots: 1 });
131
+ const driver = makeDriver([{ deviceId: 'd1', platform: 'ios' }]);
132
+ const pool = new DevicePool({ driver, maxSlots: 1 });
129
133
  const handle = await pool.allocate({ platform: 'ios' });
130
134
  expect(pool.isAppInstalled(handle.allocationId, 'app.ipa')).toBe(false);
131
135
  pool.recordAppInstalled(handle.allocationId, 'app.ipa');
132
136
  expect(pool.isAppInstalled(handle.allocationId, 'app.ipa')).toBe(true);
133
137
  });
134
138
  test('install tracking persists across releases of the same slot', async () => {
135
- const allocator = makeAllocator([{ deviceId: 'd1', platform: 'ios' }]);
136
- const pool = new DevicePool({ allocator, maxSlots: 1 });
139
+ const driver = makeDriver([{ deviceId: 'd1', platform: 'ios' }]);
140
+ const pool = new DevicePool({ driver, maxSlots: 1 });
137
141
  const first = await pool.allocate({ platform: 'ios' });
138
142
  pool.recordAppInstalled(first.allocationId, 'app.ipa');
139
143
  await pool.release(first.allocationId);
140
144
  const second = await pool.allocate({ platform: 'ios' });
141
145
  expect(pool.isAppInstalled(second.allocationId, 'app.ipa')).toBe(true);
142
146
  });
143
- test('shutdown calls allocator.release for every available slot', async () => {
147
+ test('shutdown calls driver.release for every available slot', async () => {
144
148
  const released = [];
145
149
  let counter = 0;
146
- const allocator = {
150
+ const driver = fakeDriver({
147
151
  async allocate() {
148
152
  counter++;
149
153
  return { deviceId: `d${counter}`, platform: 'ios' };
150
154
  },
151
155
  async release(deviceId) { released.push(deviceId); },
152
- };
153
- const pool = new DevicePool({ allocator, maxSlots: 2 });
156
+ });
157
+ const pool = new DevicePool({ driver, maxSlots: 2 });
154
158
  const a = await pool.allocate({ platform: 'ios' });
155
159
  const b = await pool.allocate({ platform: 'ios' });
156
160
  await pool.release(a.allocationId);
@@ -158,28 +162,60 @@ test('shutdown calls allocator.release for every available slot', async () => {
158
162
  expect(released.sort()).toEqual([a.deviceId, b.deviceId].sort());
159
163
  });
160
164
  test('shutdown rejects in-flight waiters', async () => {
161
- const allocator = {
165
+ const driver = fakeDriver({
162
166
  async allocate() {
163
167
  return new Promise(() => { });
164
168
  },
165
169
  async release() { },
166
- };
167
- const pool = new DevicePool({ allocator, maxSlots: 1 });
170
+ });
171
+ const pool = new DevicePool({ driver, maxSlots: 1 });
168
172
  const promise = pool.allocate({ platform: 'ios' });
169
173
  await Promise.resolve();
170
174
  await pool.shutdown();
171
175
  await expect(promise).rejects.toThrow(/shutdown/i);
172
176
  });
173
177
  test('allocation that exceeds allocationTimeoutMs rejects with timeout error', async () => {
174
- const allocator = {
178
+ const driver = fakeDriver({
175
179
  async allocate(_c, _t, signal) {
176
180
  return new Promise((_, reject) => {
177
181
  signal?.addEventListener('abort', () => reject(new Error('aborted')));
178
182
  });
179
183
  },
180
184
  async release() { },
181
- };
182
- const pool = new DevicePool({ allocator, maxSlots: 1, allocationTimeoutMs: 50 });
185
+ });
186
+ const pool = new DevicePool({ driver, maxSlots: 1, allocationTimeoutMs: 50 });
183
187
  await expect(pool.allocate({ platform: 'ios' })).rejects.toThrow(/timed out/i);
184
188
  });
189
+ test('a released simulator slot is not reused for a waiter demanding a real device', async () => {
190
+ const driver = makeDriver([
191
+ { deviceId: 'sim-1', platform: 'ios', type: 'simulator' },
192
+ { deviceId: 'real-1', platform: 'ios', type: 'real' },
193
+ ]);
194
+ const pool = new DevicePool({ driver, maxSlots: 2 });
195
+ const first = await pool.allocate({ platform: 'ios', deviceType: 'simulator' });
196
+ await pool.release(first.allocationId);
197
+ const second = await pool.allocate({ platform: 'ios', deviceType: 'real' });
198
+ expect(second.deviceId).toBe('real-1');
199
+ });
200
+ test('a released slot is not reused for a waiter whose osVersion the device does not satisfy', async () => {
201
+ const driver = makeDriver([
202
+ { deviceId: 'ios16', platform: 'ios', osVersion: '16.4' },
203
+ { deviceId: 'ios17', platform: 'ios', osVersion: '17.5' },
204
+ ]);
205
+ const pool = new DevicePool({ driver, maxSlots: 2 });
206
+ const first = await pool.allocate({ platform: 'ios' });
207
+ await pool.release(first.allocationId);
208
+ const second = await pool.allocate({ platform: 'ios', osVersion: '17' });
209
+ expect(second.deviceId).toBe('ios17');
210
+ });
211
+ test('a released slot is reused when it satisfies the deviceType and osVersion criteria', async () => {
212
+ const driver = makeDriver([
213
+ { deviceId: 'sim-17', platform: 'ios', type: 'simulator', osVersion: '17.5' },
214
+ ]);
215
+ const pool = new DevicePool({ driver, maxSlots: 2 });
216
+ const first = await pool.allocate({ platform: 'ios' });
217
+ await pool.release(first.allocationId);
218
+ const second = await pool.allocate({ platform: 'ios', deviceType: 'simulator', osVersion: '>=17' });
219
+ expect(second.deviceId).toBe('sim-17');
220
+ });
185
221
  //# sourceMappingURL=device-pool.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-pool.test.js","sourceRoot":"","sources":["../../../src/device-pool/application/device-pool.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,SAAS,aAAa,CAAC,OAAyB;IAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO;QACL,KAAK,CAAC,QAAQ;YACZ,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,OAAO,KAAiB,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IACpE,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;IAC7F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,SAAS,GAAoB;QACjC,KAAK,CAAC,QAAQ;YACZ,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,OAAO,KAAI,CAAC;KACnB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KACnC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;IAC7E,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,IAAI,YAA8C,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE,CAAC;IAErC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,aAAa,CAAC;IAEpB,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;IAC1F,+CAA+C;IAC/C,0EAA0E;IAC1E,sEAAsE;IACtE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,SAAS,GAAoB;QACjC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc;YAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;QACD,KAAK,CAAC,OAAO,KAAI,CAAC;KACnB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAEzC,kDAAkD;IAClD,IAAI,QAA0C,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAEjC,kCAAkC;IAClC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,SAAS,CAAC;IAEhB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;IACrF,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,SAAS,GAAoB;QACjC,KAAK,CAAC,QAAQ;YACZ,QAAQ,EAAE,CAAC;YACX,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,IAAI,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,OAAO,KAAI,CAAC;KACnB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;IACpD,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC9F,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAE9F,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC;IACT,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC;IAET,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;IAC5E,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;IAC5E,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAEvD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;IAC3E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,SAAS,GAAoB;QACjC,KAAK,CAAC,QAAQ;YACZ,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,QAAgB,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC7D,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEtB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;IACpD,MAAM,SAAS,GAAoB;QACjC,KAAK,CAAC,QAAQ;YACZ,OAAO,IAAI,OAAO,CAAiB,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,OAAO,KAAI,CAAC;KACnB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEtB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;IACxF,MAAM,SAAS,GAAoB;QACjC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM;YAC3B,OAAO,IAAI,OAAO,CAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/C,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,OAAO,KAAI,CAAC;KACnB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;IAEjF,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"device-pool.test.js","sourceRoot":"","sources":["../../../src/device-pool/application/device-pool.test.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,6 @@
1
- import type { DeviceType, Platform } from '@mobilewright/protocol';
2
- /**
3
- * Thrown by a DeviceAllocator when no device is currently available but one
4
- * may become available later (e.g. all matching devices are already taken).
5
- * DevicePool treats this as a temporary condition and re-queues the waiter
6
- * rather than rejecting it outright.
7
- */
8
- export declare class NoDeviceAvailableError extends Error {
9
- constructor(message: string);
10
- }
11
- export interface AllocationCriteria {
12
- platform?: Platform;
13
- /** Serialized regex source — `RegExp.prototype.source`. The allocator reconstructs `new RegExp(...)`. */
14
- deviceNamePattern?: string;
15
- deviceId?: string;
16
- }
17
- export interface AllocateResult {
18
- deviceId: string;
19
- platform: Platform;
20
- driver?: string;
21
- model?: string;
22
- osVersion?: string;
23
- type?: DeviceType;
24
- }
25
- /**
26
- * Driver-specific allocator. Implementations are at the outer adapter layer.
27
- * `takenDeviceIds` lets the allocator avoid handing out devices the pool already has.
28
- */
29
- export interface DeviceAllocator {
30
- allocate(criteria: AllocationCriteria, takenDeviceIds: ReadonlySet<string>, signal?: AbortSignal): Promise<AllocateResult>;
31
- /** Called at pool shutdown for every slot in `available` or `allocated` state. */
32
- release(deviceId: string): Promise<void>;
33
- }
1
+ import type { AllocatedDevice, AllocationCriteria, DeviceType, Platform } from '@mobilewright/protocol';
2
+ export { NoDeviceAvailableError } from '@mobilewright/protocol';
3
+ export type { AllocatedDevice, AllocationCriteria };
34
4
  export interface AllocationHandle {
35
5
  allocationId: string;
36
6
  deviceId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/device-pool/application/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yGAAyG;IACzG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CACN,QAAQ,EAAE,kBAAkB,EAC5B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAE3B,kFAAkF;IAClF,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E"}
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/device-pool/application/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAExG,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E"}
@@ -1,13 +1,2 @@
1
- /**
2
- * Thrown by a DeviceAllocator when no device is currently available but one
3
- * may become available later (e.g. all matching devices are already taken).
4
- * DevicePool treats this as a temporary condition and re-queues the waiter
5
- * rather than rejecting it outright.
6
- */
7
- export class NoDeviceAvailableError extends Error {
8
- constructor(message) {
9
- super(message);
10
- this.name = 'NoDeviceAvailableError';
11
- }
12
- }
1
+ export { NoDeviceAvailableError } from '@mobilewright/protocol';
13
2
  //# sourceMappingURL=ports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/device-pool/application/ports.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/device-pool/application/ports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/device-pool/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAUnD;;;GAGG;AACH,wBAA8B,KAAK,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA0B9F"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/device-pool/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnD;;;GAGG;AACH,wBAA8B,KAAK,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAwB9F"}
@@ -1,6 +1,6 @@
1
+ import { MobilecliDriver } from '@mobilewright/driver-mobilecli';
1
2
  import { DevicePool } from './application/device-pool.js';
2
3
  import { DevicePoolHttpServer } from './adapters/http-server.js';
3
- import { createAllocator } from './allocator-factory.js';
4
4
  import { COORDINATOR_URL_ENV } from './client-factory.js';
5
5
  import { loadConfig } from '../config.js';
6
6
  let active;
@@ -10,24 +10,22 @@ let active;
10
10
  */
11
11
  export default async function setup(playwrightConfig) {
12
12
  const config = await loadConfig(process.cwd(), playwrightConfig.configFile);
13
- const { allocator, serverProcess } = await createAllocator(config);
13
+ const driver = config.driver ?? new MobilecliDriver();
14
+ await driver.prepare?.();
14
15
  // Use the resolved worker count from Playwright's FullConfig so CLI flags
15
16
  // like --workers 2 are respected, not just the value in the config file.
16
17
  const maxSlots = playwrightConfig.workers;
17
- const pool = new DevicePool({ allocator, maxSlots });
18
+ const pool = new DevicePool({ driver, maxSlots });
18
19
  const server = new DevicePoolHttpServer({ pool });
19
20
  const port = await server.listen();
20
21
  process.env[COORDINATOR_URL_ENV] = `http://127.0.0.1:${port}`;
21
- active = { pool, server, serverProcess };
22
+ active = { pool, server };
22
23
  return async () => {
23
24
  if (!active) {
24
25
  return;
25
26
  }
26
27
  await active.pool.shutdown();
27
28
  await active.server.close();
28
- if (active.serverProcess) {
29
- active.serverProcess.kill();
30
- }
31
29
  delete process.env[COORDINATOR_URL_ENV];
32
30
  active = undefined;
33
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/device-pool/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS1C,IAAI,MAAqC,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK,CAAC,gBAA4B;IAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnE,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAC9D,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAEzC,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/device-pool/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,IAAI,MAAqC,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK,CAAC,gBAA4B;IAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAEzB,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAC9D,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAE1B,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { MobilewrightDriver } from '@mobilewright/protocol';
2
+ /**
3
+ * Registers the driver instance for the current process. `config.ts` calls
4
+ * this while Playwright evaluates the user's config file; `observer-reporter.ts`
5
+ * reads it back when Playwright instantiates that reporter by path, in the
6
+ * same process — no serialization boundary between the two.
7
+ */
8
+ export declare function setActiveDriver(driver: MobilewrightDriver | undefined): void;
9
+ export declare function getActiveDriver(): MobilewrightDriver | undefined;
10
+ //# sourceMappingURL=driver-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-registry.d.ts","sourceRoot":"","sources":["../src/driver-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAE5E;AAED,wBAAgB,eAAe,IAAI,kBAAkB,GAAG,SAAS,CAEhE"}
@@ -0,0 +1,14 @@
1
+ let activeDriver;
2
+ /**
3
+ * Registers the driver instance for the current process. `config.ts` calls
4
+ * this while Playwright evaluates the user's config file; `observer-reporter.ts`
5
+ * reads it back when Playwright instantiates that reporter by path, in the
6
+ * same process — no serialization boundary between the two.
7
+ */
8
+ export function setActiveDriver(driver) {
9
+ activeDriver = driver;
10
+ }
11
+ export function getActiveDriver() {
12
+ return activeDriver;
13
+ }
14
+ //# sourceMappingURL=driver-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-registry.js","sourceRoot":"","sources":["../src/driver-registry.ts"],"names":[],"mappings":"AAEA,IAAI,YAA4C,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsC;IACpE,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { ios, android, type LaunchOptions } from './launchers.js';
2
2
  export { expect } from '@mobilewright/core';
3
3
  export { Device, Screen, Locator, MobileWebViewPage, MobileWebViewLocator, Page, WebLocator } from '@mobilewright/core';
4
- export { defineConfig, loadConfig, type MobilewrightConfig, type MobilewrightProjectConfig, type MobilewrightUseOptions, type DriverConfig, type DriverConfigMobilecli, type DriverConfigMobileNext } from './config.js';
4
+ export { defineConfig, loadConfig, type MobilewrightConfig, type MobilewrightProjectConfig, type MobilewrightUseOptions } from './config.js';
5
+ export type { MobilewrightDriver } from '@mobilewright/protocol';
5
6
  export { MobilewrightError } from './errors.js';
6
7
  export { createDevicePoolClient } from './device-pool/client-factory.js';
7
8
  export { connectDevice, installAndLaunchApps } from './launchers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGxH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGzN,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGxH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG7I,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAsB,MAAM,gBAAgB,CAAC;AAElE,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExH,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAoK,MAAM,aAAa,CAAC;AAEzN,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAsB,MAAM,gBAAgB,CAAC;AAElE,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExH,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAwF,MAAM,aAAa,CAAC;AAK7I,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}