@e2e-dev/mobile 0.8.0-canary-20260929180659 → 0.8.1
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/README.md +26 -15
- package/dist/.build.json +1 -1
- package/dist/bindings.d.ts +5 -6
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +5 -5
- package/dist/bindings.js.map +1 -1
- package/dist/device.d.ts +5 -5
- package/dist/device.js +1 -1
- package/dist/device.js.map +1 -1
- package/dist/engine.d.ts +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +30 -18
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/links.d.ts +0 -7
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +0 -11
- package/dist/links.js.map +1 -1
- package/dist/nodes.d.ts +1 -1
- package/dist/nodes.d.ts.map +1 -1
- package/dist/options.d.ts +13 -56
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +14 -1
- package/dist/options.js.map +1 -1
- package/dist/pool.js +2 -2
- package/dist/pool.js.map +1 -1
- package/dist/provider.d.ts +11 -5
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +7 -2
- package/dist/provider.js.map +1 -1
- package/dist/surface.d.ts +31 -10
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +92 -23
- package/dist/surface.js.map +1 -1
- package/dist/tools.d.ts +2 -2
- package/dist/tools.js +2 -2
- package/package.json +13 -10
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,KAAK,iBAAiB,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,KAAK,iBAAiB,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,CAAC;AAE/C,0IAA0I;AAC1I,eAAO,MAAM,kBAAkB,YAC7B,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,MAAM,EACN,eAAe,CACP,CAAC;AAEX,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,uFAAuF;AACvF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,cAAc,GAAG,SAAS,CAAC;IAC1E;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IACvD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC7C;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C"}
|
package/dist/options.js
CHANGED
|
@@ -3,5 +3,18 @@
|
|
|
3
3
|
* it drives them through. Shared by the surface (one session per worker) and
|
|
4
4
|
* the pool (the target's devices, one per worker slot).
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
/** Every permission agent-device can grant, deny, or reset on an app: what a target's `app.permissions` and `device.openApp` may name. */
|
|
7
|
+
export const DEVICE_PERMISSIONS = [
|
|
8
|
+
'camera',
|
|
9
|
+
'microphone',
|
|
10
|
+
'photos',
|
|
11
|
+
'contacts',
|
|
12
|
+
'notifications',
|
|
13
|
+
'calendar',
|
|
14
|
+
'location',
|
|
15
|
+
'reminders',
|
|
16
|
+
'motion',
|
|
17
|
+
'siri',
|
|
18
|
+
'media-library',
|
|
19
|
+
];
|
|
7
20
|
//# sourceMappingURL=options.js.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,0IAA0I;AAC1I,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,eAAe;IACf,UAAU;IACV,UAAU;IACV,WAAW;IACX,QAAQ;IACR,MAAM;IACN,eAAe;CACP,CAAC"}
|
package/dist/pool.js
CHANGED
|
@@ -213,14 +213,14 @@ export class DevicePool {
|
|
|
213
213
|
info.log(`booting ${label} (${slot + 1} of ${bindings.length})`);
|
|
214
214
|
await runCommand('boot', () => client.devices.boot(where), info.signal, at);
|
|
215
215
|
const runnerUp = this.options.platform !== 'ios' || (await prepareRunner(client, where, info, at));
|
|
216
|
-
const app = pinnedApp(
|
|
216
|
+
const app = pinnedApp(info.app, binding.installedApp);
|
|
217
217
|
if (app === undefined || !runnerUp) {
|
|
218
218
|
warmed.push(binding);
|
|
219
219
|
continue;
|
|
220
220
|
}
|
|
221
221
|
// A build the suite installs itself is not on the device yet, so there
|
|
222
222
|
// is nothing to open: the first attempt installs it.
|
|
223
|
-
if (
|
|
223
|
+
if (info.app.appPath !== undefined && binding.installedApp === undefined) {
|
|
224
224
|
info.log(`${label}: ${app} awaits the suite's device.installApp()`);
|
|
225
225
|
warmed.push(binding);
|
|
226
226
|
continue;
|
package/dist/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -23,11 +23,17 @@ export interface DeviceRequest {
|
|
|
23
23
|
readonly slot: number;
|
|
24
24
|
/** Devices the run acquires for this target, in all. */
|
|
25
25
|
readonly slots: number;
|
|
26
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* The agent-device version this engine's client speaks, for a provider
|
|
28
|
+
* that picks the daemon version it starts: a daemon of another version may
|
|
29
|
+
* answer the same commands differently.
|
|
30
|
+
*/
|
|
31
|
+
readonly agentDeviceVersion: string;
|
|
32
|
+
/** The target's `app.bundleId`: the bundle id or package `app.open()` launches, when the config names one. */
|
|
27
33
|
readonly app?: string | undefined;
|
|
28
34
|
/**
|
|
29
|
-
* The build the engine would install
|
|
30
|
-
* the config names one. A provider that installs it itself (uploading it,
|
|
35
|
+
* The build the engine would install (the target's `app.appPath`),
|
|
36
|
+
* resolved to an absolute path, when the config names one. A provider that installs it itself (uploading it,
|
|
31
37
|
* or naming a build it already hosts) reports `installedApp` on the lease
|
|
32
38
|
* and the engine skips its own install.
|
|
33
39
|
*/
|
|
@@ -73,7 +79,7 @@ export interface DeviceLease extends Omit<SlotBinding, 'leaseId'> {
|
|
|
73
79
|
/**
|
|
74
80
|
* Bundle id or package of the app the provider installed from the
|
|
75
81
|
* request's `appPath`, and only then: with it the engine installs nothing
|
|
76
|
-
* and, without an `app
|
|
82
|
+
* and, without an `app.bundleId`, `app.open()` launches this app. A lease
|
|
77
83
|
* reporting one for a request without `appPath` fails the run.
|
|
78
84
|
*/
|
|
79
85
|
readonly installedApp?: string | undefined;
|
|
@@ -147,7 +153,7 @@ export declare class LeasedDevices implements DeviceSource {
|
|
|
147
153
|
private readonly held;
|
|
148
154
|
/** The provider when its service records the devices it leases; `undefined` leaves video to agent-device. */
|
|
149
155
|
readonly recorder: RecordingDeviceProvider | undefined;
|
|
150
|
-
constructor(provider: DeviceProvider, options: Pick<MobileOptions, 'platform'
|
|
156
|
+
constructor(provider: DeviceProvider, options: Pick<MobileOptions, 'platform'>);
|
|
151
157
|
bind(info: EnginePrepareInfo): Promise<readonly SlotBinding[]>;
|
|
152
158
|
finish(info: EngineFinishInfo): Promise<void>;
|
|
153
159
|
}
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAI/H,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAElE,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,8GAA8G;IAC9G,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,yFAAyF;IACzF,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC3D,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC/D;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC3C;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,wHAAwH;IACxH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC3D,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzF;AAED,8DAA8D;AAC9D,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhG,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAc/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAIxF;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAanJ;AA8BD;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,YAAY;IAO9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,0HAA0H;IAC1H,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IACzD,6GAA6G;IAC7G,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAEvD,YACmB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAG1D;IAEK,IAAI,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CA2CnE;IAEK,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlD;CACF"}
|
package/dist/provider.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* knows any vendor: a hosted simulator service, a device farm, or a daemon on
|
|
9
9
|
* a machine down the hall are each one small provider in user code.
|
|
10
10
|
*/
|
|
11
|
+
import { createRequire } from 'node:module';
|
|
11
12
|
import path from 'node:path';
|
|
12
13
|
import { ConfigurationError, EngineError, isProviderRecording, obj, } from 'e2e/engine';
|
|
13
14
|
import { isSlotBinding } from './bindings.js';
|
|
@@ -65,6 +66,8 @@ export async function recordLease(provider, lease, context) {
|
|
|
65
66
|
throw failure('returned a recording without a start time and a stop()');
|
|
66
67
|
return recording;
|
|
67
68
|
}
|
|
69
|
+
/** The agent-device this package pins exactly, read from its manifest: the version every worker's client is. */
|
|
70
|
+
const AGENT_DEVICE_VERSION = createRequire(import.meta.url)('../package.json').dependencies['agent-device'];
|
|
68
71
|
/** An object with a lease id: something the provider granted and `release` is owed, whatever the field check makes of it. */
|
|
69
72
|
function isGrantedLease(value) {
|
|
70
73
|
return typeof value === 'object' && value !== null && typeof value.id === 'string';
|
|
@@ -107,8 +110,9 @@ export class LeasedDevices {
|
|
|
107
110
|
}
|
|
108
111
|
async bind(info) {
|
|
109
112
|
const { provider } = this;
|
|
110
|
-
const { platform
|
|
111
|
-
const
|
|
113
|
+
const { platform } = this.options;
|
|
114
|
+
const app = info.app.bundleId;
|
|
115
|
+
const appPath = info.app.appPath === undefined ? undefined : path.resolve(info.projectRoot, info.app.appPath);
|
|
112
116
|
const held = [];
|
|
113
117
|
this.held.set(info.targetName, held);
|
|
114
118
|
info.log(`leasing ${info.slots} ${platform} device(s) from ${provider.name}`);
|
|
@@ -119,6 +123,7 @@ export class LeasedDevices {
|
|
|
119
123
|
targetName: info.targetName,
|
|
120
124
|
slot,
|
|
121
125
|
slots: info.slots,
|
|
126
|
+
agentDeviceVersion: AGENT_DEVICE_VERSION,
|
|
122
127
|
app,
|
|
123
128
|
appPath,
|
|
124
129
|
env: info.env,
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,GAAG,GAKJ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAmF,MAAM,eAAe,CAAC;AAC/H,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/surface.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* scrolls the whole screen.
|
|
13
13
|
*/
|
|
14
14
|
import { type EngineAttemptContext, type EngineCleanupContext, type EngineInitInfo, type EngineObserveOptions, type EngineSnapshot, type LocatorAction, type LocatorExpression, type NodeRef, type OperationContext, type PointerAction, type VideoSegment, type SemanticNode, type ViewportPoint } from 'e2e/engine';
|
|
15
|
-
import type
|
|
15
|
+
import { type AgentDeviceClient, type ClientFactory, type DevicePermission, type LaunchPermissions, type MobileOptions, type PermissionState } from './options.ts';
|
|
16
16
|
import { DevicePool } from './pool.ts';
|
|
17
17
|
/** How `installApp` puts a build on the device. */
|
|
18
18
|
export interface InstallAppOptions {
|
|
@@ -36,14 +36,14 @@ export interface OpenAppOptions {
|
|
|
36
36
|
readonly relaunch?: boolean;
|
|
37
37
|
/**
|
|
38
38
|
* Arguments this launch hands the app: its process arguments on iOS,
|
|
39
|
-
* `am start` arguments on Android. Replaces the
|
|
40
|
-
* for a relaunch of the pinned app.
|
|
39
|
+
* `am start` arguments on Android. Replaces the target's
|
|
40
|
+
* `app.launchArguments` for a relaunch of the pinned app.
|
|
41
41
|
*/
|
|
42
42
|
readonly launchArguments?: readonly string[];
|
|
43
43
|
/**
|
|
44
44
|
* Permissions the app holds before this launch, each granted, denied, or
|
|
45
|
-
* reset. Replaces the
|
|
46
|
-
* app.
|
|
45
|
+
* reset. Replaces the target's `app.permissions` for a relaunch of the
|
|
46
|
+
* pinned app.
|
|
47
47
|
*/
|
|
48
48
|
readonly permissions?: LaunchPermissions;
|
|
49
49
|
}
|
|
@@ -52,6 +52,15 @@ type SettleOptions = {
|
|
|
52
52
|
readonly settle: true;
|
|
53
53
|
readonly settleQuietMs: number;
|
|
54
54
|
} | Record<never, never>;
|
|
55
|
+
/**
|
|
56
|
+
* Refuses a permissions map before any device command: anything but a plain
|
|
57
|
+
* object, a name agent-device
|
|
58
|
+
* does not set, naming the nearest, or a state other than grant, deny, or
|
|
59
|
+
* reset. `INVALID_CONFIG` for a target's `app.permissions`, `INVALID_ARGUMENT`
|
|
60
|
+
* for a test's `device.openApp`. An `undefined` state is skipped, as the preset
|
|
61
|
+
* skips it.
|
|
62
|
+
*/
|
|
63
|
+
export declare function assertPermissions(label: string, permissions: unknown, code: 'INVALID_CONFIG' | 'INVALID_ARGUMENT'): void;
|
|
55
64
|
export declare class AgentDeviceSurface {
|
|
56
65
|
readonly options: MobileOptions;
|
|
57
66
|
private readonly createClient;
|
|
@@ -73,6 +82,8 @@ export declare class AgentDeviceSurface {
|
|
|
73
82
|
private sessionApp;
|
|
74
83
|
/** The app the build `appPath` installed, once `init` has, itself or through a lease. */
|
|
75
84
|
private installedApp;
|
|
85
|
+
/** The target's app, as `init` received it. */
|
|
86
|
+
private app;
|
|
76
87
|
/** Where relative build paths resolve; the run's project root once init has told us. */
|
|
77
88
|
private projectRoot;
|
|
78
89
|
/** The session and device this worker drives, for the error messages whose recovery is per device; set in init. */
|
|
@@ -106,10 +117,12 @@ export declare class AgentDeviceSurface {
|
|
|
106
117
|
*/
|
|
107
118
|
private knownViewport;
|
|
108
119
|
constructor(options: MobileOptions, createClient: ClientFactory);
|
|
109
|
-
/** Whether the
|
|
110
|
-
get managesApp()
|
|
111
|
-
/** The app `app.open()` launches: the `
|
|
120
|
+
/** Whether the target pins an app for `app.open()`, `app.restart()`, and `app.clearState()` to launch. */
|
|
121
|
+
private get managesApp();
|
|
122
|
+
/** The app `app.open()` launches: the target's `bundleId`, else the app its build `appPath` installed. */
|
|
112
123
|
get pinnedApp(): string | undefined;
|
|
124
|
+
/** The build the target's `app.appPath` names, as declared. */
|
|
125
|
+
get appPath(): string | undefined;
|
|
113
126
|
/** Whether an attempt is running on this surface right now. */
|
|
114
127
|
get attemptRunning(): boolean;
|
|
115
128
|
/** The live client; INVALID_STATE before init or after dispose. */
|
|
@@ -154,12 +167,20 @@ export declare class AgentDeviceSurface {
|
|
|
154
167
|
/**
|
|
155
168
|
* Asks the device to record its screen into the attempt directory. Taps stay
|
|
156
169
|
* visible in the recording (agent-device's touch indicator), which is the
|
|
157
|
-
* closest a phone comes to a cursor
|
|
158
|
-
* devices records the attempt instead,
|
|
170
|
+
* closest a phone comes to a cursor, unless `videoTouches` is `false`. A
|
|
171
|
+
* device provider that records its devices records the attempt instead,
|
|
172
|
+
* when the slot rides one of its leases.
|
|
159
173
|
*/
|
|
160
174
|
startVideo(operation: OperationContext): Promise<void>;
|
|
161
175
|
/** Stops the recording and returns its one segment, or none when the device wrote nothing. */
|
|
162
176
|
stopVideo(operation: OperationContext): Promise<readonly VideoSegment[]>;
|
|
177
|
+
/**
|
|
178
|
+
* Stops the device's screen recording. A device-scope recording started
|
|
179
|
+
* with no session made one of its own, and stopping it ends that session,
|
|
180
|
+
* whatever the test opened in it since, so the session is then as
|
|
181
|
+
* `closeApp` leaves it.
|
|
182
|
+
*/
|
|
183
|
+
private stopScreenRecording;
|
|
163
184
|
/**
|
|
164
185
|
* Starts the device provider's recording of the leased device. Marked
|
|
165
186
|
* the moment `record` is called, before it settles, as the screen
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
|
package/dist/surface.js
CHANGED
|
@@ -14,19 +14,20 @@
|
|
|
14
14
|
import { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
15
15
|
import { tmpdir } from 'node:os';
|
|
16
16
|
import path from 'node:path';
|
|
17
|
-
import { EngineError, KEY_NAMES, parseKey, raceAbort, stopProviderRecording, withinCleanupBudget, ConfigurationError, TestError, } from 'e2e/engine';
|
|
17
|
+
import { EngineError, KEY_NAMES, parseKey, raceAbort, rejectUnknownKeys, stopProviderRecording, withinCleanupBudget, ConfigurationError, TestError, } from 'e2e/engine';
|
|
18
18
|
import { isNoSessionApp, isSnapshotPresentationFailure, runCommand, staleOr } from './errors.js';
|
|
19
19
|
import { pointerInteraction, DEFAULT_LONG_PRESS_MS } from './actions.js';
|
|
20
20
|
import { resolveExpression } from './locate.js';
|
|
21
21
|
import { isWithin, projectSnapshot, ROOT_ID, screenRoot, screenTitle, } from './nodes.js';
|
|
22
|
+
import { DEVICE_PERMISSIONS } from './options.js';
|
|
22
23
|
import { maskPng } from './png.js';
|
|
23
24
|
import { deviceLabel, pinnedApp } from './bindings.js';
|
|
24
|
-
import { assertAppId
|
|
25
|
+
import { assertAppId } from './links.js';
|
|
25
26
|
import { DevicePool, deviceSelection } from './pool.js';
|
|
26
27
|
import { recordLease, travelledLease } from './provider.js';
|
|
27
28
|
import { invalidState, notActionable, logicalScreenSize, readPngSize, sanitizeFilename, screenLocation, swipeWithin, unsupported, } from './support.js';
|
|
28
29
|
/** Why nothing is pinned with `appPath` alone: the install is the suite's. */
|
|
29
|
-
const UNINSTALLED_BUILD =
|
|
30
|
+
const UNINSTALLED_BUILD = "the build the target's `app.appPath` names installed first with `device.installApp()`";
|
|
30
31
|
/** Platform element types that are the soft keyboard or one of its keys, as agent-device names them. */
|
|
31
32
|
const KEYBOARD_TYPES = new Set(['keyboard', 'key']);
|
|
32
33
|
/**
|
|
@@ -110,6 +111,42 @@ function sleep(ms, signal) {
|
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
const DEFAULT_SETTLE_QUIET_MS = 150;
|
|
114
|
+
/** Every option `mobile()` takes, kept equal to `MobileOptions` by the compiler. */
|
|
115
|
+
const MOBILE_OPTION_KEYS = Object.keys({
|
|
116
|
+
platform: true,
|
|
117
|
+
device: true,
|
|
118
|
+
session: true,
|
|
119
|
+
snapshot: true,
|
|
120
|
+
settle: true,
|
|
121
|
+
transition: true,
|
|
122
|
+
videoTouches: true,
|
|
123
|
+
});
|
|
124
|
+
/** Every state a permission takes, kept equal to `PermissionState` by the compiler. */
|
|
125
|
+
const PERMISSION_STATES = Object.keys({ grant: true, deny: true, reset: true });
|
|
126
|
+
/**
|
|
127
|
+
* Refuses a permissions map before any device command: anything but a plain
|
|
128
|
+
* object, a name agent-device
|
|
129
|
+
* does not set, naming the nearest, or a state other than grant, deny, or
|
|
130
|
+
* reset. `INVALID_CONFIG` for a target's `app.permissions`, `INVALID_ARGUMENT`
|
|
131
|
+
* for a test's `device.openApp`. An `undefined` state is skipped, as the preset
|
|
132
|
+
* skips it.
|
|
133
|
+
*/
|
|
134
|
+
export function assertPermissions(label, permissions, code) {
|
|
135
|
+
const fail = (message) => {
|
|
136
|
+
throw code === 'INVALID_CONFIG' ? new ConfigurationError(code, message) : new TestError(code, message);
|
|
137
|
+
};
|
|
138
|
+
// A Map or class instance carries no own keys to check, and the preset would apply none of it.
|
|
139
|
+
const prototype = typeof permissions === 'object' && permissions !== null ? Object.getPrototypeOf(permissions) : undefined;
|
|
140
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
141
|
+
fail(`${label} must be a plain object of permission names to ${PERMISSION_STATES.join(', ')}`);
|
|
142
|
+
}
|
|
143
|
+
rejectUnknownKeys(label, permissions, DEVICE_PERMISSIONS, code);
|
|
144
|
+
for (const [name, state] of Object.entries(permissions)) {
|
|
145
|
+
if (state !== undefined && !PERMISSION_STATES.includes(state)) {
|
|
146
|
+
fail(`${label}.${name} must be one of ${PERMISSION_STATES.join(', ')}, got ${typeof state === 'string' ? `"${state}"` : String(state)}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
113
150
|
/** Resolves the `transition` option: the default budget or a custom one. */
|
|
114
151
|
function transitionMs(transition) {
|
|
115
152
|
const budget = transition ?? DEFAULT_TRANSITION_MS;
|
|
@@ -149,6 +186,8 @@ export class AgentDeviceSurface {
|
|
|
149
186
|
sessionApp;
|
|
150
187
|
/** The app the build `appPath` installed, once `init` has, itself or through a lease. */
|
|
151
188
|
installedApp;
|
|
189
|
+
/** The target's app, as `init` received it. */
|
|
190
|
+
app = {};
|
|
152
191
|
/** Where relative build paths resolve; the run's project root once init has told us. */
|
|
153
192
|
projectRoot = process.cwd();
|
|
154
193
|
/** The session and device this worker drives, for the error messages whose recovery is per device; set in init. */
|
|
@@ -184,18 +223,22 @@ export class AgentDeviceSurface {
|
|
|
184
223
|
constructor(options, createClient) {
|
|
185
224
|
this.options = options;
|
|
186
225
|
this.createClient = createClient;
|
|
187
|
-
|
|
226
|
+
rejectUnknownKeys('mobile()', options, MOBILE_OPTION_KEYS);
|
|
188
227
|
this.pool = new DevicePool(options, createClient);
|
|
189
228
|
this.settleOptions = settleOptions(options.settle);
|
|
190
229
|
this.transitionMs = transitionMs(options.transition);
|
|
191
230
|
}
|
|
192
|
-
/** Whether the
|
|
231
|
+
/** Whether the target pins an app for `app.open()`, `app.restart()`, and `app.clearState()` to launch. */
|
|
193
232
|
get managesApp() {
|
|
194
|
-
return this.
|
|
233
|
+
return this.app.bundleId !== undefined || this.app.appPath !== undefined;
|
|
195
234
|
}
|
|
196
|
-
/** The app `app.open()` launches: the `
|
|
235
|
+
/** The app `app.open()` launches: the target's `bundleId`, else the app its build `appPath` installed. */
|
|
197
236
|
get pinnedApp() {
|
|
198
|
-
return pinnedApp(this.
|
|
237
|
+
return pinnedApp(this.app, this.installedApp);
|
|
238
|
+
}
|
|
239
|
+
/** The build the target's `app.appPath` names, as declared. */
|
|
240
|
+
get appPath() {
|
|
241
|
+
return this.app.appPath;
|
|
199
242
|
}
|
|
200
243
|
/** Whether an attempt is running on this surface right now. */
|
|
201
244
|
get attemptRunning() {
|
|
@@ -252,6 +295,7 @@ export class AgentDeviceSurface {
|
|
|
252
295
|
}
|
|
253
296
|
async init(info) {
|
|
254
297
|
this.projectRoot = info.projectRoot;
|
|
298
|
+
this.app = info.app;
|
|
255
299
|
const binding = this.pool.binding(info.targetName, info.workerSlot, info.env);
|
|
256
300
|
this.device = binding;
|
|
257
301
|
const session = this.pool.session(info.targetName, info.workerSlot);
|
|
@@ -319,15 +363,16 @@ export class AgentDeviceSurface {
|
|
|
319
363
|
}
|
|
320
364
|
else if (dangling !== undefined) {
|
|
321
365
|
await this.settleInflight(context.signal).catch(() => undefined);
|
|
322
|
-
await this.
|
|
366
|
+
await this.stopScreenRecording(context.signal).catch(() => undefined);
|
|
323
367
|
}
|
|
324
368
|
}
|
|
325
369
|
// --- video ---
|
|
326
370
|
/**
|
|
327
371
|
* Asks the device to record its screen into the attempt directory. Taps stay
|
|
328
372
|
* visible in the recording (agent-device's touch indicator), which is the
|
|
329
|
-
* closest a phone comes to a cursor
|
|
330
|
-
* devices records the attempt instead,
|
|
373
|
+
* closest a phone comes to a cursor, unless `videoTouches` is `false`. A
|
|
374
|
+
* device provider that records its devices records the attempt instead,
|
|
375
|
+
* when the slot rides one of its leases.
|
|
331
376
|
*/
|
|
332
377
|
async startVideo(operation) {
|
|
333
378
|
const attempt = this.attempt;
|
|
@@ -346,7 +391,15 @@ export class AgentDeviceSurface {
|
|
|
346
391
|
// still records, and `endAttempt` must be able to stop it.
|
|
347
392
|
const recording = { kind: 'screen', relative, absolute, startedAt: new Date().toISOString() };
|
|
348
393
|
attempt.video = recording;
|
|
349
|
-
await this.command('start video recording',
|
|
394
|
+
await this.command('start video recording',
|
|
395
|
+
// The whole screen: an app scope refuses to start while no app is open, before `app.open()` and after `closeApp()`.
|
|
396
|
+
(client) => client.recording.record({
|
|
397
|
+
action: 'start',
|
|
398
|
+
path: absolute,
|
|
399
|
+
quality: 'medium',
|
|
400
|
+
recordingScope: 'device',
|
|
401
|
+
...(this.options.videoTouches === false ? { hideTouches: true } : {}),
|
|
402
|
+
}), operation.signal);
|
|
350
403
|
// The device confirmed: it is recording from about now.
|
|
351
404
|
recording.startedAt = new Date().toISOString();
|
|
352
405
|
}
|
|
@@ -364,7 +417,7 @@ export class AgentDeviceSurface {
|
|
|
364
417
|
attempt.video = undefined;
|
|
365
418
|
return [segment];
|
|
366
419
|
}
|
|
367
|
-
const result = await this.
|
|
420
|
+
const result = await this.stopScreenRecording(operation.signal);
|
|
368
421
|
// Cleared only now: a stop that failed leaves the recording for `endAttempt`.
|
|
369
422
|
attempt.video = undefined;
|
|
370
423
|
// The device may finalize the file under a path of its own choosing; the
|
|
@@ -376,6 +429,20 @@ export class AgentDeviceSurface {
|
|
|
376
429
|
return [];
|
|
377
430
|
return [{ path: video.relative, startedAt: video.startedAt }];
|
|
378
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* Stops the device's screen recording. A device-scope recording started
|
|
434
|
+
* with no session made one of its own, and stopping it ends that session,
|
|
435
|
+
* whatever the test opened in it since, so the session is then as
|
|
436
|
+
* `closeApp` leaves it.
|
|
437
|
+
*/
|
|
438
|
+
async stopScreenRecording(signal) {
|
|
439
|
+
const result = await this.command('stop video recording', (client) => client.recording.record({ action: 'stop' }), signal);
|
|
440
|
+
if (result.recordOnlySession === true) {
|
|
441
|
+
this.sessionApp = undefined;
|
|
442
|
+
this.screenReplaced();
|
|
443
|
+
}
|
|
444
|
+
return result;
|
|
445
|
+
}
|
|
379
446
|
/**
|
|
380
447
|
* Starts the device provider's recording of the leased device. Marked
|
|
381
448
|
* the moment `record` is called, before it settles, as the screen
|
|
@@ -423,13 +490,15 @@ export class AgentDeviceSurface {
|
|
|
423
490
|
*/
|
|
424
491
|
async openApp(app, options, signal) {
|
|
425
492
|
assertAppId(app);
|
|
493
|
+
if (options.permissions !== undefined)
|
|
494
|
+
assertPermissions('device.openApp({ permissions })', options.permissions, 'INVALID_ARGUMENT');
|
|
426
495
|
const relaunch = options.relaunch === true;
|
|
427
496
|
// The engine's own launch options belong to a fresh launch of the pinned
|
|
428
497
|
// app. A foreground-only open of a running app takes no arguments, and a
|
|
429
498
|
// permission change there would terminate the app it means to keep.
|
|
430
499
|
const configured = relaunch && app === this.pinnedApp;
|
|
431
|
-
const launchArguments = options.launchArguments ?? (configured ? this.
|
|
432
|
-
const permissions = options.permissions ?? (configured ? this.
|
|
500
|
+
const launchArguments = options.launchArguments ?? (configured ? this.app.launchArguments : undefined);
|
|
501
|
+
const permissions = options.permissions ?? (configured ? this.app.permissions : undefined);
|
|
433
502
|
if (permissions !== undefined)
|
|
434
503
|
await this.presetPermissions(app, permissions, signal);
|
|
435
504
|
await this.open(app, relaunch, launchArguments, signal);
|
|
@@ -505,7 +574,7 @@ export class AgentDeviceSurface {
|
|
|
505
574
|
async openLink(url, app, signal) {
|
|
506
575
|
const target = app ?? this.pinnedApp;
|
|
507
576
|
if (target === undefined && this.options.platform === 'ios') {
|
|
508
|
-
throw new TestError('INVALID_ARGUMENT',
|
|
577
|
+
throw new TestError('INVALID_ARGUMENT', "openLink needs an app on iOS: pass `app`, or pin one with the target's app.bundleId or app.appPath; the session observes the app a link is opened into");
|
|
509
578
|
}
|
|
510
579
|
const result = await this.command('device.openLink', (client) => client.apps.open({
|
|
511
580
|
...this.selection(),
|
|
@@ -555,15 +624,15 @@ export class AgentDeviceSurface {
|
|
|
555
624
|
* with no data; a plain install replaces the binary and keeps its data.
|
|
556
625
|
*/
|
|
557
626
|
async installApp(appPath, options, signal) {
|
|
558
|
-
const build = appPath ?? this.
|
|
627
|
+
const build = appPath ?? this.app.appPath;
|
|
559
628
|
if (build === undefined)
|
|
560
|
-
throw invalidState(
|
|
629
|
+
throw invalidState("installApp needs a build: pass a path, or name one with the target's app.appPath");
|
|
561
630
|
const resolved = path.resolve(this.projectRoot, build);
|
|
562
631
|
const selection = this.selection();
|
|
563
|
-
const engineBuild = appPath === undefined || (this.
|
|
564
|
-
const app = options.app ?? (engineBuild ? this.
|
|
632
|
+
const engineBuild = appPath === undefined || (this.app.appPath !== undefined && resolved === path.resolve(this.projectRoot, this.app.appPath));
|
|
633
|
+
const app = options.app ?? (engineBuild ? this.app.bundleId : undefined) ?? (options.reinstall === true ? this.pinnedApp : undefined);
|
|
565
634
|
if (options.reinstall === true && app === undefined) {
|
|
566
|
-
throw invalidState(
|
|
635
|
+
throw invalidState("reinstall needs an app: pass `app`, or pin one with the target's app.bundleId or app.appPath");
|
|
567
636
|
}
|
|
568
637
|
const result = (await this.command(`install ${resolved}`, (client) => options.reinstall === true && app !== undefined
|
|
569
638
|
? client.apps.reinstall({ ...selection, app, appPath: resolved })
|
|
@@ -1064,14 +1133,14 @@ export class AgentDeviceSurface {
|
|
|
1064
1133
|
async restart(operation) {
|
|
1065
1134
|
const app = this.pinnedApp;
|
|
1066
1135
|
if (app === undefined)
|
|
1067
|
-
throw unsupported(`app.restart needs the
|
|
1136
|
+
throw unsupported(`app.restart needs the target's \`app.bundleId\`, or ${UNINSTALLED_BUILD}`);
|
|
1068
1137
|
await this.openApp(app, { relaunch: true }, operation.signal);
|
|
1069
1138
|
}
|
|
1070
1139
|
/** Clears the pinned app's persisted state and relaunches it: the device equivalent of a fresh context. */
|
|
1071
1140
|
async reset(operation) {
|
|
1072
1141
|
const app = this.pinnedApp;
|
|
1073
1142
|
if (app === undefined)
|
|
1074
|
-
throw unsupported(`app.clearState needs the
|
|
1143
|
+
throw unsupported(`app.clearState needs the target's \`app.bundleId\`, or ${UNINSTALLED_BUILD}`);
|
|
1075
1144
|
await this.command('clear app state', (client) => client.settings.update({ setting: 'clear-app-state', state: 'clear', app }), operation.signal);
|
|
1076
1145
|
await this.openApp(app, { relaunch: true }, operation.signal);
|
|
1077
1146
|
}
|