mobilewright 0.0.26 → 0.0.27
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 +51 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +3 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +18 -3
- package/dist/config.js.map +1 -1
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +22 -0
- package/dist/config.test.js.map +1 -0
- package/dist/device-pool/adapters/http-client.d.ts +16 -0
- package/dist/device-pool/adapters/http-client.d.ts.map +1 -0
- package/dist/device-pool/adapters/http-client.js +91 -0
- package/dist/device-pool/adapters/http-client.js.map +1 -0
- package/dist/device-pool/adapters/http-client.test.d.ts +2 -0
- package/dist/device-pool/adapters/http-client.test.d.ts.map +1 -0
- package/dist/device-pool/adapters/http-client.test.js +72 -0
- package/dist/device-pool/adapters/http-client.test.js.map +1 -0
- package/dist/device-pool/adapters/http-server.d.ts +19 -0
- package/dist/device-pool/adapters/http-server.d.ts.map +1 -0
- package/dist/device-pool/adapters/http-server.js +126 -0
- package/dist/device-pool/adapters/http-server.js.map +1 -0
- package/dist/device-pool/adapters/http-server.test.d.ts +2 -0
- package/dist/device-pool/adapters/http-server.test.d.ts.map +1 -0
- package/dist/device-pool/adapters/http-server.test.js +203 -0
- package/dist/device-pool/adapters/http-server.test.js.map +1 -0
- package/dist/device-pool/adapters/mobile-use-allocator.d.ts +13 -0
- package/dist/device-pool/adapters/mobile-use-allocator.d.ts.map +1 -0
- package/dist/device-pool/adapters/mobile-use-allocator.js +31 -0
- package/dist/device-pool/adapters/mobile-use-allocator.js.map +1 -0
- package/dist/device-pool/adapters/mobilecli-allocator.d.ts +19 -0
- package/dist/device-pool/adapters/mobilecli-allocator.d.ts.map +1 -0
- package/dist/device-pool/adapters/mobilecli-allocator.js +26 -0
- package/dist/device-pool/adapters/mobilecli-allocator.js.map +1 -0
- package/dist/device-pool/adapters/mobilecli-allocator.test.d.ts +2 -0
- package/dist/device-pool/adapters/mobilecli-allocator.test.d.ts.map +1 -0
- package/dist/device-pool/adapters/mobilecli-allocator.test.js +61 -0
- package/dist/device-pool/adapters/mobilecli-allocator.test.js.map +1 -0
- package/dist/device-pool/allocator-factory.d.ts +10 -0
- package/dist/device-pool/allocator-factory.d.ts.map +1 -0
- package/dist/device-pool/allocator-factory.js +25 -0
- package/dist/device-pool/allocator-factory.js.map +1 -0
- package/dist/device-pool/application/device-pool.d.ts +29 -0
- package/dist/device-pool/application/device-pool.d.ts.map +1 -0
- package/dist/device-pool/application/device-pool.js +174 -0
- package/dist/device-pool/application/device-pool.js.map +1 -0
- package/dist/device-pool/application/device-pool.test.d.ts +2 -0
- package/dist/device-pool/application/device-pool.test.d.ts.map +1 -0
- package/dist/device-pool/application/device-pool.test.js +185 -0
- package/dist/device-pool/application/device-pool.test.js.map +1 -0
- package/dist/device-pool/application/ports.d.ts +44 -0
- package/dist/device-pool/application/ports.d.ts.map +1 -0
- package/dist/device-pool/application/ports.js +13 -0
- package/dist/device-pool/application/ports.js.map +1 -0
- package/dist/device-pool/client-factory.d.ts +8 -0
- package/dist/device-pool/client-factory.d.ts.map +1 -0
- package/dist/device-pool/client-factory.js +16 -0
- package/dist/device-pool/client-factory.js.map +1 -0
- package/dist/device-pool/domain/allocation.d.ts +21 -0
- package/dist/device-pool/domain/allocation.d.ts.map +1 -0
- package/dist/device-pool/domain/allocation.js +14 -0
- package/dist/device-pool/domain/allocation.js.map +1 -0
- package/dist/device-pool/domain/allocation.test.d.ts +2 -0
- package/dist/device-pool/domain/allocation.test.d.ts.map +1 -0
- package/dist/device-pool/domain/allocation.test.js +21 -0
- package/dist/device-pool/domain/allocation.test.js.map +1 -0
- package/dist/device-pool/domain/device-slot.d.ts +22 -0
- package/dist/device-pool/domain/device-slot.d.ts.map +1 -0
- package/dist/device-pool/domain/device-slot.js +53 -0
- package/dist/device-pool/domain/device-slot.js.map +1 -0
- package/dist/device-pool/domain/device-slot.test.d.ts +2 -0
- package/dist/device-pool/domain/device-slot.test.d.ts.map +1 -0
- package/dist/device-pool/domain/device-slot.test.js +53 -0
- package/dist/device-pool/domain/device-slot.test.js.map +1 -0
- package/dist/device-pool/setup.d.ts +7 -0
- package/dist/device-pool/setup.d.ts.map +1 -0
- package/dist/device-pool/setup.js +35 -0
- package/dist/device-pool/setup.js.map +1 -0
- package/dist/device-pool/teardown.d.ts +7 -0
- package/dist/device-pool/teardown.d.ts.map +1 -0
- package/dist/device-pool/teardown.js +9 -0
- package/dist/device-pool/teardown.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/launchers.d.ts +19 -1
- package/dist/launchers.d.ts.map +1 -1
- package/dist/launchers.js +53 -22
- package/dist/launchers.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export class DeviceSlotStateError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = 'DeviceSlotStateError';
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class DeviceSlot {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._state = 'allocating';
|
|
10
|
+
this._installedApps = new Set();
|
|
11
|
+
}
|
|
12
|
+
get state() {
|
|
13
|
+
return this._state;
|
|
14
|
+
}
|
|
15
|
+
get deviceId() {
|
|
16
|
+
return this._deviceId;
|
|
17
|
+
}
|
|
18
|
+
get platform() {
|
|
19
|
+
return this._platform;
|
|
20
|
+
}
|
|
21
|
+
get allocationId() {
|
|
22
|
+
return this._allocationId;
|
|
23
|
+
}
|
|
24
|
+
markAvailable(deviceId, platform) {
|
|
25
|
+
if (this._state !== 'allocating') {
|
|
26
|
+
throw new DeviceSlotStateError(`markAvailable requires state 'allocating', got '${this._state}'`);
|
|
27
|
+
}
|
|
28
|
+
this._state = 'available';
|
|
29
|
+
this._deviceId = deviceId;
|
|
30
|
+
this._platform = platform;
|
|
31
|
+
}
|
|
32
|
+
claim(allocationId) {
|
|
33
|
+
if (this._state !== 'available') {
|
|
34
|
+
throw new DeviceSlotStateError(`claim requires state 'available', got '${this._state}'`);
|
|
35
|
+
}
|
|
36
|
+
this._state = 'allocated';
|
|
37
|
+
this._allocationId = allocationId;
|
|
38
|
+
}
|
|
39
|
+
release() {
|
|
40
|
+
if (this._state !== 'allocated') {
|
|
41
|
+
throw new DeviceSlotStateError(`release requires state 'allocated', got '${this._state}'`);
|
|
42
|
+
}
|
|
43
|
+
this._state = 'available';
|
|
44
|
+
this._allocationId = undefined;
|
|
45
|
+
}
|
|
46
|
+
recordAppInstalled(bundleId) {
|
|
47
|
+
this._installedApps.add(bundleId);
|
|
48
|
+
}
|
|
49
|
+
isAppInstalled(bundleId) {
|
|
50
|
+
return this._installedApps.has(bundleId);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=device-slot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-slot.js","sourceRoot":"","sources":["../../../src/device-pool/domain/device-slot.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IAAvB;QACU,WAAM,GAAoB,YAAY,CAAC;QAI9B,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAwDtD,CAAC;IAtDC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,QAAgB,EAAE,QAAkB;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,oBAAoB,CAC5B,mDAAmD,IAAI,CAAC,MAAM,GAAG,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,YAAoB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,oBAAoB,CAC5B,0CAA0C,IAAI,CAAC,MAAM,GAAG,CACzD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,oBAAoB,CAC5B,4CAA4C,IAAI,CAAC,MAAM,GAAG,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACjC,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-slot.test.d.ts","sourceRoot":"","sources":["../../../src/device-pool/domain/device-slot.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test';
|
|
2
|
+
import { DeviceSlot, DeviceSlotStateError } from './device-slot.js';
|
|
3
|
+
test('a new slot starts in the allocating state', () => {
|
|
4
|
+
const slot = new DeviceSlot();
|
|
5
|
+
expect(slot.state).toBe('allocating');
|
|
6
|
+
});
|
|
7
|
+
test('an allocating slot becomes available after markAvailable', () => {
|
|
8
|
+
const slot = new DeviceSlot();
|
|
9
|
+
slot.markAvailable('device-1', 'ios');
|
|
10
|
+
expect(slot.state).toBe('available');
|
|
11
|
+
expect(slot.deviceId).toBe('device-1');
|
|
12
|
+
expect(slot.platform).toBe('ios');
|
|
13
|
+
});
|
|
14
|
+
test('an available slot becomes allocated after claim', () => {
|
|
15
|
+
const slot = new DeviceSlot();
|
|
16
|
+
slot.markAvailable('device-1', 'ios');
|
|
17
|
+
slot.claim('alloc-1');
|
|
18
|
+
expect(slot.state).toBe('allocated');
|
|
19
|
+
expect(slot.allocationId).toBe('alloc-1');
|
|
20
|
+
});
|
|
21
|
+
test('an allocated slot becomes available after release', () => {
|
|
22
|
+
const slot = new DeviceSlot();
|
|
23
|
+
slot.markAvailable('device-1', 'ios');
|
|
24
|
+
slot.claim('alloc-1');
|
|
25
|
+
slot.release();
|
|
26
|
+
expect(slot.state).toBe('available');
|
|
27
|
+
expect(slot.allocationId).toBeUndefined();
|
|
28
|
+
});
|
|
29
|
+
test('claiming an already-allocated slot throws DeviceSlotStateError', () => {
|
|
30
|
+
const slot = new DeviceSlot();
|
|
31
|
+
slot.markAvailable('device-1', 'ios');
|
|
32
|
+
slot.claim('alloc-1');
|
|
33
|
+
expect(() => slot.claim('alloc-2')).toThrow(DeviceSlotStateError);
|
|
34
|
+
});
|
|
35
|
+
test('markAvailable on an allocated slot throws', () => {
|
|
36
|
+
const slot = new DeviceSlot();
|
|
37
|
+
slot.markAvailable('device-1', 'ios');
|
|
38
|
+
slot.claim('alloc-1');
|
|
39
|
+
expect(() => slot.markAvailable('device-2', 'ios')).toThrow(DeviceSlotStateError);
|
|
40
|
+
});
|
|
41
|
+
test('release on an available slot throws', () => {
|
|
42
|
+
const slot = new DeviceSlot();
|
|
43
|
+
slot.markAvailable('device-1', 'ios');
|
|
44
|
+
expect(() => slot.release()).toThrow(DeviceSlotStateError);
|
|
45
|
+
});
|
|
46
|
+
test('recordAppInstalled tracks installed bundleIds', () => {
|
|
47
|
+
const slot = new DeviceSlot();
|
|
48
|
+
slot.markAvailable('device-1', 'ios');
|
|
49
|
+
expect(slot.isAppInstalled('com.example')).toBe(false);
|
|
50
|
+
slot.recordAppInstalled('com.example');
|
|
51
|
+
expect(slot.isAppInstalled('com.example')).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=device-slot.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-slot.test.js","sourceRoot":"","sources":["../../../src/device-pool/domain/device-slot.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FullConfig } from '@playwright/test';
|
|
2
|
+
/**
|
|
3
|
+
* Playwright globalSetup entry point. Receives the resolved FullConfig so
|
|
4
|
+
* that CLI overrides (e.g. --workers 2) are reflected in maxSlots.
|
|
5
|
+
*/
|
|
6
|
+
export default function setup(playwrightConfig: FullConfig): Promise<() => Promise<void>>;
|
|
7
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DevicePool } from './application/device-pool.js';
|
|
2
|
+
import { DevicePoolHttpServer } from './adapters/http-server.js';
|
|
3
|
+
import { createAllocator } from './allocator-factory.js';
|
|
4
|
+
import { COORDINATOR_URL_ENV } from './client-factory.js';
|
|
5
|
+
import { loadConfig } from '../config.js';
|
|
6
|
+
let active;
|
|
7
|
+
/**
|
|
8
|
+
* Playwright globalSetup entry point. Receives the resolved FullConfig so
|
|
9
|
+
* that CLI overrides (e.g. --workers 2) are reflected in maxSlots.
|
|
10
|
+
*/
|
|
11
|
+
export default async function setup(playwrightConfig) {
|
|
12
|
+
const config = await loadConfig();
|
|
13
|
+
const { allocator, serverProcess } = await createAllocator(config);
|
|
14
|
+
// Use the resolved worker count from Playwright's FullConfig so CLI flags
|
|
15
|
+
// like --workers 2 are respected, not just the value in the config file.
|
|
16
|
+
const maxSlots = playwrightConfig.workers;
|
|
17
|
+
const pool = new DevicePool({ allocator, maxSlots });
|
|
18
|
+
const server = new DevicePoolHttpServer({ pool });
|
|
19
|
+
const port = await server.listen();
|
|
20
|
+
process.env[COORDINATOR_URL_ENV] = `http://127.0.0.1:${port}`;
|
|
21
|
+
active = { pool, server, serverProcess };
|
|
22
|
+
return async () => {
|
|
23
|
+
if (!active) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
await active.pool.shutdown();
|
|
27
|
+
await active.server.close();
|
|
28
|
+
if (active.serverProcess) {
|
|
29
|
+
active.serverProcess.kill();
|
|
30
|
+
}
|
|
31
|
+
delete process.env[COORDINATOR_URL_ENV];
|
|
32
|
+
active = undefined;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +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,EAAE,CAAC;IAClC,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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playwright globalTeardown entry point. The setup function returns its own
|
|
3
|
+
* teardown, which Playwright runs automatically — so this file exists only as
|
|
4
|
+
* a safety net for unusual config wiring. It is a no-op.
|
|
5
|
+
*/
|
|
6
|
+
export default function teardown(): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=teardown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teardown.d.ts","sourceRoot":"","sources":["../../src/device-pool/teardown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAA8B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAEtD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playwright globalTeardown entry point. The setup function returns its own
|
|
3
|
+
* teardown, which Playwright runs automatically — so this file exists only as
|
|
4
|
+
* a safety net for unusual config wiring. It is a no-op.
|
|
5
|
+
*/
|
|
6
|
+
export default async function teardown() {
|
|
7
|
+
// intentionally empty — setup() returns its own teardown.
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=teardown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/device-pool/teardown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,QAAQ;IACpC,0DAA0D;AAC5D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,4 +3,8 @@ export { expect } from '@mobilewright/core';
|
|
|
3
3
|
export { Device, Screen, Locator } from '@mobilewright/core';
|
|
4
4
|
export { defineConfig, loadConfig, type MobilewrightConfig, type MobilewrightProjectConfig, type MobilewrightUseOptions, type DriverConfig, type DriverConfigMobilecli, type DriverConfigMobileUse } from './config.js';
|
|
5
5
|
export { MobilewrightError } from './errors.js';
|
|
6
|
+
export { createDevicePoolClient } from './device-pool/client-factory.js';
|
|
7
|
+
export { connectDevice, installAndLaunchApps } from './launchers.js';
|
|
8
|
+
export { toArray } from './config.js';
|
|
9
|
+
export type { DevicePoolClient, AllocationHandle, AllocationCriteria } from './device-pool/application/ports.js';
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
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;AAG5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGxN,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,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;AAG5C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGxN,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
CHANGED
|
@@ -8,4 +8,8 @@ export { Device, Screen, Locator } from '@mobilewright/core';
|
|
|
8
8
|
export { defineConfig, loadConfig } from './config.js';
|
|
9
9
|
// Errors
|
|
10
10
|
export { MobilewrightError } from './errors.js';
|
|
11
|
+
// Internal — used by @mobilewright/test fixtures. Not part of the public API.
|
|
12
|
+
export { createDevicePoolClient } from './device-pool/client-factory.js';
|
|
13
|
+
export { connectDevice, installAndLaunchApps } from './launchers.js';
|
|
14
|
+
export { toArray } from './config.js';
|
|
11
15
|
//# sourceMappingURL=index.js.map
|
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,kCAAkC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7D,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmK,MAAM,aAAa,CAAC;AAExN,SAAS;AACT,OAAO,EAAE,iBAAiB,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,kCAAkC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7D,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmK,MAAM,aAAa,CAAC;AAExN,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"}
|
package/dist/launchers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DeviceInfo } from '@mobilewright/protocol';
|
|
1
|
+
import type { Platform, DeviceInfo, MobilewrightDriver } from '@mobilewright/protocol';
|
|
2
2
|
import { Device } from '@mobilewright/core';
|
|
3
3
|
import type { DriverConfig } from './config.js';
|
|
4
4
|
export interface LaunchOptions {
|
|
@@ -16,6 +16,24 @@ interface PlatformLauncher {
|
|
|
16
16
|
launch(opts?: LaunchOptions): Promise<Device>;
|
|
17
17
|
devices(): Promise<DeviceInfo[]>;
|
|
18
18
|
}
|
|
19
|
+
export interface ConnectDeviceParams {
|
|
20
|
+
platform: Platform;
|
|
21
|
+
deviceId: string;
|
|
22
|
+
driverConfig?: DriverConfig;
|
|
23
|
+
url?: string;
|
|
24
|
+
timeout?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface FindDeviceParams {
|
|
27
|
+
platform: Platform;
|
|
28
|
+
deviceId?: string;
|
|
29
|
+
deviceName?: RegExp;
|
|
30
|
+
driverConfig?: DriverConfig;
|
|
31
|
+
url?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function createDriver(driverConfig?: DriverConfig, url?: string): MobilewrightDriver;
|
|
34
|
+
export declare function connectDevice(params: ConnectDeviceParams): Promise<Device>;
|
|
35
|
+
export declare function installAndLaunchApps(device: Device, opts: LaunchOptions): Promise<void>;
|
|
36
|
+
export declare function findDevice(params: FindDeviceParams): Promise<DeviceInfo>;
|
|
19
37
|
/** iOS platform launcher */
|
|
20
38
|
export declare const ios: PlatformLauncher;
|
|
21
39
|
/** Android platform launcher */
|
package/dist/launchers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchers.d.ts","sourceRoot":"","sources":["../src/launchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"launchers.d.ts","sourceRoot":"","sources":["../src/launchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,UAAU,gBAAgB;IACxB,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQ1F;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYhF;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ7F;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAe9E;AA8CD,4BAA4B;AAC5B,eAAO,MAAM,GAAG,kBAAwB,CAAC;AAEzC,gCAAgC;AAChC,eAAO,MAAM,OAAO,kBAA4B,CAAC"}
|
package/dist/launchers.js
CHANGED
|
@@ -2,7 +2,8 @@ import { Device } from '@mobilewright/core';
|
|
|
2
2
|
import { MobilecliDriver, DEFAULT_URL } from '@mobilewright/driver-mobilecli';
|
|
3
3
|
import { MobileUseDriver } from '@mobilewright/driver-mobile-use';
|
|
4
4
|
import { ensureMobilecliReachable } from './server.js';
|
|
5
|
-
|
|
5
|
+
import { toArray } from './config.js';
|
|
6
|
+
export function createDriver(driverConfig, url) {
|
|
6
7
|
if (driverConfig?.type === 'mobile-use') {
|
|
7
8
|
return new MobileUseDriver({
|
|
8
9
|
region: driverConfig.region,
|
|
@@ -11,7 +12,21 @@ function createDriver(driverConfig, url) {
|
|
|
11
12
|
}
|
|
12
13
|
return new MobilecliDriver({ url });
|
|
13
14
|
}
|
|
14
|
-
async function
|
|
15
|
+
export async function connectDevice(params) {
|
|
16
|
+
// URL is baked into the driver at construction time; don't override it here.
|
|
17
|
+
// Passing mobilecli's default URL into MobileUseDriver.connect() would send
|
|
18
|
+
// requests to the wrong server.
|
|
19
|
+
const driver = createDriver(params.driverConfig, params.url);
|
|
20
|
+
const device = new Device(driver);
|
|
21
|
+
await device.connect({
|
|
22
|
+
platform: params.platform,
|
|
23
|
+
deviceId: params.deviceId,
|
|
24
|
+
timeout: params.timeout,
|
|
25
|
+
});
|
|
26
|
+
return device;
|
|
27
|
+
}
|
|
28
|
+
export async function installAndLaunchApps(device, opts) {
|
|
29
|
+
const appsToInstall = toArray(opts.installApps);
|
|
15
30
|
for (const appPath of appsToInstall) {
|
|
16
31
|
await device.installApp(appPath);
|
|
17
32
|
}
|
|
@@ -19,33 +34,49 @@ async function installAndLaunchApps(device, appsToInstall, opts) {
|
|
|
19
34
|
await device.launchApp(opts.bundleId);
|
|
20
35
|
}
|
|
21
36
|
}
|
|
37
|
+
export async function findDevice(params) {
|
|
38
|
+
const url = params.url ?? DEFAULT_URL;
|
|
39
|
+
const driver = createDriver(params.driverConfig, url);
|
|
40
|
+
const devices = await driver.listDevices({ platform: params.platform });
|
|
41
|
+
const match = devices
|
|
42
|
+
.filter((d) => d.state === 'online')
|
|
43
|
+
.filter((d) => !params.deviceId || d.id === params.deviceId)
|
|
44
|
+
.filter((d) => !params.deviceName || params.deviceName.test(d.name))
|
|
45
|
+
.at(0);
|
|
46
|
+
if (!match) {
|
|
47
|
+
throw new Error(`no online ${params.platform} device found`);
|
|
48
|
+
}
|
|
49
|
+
return match;
|
|
50
|
+
}
|
|
22
51
|
function createLauncher(platform) {
|
|
23
52
|
return {
|
|
24
53
|
async launch(opts = {}) {
|
|
25
54
|
const driverConfig = opts.driver;
|
|
26
55
|
const url = opts.url ?? DEFAULT_URL;
|
|
27
|
-
|
|
28
|
-
? (Array.isArray(opts.installApps) ? opts.installApps : [opts.installApps])
|
|
29
|
-
: [];
|
|
56
|
+
let serverProcess;
|
|
30
57
|
if (!driverConfig || driverConfig.type === 'mobilecli') {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
58
|
+
const ensured = await ensureMobilecliReachable(url, { autoStart: opts.autoStart ?? true });
|
|
59
|
+
serverProcess = ensured.serverProcess ?? undefined;
|
|
60
|
+
}
|
|
61
|
+
const found = await findDevice({
|
|
62
|
+
platform,
|
|
63
|
+
deviceId: opts.deviceId,
|
|
64
|
+
deviceName: opts.deviceName,
|
|
65
|
+
driverConfig,
|
|
66
|
+
url,
|
|
67
|
+
});
|
|
68
|
+
const device = await connectDevice({
|
|
69
|
+
platform,
|
|
70
|
+
deviceId: found.id,
|
|
71
|
+
driverConfig,
|
|
72
|
+
url,
|
|
73
|
+
timeout: opts.timeout,
|
|
74
|
+
});
|
|
75
|
+
if (serverProcess) {
|
|
76
|
+
const proc = serverProcess;
|
|
77
|
+
device.onClose(() => Promise.resolve(proc.kill()).then(() => undefined));
|
|
42
78
|
}
|
|
43
|
-
|
|
44
|
-
// the driver has its own default (wss://api.mobilenexthq.com/ws).
|
|
45
|
-
const driver = createDriver(driverConfig);
|
|
46
|
-
const device = new Device(driver);
|
|
47
|
-
await device.connect({ ...(opts.url && { url: opts.url }), platform, deviceName: opts.deviceName, timeout: opts.timeout });
|
|
48
|
-
await installAndLaunchApps(device, appsToInstall, opts);
|
|
79
|
+
await installAndLaunchApps(device, opts);
|
|
49
80
|
return device;
|
|
50
81
|
},
|
|
51
82
|
async devices() {
|
package/dist/launchers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchers.js","sourceRoot":"","sources":["../src/launchers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"launchers.js","sourceRoot":"","sources":["../src/launchers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobilewright",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"description": "Mobile device automation framework inspired by Playwright",
|
|
5
5
|
"homepage": "https://mobilewright.dev",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"assets"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@mobilewright/core": "^0.0.
|
|
37
|
-
"@mobilewright/driver-mobilecli": "^0.0.
|
|
38
|
-
"@mobilewright/driver-mobile-use": "^0.0.
|
|
39
|
-
"@mobilewright/protocol": "^0.0.
|
|
40
|
-
"@mobilewright/test": "^0.0.26",
|
|
36
|
+
"@mobilewright/core": "^0.0.27",
|
|
37
|
+
"@mobilewright/driver-mobilecli": "^0.0.27",
|
|
38
|
+
"@mobilewright/driver-mobile-use": "^0.0.27",
|
|
39
|
+
"@mobilewright/protocol": "^0.0.27",
|
|
41
40
|
"commander": "^14.0.3",
|
|
41
|
+
"debug": "^4.4.3",
|
|
42
42
|
"playwright": "1.58.2",
|
|
43
43
|
"ws": "^8.18.0"
|
|
44
44
|
},
|