mobilewright 0.0.52 → 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.
- package/dist/cli.js +1 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -24
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +89 -24
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +174 -142
- package/dist/config.test.js.map +1 -1
- package/dist/device-pool/adapters/http-client.test.js +4 -4
- package/dist/device-pool/adapters/http-client.test.js.map +1 -1
- package/dist/device-pool/adapters/http-server.test.js +7 -7
- package/dist/device-pool/adapters/http-server.test.js.map +1 -1
- package/dist/device-pool/application/device-pool.d.ts +4 -3
- package/dist/device-pool/application/device-pool.d.ts.map +1 -1
- package/dist/device-pool/application/device-pool.js +30 -8
- package/dist/device-pool/application/device-pool.js.map +1 -1
- package/dist/device-pool/application/device-pool.test.js +71 -35
- package/dist/device-pool/application/device-pool.test.js.map +1 -1
- package/dist/device-pool/application/ports.d.ts +3 -33
- package/dist/device-pool/application/ports.d.ts.map +1 -1
- package/dist/device-pool/application/ports.js +1 -12
- package/dist/device-pool/application/ports.js.map +1 -1
- package/dist/device-pool/setup.d.ts.map +1 -1
- package/dist/device-pool/setup.js +5 -7
- package/dist/device-pool/setup.js.map +1 -1
- package/dist/driver-registry.d.ts +10 -0
- package/dist/driver-registry.d.ts.map +1 -0
- package/dist/driver-registry.js +14 -0
- package/dist/driver-registry.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/launchers.d.ts +5 -5
- package/dist/launchers.d.ts.map +1 -1
- package/dist/launchers.js +8 -32
- package/dist/launchers.js.map +1 -1
- package/dist/observer-reporter.d.ts +21 -0
- package/dist/observer-reporter.d.ts.map +1 -0
- package/dist/observer-reporter.js +106 -0
- package/dist/observer-reporter.js.map +1 -0
- package/dist/observer-reporter.test.d.ts +2 -0
- package/dist/observer-reporter.test.d.ts.map +1 -0
- package/dist/observer-reporter.test.js +182 -0
- package/dist/observer-reporter.test.js.map +1 -0
- package/package.json +6 -6
- package/dist/device-pool/adapters/mobilecli-allocator.d.ts +0 -19
- package/dist/device-pool/adapters/mobilecli-allocator.d.ts.map +0 -1
- package/dist/device-pool/adapters/mobilecli-allocator.js +0 -26
- package/dist/device-pool/adapters/mobilecli-allocator.js.map +0 -1
- package/dist/device-pool/adapters/mobilecli-allocator.test.d.ts +0 -2
- package/dist/device-pool/adapters/mobilecli-allocator.test.d.ts.map +0 -1
- package/dist/device-pool/adapters/mobilecli-allocator.test.js +0 -61
- package/dist/device-pool/adapters/mobilecli-allocator.test.js.map +0 -1
- package/dist/device-pool/adapters/mobilenext-allocator.d.ts +0 -24
- package/dist/device-pool/adapters/mobilenext-allocator.d.ts.map +0 -1
- package/dist/device-pool/adapters/mobilenext-allocator.js +0 -90
- package/dist/device-pool/adapters/mobilenext-allocator.js.map +0 -1
- package/dist/device-pool/adapters/mobilenext-allocator.test.d.ts +0 -2
- package/dist/device-pool/adapters/mobilenext-allocator.test.d.ts.map +0 -1
- package/dist/device-pool/adapters/mobilenext-allocator.test.js +0 -42
- package/dist/device-pool/adapters/mobilenext-allocator.test.js.map +0 -1
- package/dist/device-pool/allocator-factory.d.ts +0 -10
- package/dist/device-pool/allocator-factory.d.ts.map +0 -1
- package/dist/device-pool/allocator-factory.js +0 -23
- package/dist/device-pool/allocator-factory.js.map +0 -1
- package/dist/server.d.ts +0 -16
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -101
- 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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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.
|
|
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":"
|
|
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
|
-
|
|
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
|
|
18
|
-
const pool = new DevicePool({
|
|
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
|
|
26
|
-
const pool = new DevicePool({
|
|
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
|
|
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({
|
|
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
|
|
53
|
-
const pool = new DevicePool({
|
|
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
|
-
//
|
|
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
|
|
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({
|
|
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
|
|
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({
|
|
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
|
|
112
|
-
const pool = new DevicePool({
|
|
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
|
|
128
|
-
const pool = new DevicePool({
|
|
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
|
|
136
|
-
const pool = new DevicePool({
|
|
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
|
|
147
|
+
test('shutdown calls driver.release for every available slot', async () => {
|
|
144
148
|
const released = [];
|
|
145
149
|
let counter = 0;
|
|
146
|
-
const
|
|
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({
|
|
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
|
|
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({
|
|
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
|
|
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({
|
|
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":"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"}
|
|
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
|
-
|
|
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,
|
|
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
|
|
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;
|
|
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
|
|
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({
|
|
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
|
|
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,
|
|
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
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|