@e2e-dev/mobile 0.8.0-canary-20260928184528 → 0.8.0
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 +33 -22
- package/dist/.build.json +1 -1
- package/dist/bindings.d.ts +10 -6
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +8 -6
- 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.d.ts +17 -6
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +46 -12
- package/dist/pool.js.map +1 -1
- package/dist/provider.d.ts +51 -10
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +57 -6
- package/dist/provider.js.map +1 -1
- package/dist/surface.d.ts +42 -9
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +144 -26
- package/dist/surface.js.map +1 -1
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +3 -3
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -23,25 +23,24 @@ to the runner.
|
|
|
23
23
|
|
|
24
24
|
```ts title="e2e.config.ts"
|
|
25
25
|
import type { E2EConfig } from 'e2e';
|
|
26
|
-
import { createAgent } from 'e2e/agent';
|
|
27
26
|
import { mobile } from '@e2e-dev/mobile';
|
|
28
27
|
import { mobileTools } from '@e2e-dev/mobile/tools';
|
|
29
28
|
import { gateway } from 'ai';
|
|
30
29
|
|
|
31
|
-
const iphone = mobile({ platform: 'ios'
|
|
32
|
-
const pixel = mobile({ platform: 'android'
|
|
30
|
+
const iphone = mobile({ platform: 'ios' });
|
|
31
|
+
const pixel = mobile({ platform: 'android' });
|
|
33
32
|
|
|
34
33
|
export default {
|
|
35
34
|
targets: [
|
|
36
|
-
{ name: 'iphone', engine: iphone },
|
|
37
|
-
{ name: 'pixel', engine: pixel },
|
|
35
|
+
{ name: 'iphone', engine: iphone, app: { bundleId: 'Settings' } },
|
|
36
|
+
{ name: 'pixel', engine: pixel, app: { bundleId: 'com.android.settings' } },
|
|
38
37
|
],
|
|
39
38
|
workers: 1,
|
|
40
39
|
agents: {
|
|
41
|
-
default:
|
|
40
|
+
default: {
|
|
42
41
|
model: gateway('openai/gpt-5.6-luna'),
|
|
43
42
|
tools: mobileTools(iphone, pixel),
|
|
44
|
-
}
|
|
43
|
+
},
|
|
45
44
|
},
|
|
46
45
|
} satisfies E2EConfig;
|
|
47
46
|
```
|
|
@@ -51,24 +50,33 @@ targets unchanged. Only a check that names a platform label (`General` on iOS,
|
|
|
51
50
|
`Network & internet` on Android) needs `platforms: ['ios']` or
|
|
52
51
|
`platforms: ['android']` on the test.
|
|
53
52
|
|
|
54
|
-
|
|
53
|
+
The app under test is the target's `app`; the engine only drives it. A
|
|
54
|
+
device target needs `bundleId` or `appPath`:
|
|
55
|
+
|
|
56
|
+
| Key | Meaning |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| `bundleId` | Bundle id, package, or display name `app.open()`, `app.restart()`, and `app.clearState()` launch fresh; an attempt launches nothing on its own. |
|
|
59
|
+
| `appPath` | An iOS `.app` bundle or Android `.apk`, resolved against the project root. The engine does not install it: the suite calls `device.installApp()` (with no path, this build) once per device, unless a device provider already installed it. Without `bundleId`, the installed bundle id or package is the app `app.open()` launches. |
|
|
60
|
+
| `launchArguments` | Arguments every fresh launch of the pinned app carries (`app.open()`, `app.restart()`, `app.clearState()`): the process arguments on iOS, `am start` arguments on Android. The warm-up passes none. |
|
|
61
|
+
| `permissions` | Permissions the pinned app holds on every fresh launch, `{ camera: 'grant', location: 'deny', notifications: 'reset' }`, set before the app starts and put back after `app.clearState()` reset them. |
|
|
62
|
+
|
|
63
|
+
`app.url` is not supported on a device target yet, and `mobile({ app })` and
|
|
64
|
+
the other old app options are `INVALID_CONFIG` naming their key under `app`.
|
|
65
|
+
|
|
66
|
+
`mobile()` options:
|
|
55
67
|
|
|
56
68
|
| Option | Meaning |
|
|
57
69
|
| --- | --- |
|
|
58
70
|
| `platform` | `'ios'` or `'android'`. |
|
|
59
|
-
| `app` | Bundle id, package, or display name `app.open()` launches fresh; an attempt launches nothing on its own. Also unlocks `app.restart()` and `app.clearState()`. |
|
|
60
|
-
| `appPath` | An iOS `.app` bundle or Android `.apk` installed once per worker before the first attempt, resolved against the project root. Without `app`, the installed bundle id or package is the app `app.open()` launches. |
|
|
61
71
|
| `device` | Simulator or emulator name or UDID. A list is a pool: one worker per entry, worker slot `n` driving the `n`th. Omitted, every booted device of the platform is the pool, as many as the run has slots. |
|
|
62
72
|
| `session` | agent-device session name, before the worker slot: slot `n` drives its device under `<session>-<n>`, `e2e-<target name>-<n>` by default. One run per session at a time. |
|
|
63
73
|
| `snapshot` | `'full'` (default, includes static text) or `'interactive'` (actionable nodes only). |
|
|
64
74
|
| `settle` | For agent actions: milliseconds the UI must hold still after an action before the agent observes again, default `150`; `false` skips the wait. A test's own steps never settle; `expect` verifies their outcome. |
|
|
65
75
|
| `transition` | For a test's steps: milliseconds a control that appeared or moved with the last action gets to finish arriving before it is acted on, default `500`. Controls already in place before the action are acted on at once. |
|
|
66
|
-
| `launchArguments` | Arguments every fresh launch of the pinned app carries (`app.open()`, `app.restart()`, `app.clearState()`): the process arguments on iOS, `am start` arguments on Android. The warm-up passes none. |
|
|
67
|
-
| `permissions` | Permissions the pinned app holds on every fresh launch, `{ camera: 'grant', location: 'deny', notifications: 'reset' }`, set before the app starts and put back after `app.clearState()` reset them. |
|
|
68
76
|
|
|
69
|
-
Every optional value also accepts `undefined`, so a config passes
|
|
70
|
-
`device: process.env.E2E_DEVICE`
|
|
71
|
-
|
|
77
|
+
Every optional `mobile()` value also accepts `undefined`, so a config passes
|
|
78
|
+
`device: process.env.E2E_DEVICE` straight through, with no conditional
|
|
79
|
+
spread.
|
|
72
80
|
|
|
73
81
|
## What the engine declares
|
|
74
82
|
|
|
@@ -82,8 +90,9 @@ straight through, with no conditional spread.
|
|
|
82
90
|
- **Actions**: tap, double tap, long press, fill, clear, check/uncheck (when
|
|
83
91
|
the tree exposes the checked state; Android switches do not), focus on
|
|
84
92
|
editable fields, `Enter`, single-character keys, swipe within a node, drag.
|
|
85
|
-
`selectOption`, `setInputFiles`, `scrollIntoView`, `secondaryTap`,
|
|
86
|
-
a control, and other keys fail with
|
|
93
|
+
`selectOption`, `setInputFiles`, `scrollIntoView`, `secondaryTap`,
|
|
94
|
+
`modifiers` on `tap` or `doubleTap`, focus on a control, and other keys fail with
|
|
95
|
+
`UNSUPPORTED_CAPABILITY`.
|
|
87
96
|
- **Location**: every `screen` query, plus agent-device selectors through
|
|
88
97
|
`device.locator('role=NavigationBar id=General')`.
|
|
89
98
|
- **Viewport swipe**, `app.back()`, `app.restart()`, `app.clearState()`, and
|
|
@@ -91,8 +100,9 @@ straight through, with no conditional spread.
|
|
|
91
100
|
every secure field are painted black before the file is kept, and a
|
|
92
101
|
screenshot that cannot be redacted is not written. No `state` capability: a
|
|
93
102
|
simulator has no portable session snapshot.
|
|
103
|
+
- **App kind**: a target with `app.bundleId` or `app.appPath` is a `native-app` target, so a portable suite can `requires: ['native-app']`.
|
|
94
104
|
|
|
95
|
-
##
|
|
105
|
+
## Replay cache
|
|
96
106
|
|
|
97
107
|
The runner caches `agent.act` steps by their location anchor, and a device has
|
|
98
108
|
no address bar. This engine reports one anyway: `<bundle id> / <screen
|
|
@@ -101,7 +111,7 @@ toolbar on Android. The app identity is part of the location, so two apps with
|
|
|
101
111
|
a "General" screen never share an anchor. A step recorded on
|
|
102
112
|
`com.apple.Preferences / General` replays only when that app is on that
|
|
103
113
|
screen again, and a flow that stays within tap, type, and scroll replays with
|
|
104
|
-
zero model calls.
|
|
114
|
+
zero model calls. Declare `app.bundleId` and call `app.open()` first, so steps start on
|
|
105
115
|
the same screen, and
|
|
106
116
|
prefer the grammar over the `open_app` tool inside a step: a tool call is a
|
|
107
117
|
replay gap.
|
|
@@ -119,7 +129,7 @@ test('shows the version offline in dark mode', async ({ agent, device, screen })
|
|
|
119
129
|
await device.setAppearance('dark');
|
|
120
130
|
await device.setNetwork('offline');
|
|
121
131
|
await agent.act('go to General, then About');
|
|
122
|
-
await expect(screen.getByRole('button',
|
|
132
|
+
await expect(screen.getByRole('button', /^iOS Version/)).toBeVisible();
|
|
123
133
|
await expect(device.locator('role=NavigationBar id=About')).toBeVisible();
|
|
124
134
|
});
|
|
125
135
|
```
|
|
@@ -131,7 +141,8 @@ Methods: `setNetwork`, `setAirplaneMode`, `setPermission`, `setLocation`,
|
|
|
131
141
|
`setClipboard`, and the `locator` accessor.
|
|
132
142
|
|
|
133
143
|
`installApp(appPath, { app, reinstall })` puts a build on the device from a
|
|
134
|
-
test, for upgrade and fresh-install paths the `appPath`
|
|
144
|
+
test, for upgrade and fresh-install paths the target's `app.appPath` cannot
|
|
145
|
+
express.
|
|
135
146
|
A plain install replaces the binary and keeps its data; `reinstall: true`
|
|
136
147
|
removes the app named by `app` (default: the pinned app) first. It resolves to
|
|
137
148
|
the bundle id or package to `openApp` the build by. `openApp` takes an app id,
|
|
@@ -145,7 +156,7 @@ system alert). It takes at least one engine. Pass every device engine the
|
|
|
145
156
|
config declares: tool names are fixed, so two packs cannot be merged, and the
|
|
146
157
|
pack dispatches each call to the engine whose attempt is running. Tools are
|
|
147
158
|
scoped to the platforms of those engines, so a suite that mixes web and device
|
|
148
|
-
targets can hand the pack to one `
|
|
159
|
+
targets can hand the pack to one agents entry's `tools`.
|
|
149
160
|
|
|
150
161
|
## Secrets
|
|
151
162
|
|
package/dist/.build.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.8.0
|
|
1
|
+
{"version":"0.8.0"}
|
package/dist/bindings.d.ts
CHANGED
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* reads one shape through one environment variable, whatever produced it.
|
|
7
7
|
*/
|
|
8
8
|
import type { createAgentDeviceClient } from 'agent-device';
|
|
9
|
-
import { type EngineFinishInfo, type EnginePrepareInfo } from 'e2e/engine';
|
|
10
|
-
import type { MobileOptions } from './options.ts';
|
|
9
|
+
import { type EngineAppInfo, type EngineFinishInfo, type EnginePrepareInfo } from 'e2e/engine';
|
|
11
10
|
type AgentDeviceClientConfig = NonNullable<Parameters<typeof createAgentDeviceClient>[0]>;
|
|
12
11
|
/** An agent-device daemon other than the local one. */
|
|
13
12
|
export interface DeviceDaemon {
|
|
@@ -40,6 +39,11 @@ export interface SlotBinding {
|
|
|
40
39
|
readonly client?: DeviceClientConfig | undefined;
|
|
41
40
|
/** App a provider already installed from `appPath`, so the worker installs nothing and opens this. */
|
|
42
41
|
readonly installedApp?: string | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The id of the provider lease the slot rides, set only for a provider's
|
|
44
|
+
* lease: with it the worker hands the lease to the provider's `record`.
|
|
45
|
+
*/
|
|
46
|
+
readonly leaseId?: string | undefined;
|
|
43
47
|
/**
|
|
44
48
|
* App the warm-up in `prepare` opened in the slot's session, which the
|
|
45
49
|
* worker resumes: a permission command there already acts on it. Absent
|
|
@@ -66,11 +70,11 @@ export interface DeviceSource {
|
|
|
66
70
|
export declare function deviceLabel(binding: Pick<SlotBinding, 'device' | 'deviceId'> | undefined): string | undefined;
|
|
67
71
|
/**
|
|
68
72
|
* The app a slot's `app.open()` launches, and its warm-up opens once: the
|
|
69
|
-
* `
|
|
70
|
-
* `device.installApp()` (or a device provider) has. `undefined` with
|
|
71
|
-
* nobody has installed and no `
|
|
73
|
+
* target's `bundleId`, else the app the build `appPath` installed, once the
|
|
74
|
+
* suite's `device.installApp()` (or a device provider) has. `undefined` with
|
|
75
|
+
* a build nobody has installed and no `bundleId`.
|
|
72
76
|
*/
|
|
73
|
-
export declare function pinnedApp(
|
|
77
|
+
export declare function pinnedApp(app: Pick<EngineAppInfo, 'bundleId'>, installedApp: string | undefined): string | undefined;
|
|
74
78
|
/**
|
|
75
79
|
* The environment variable a target's bindings travel to the workers in: the
|
|
76
80
|
* name made environment-safe for reading, plus a digest of the exact name so
|
package/dist/bindings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAoB,KAAK,
|
|
1
|
+
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAoB,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEjH,KAAK,uBAAuB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1F,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,EAAE,SAAS,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;AAEpI,wGAAwG;AACxG,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAEtE,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,kGAAkG;IAClG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,qGAAqG;IACrG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,sGAAsG;IACtG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,6GAA6G;IAC7G,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;IACvD,yFAAyF;IACzF,IAAI,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7G;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEpH;AASD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAuBvE;AAED,wGAAwG;AACxG,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,WAAW,EAAE,GAAG,SAAS,CAS1F;AAMD,mHAAmH;AACnH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAYlE"}
|
package/dist/bindings.js
CHANGED
|
@@ -13,12 +13,12 @@ export function deviceLabel(binding) {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* The app a slot's `app.open()` launches, and its warm-up opens once: the
|
|
16
|
-
* `
|
|
17
|
-
* `device.installApp()` (or a device provider) has. `undefined` with
|
|
18
|
-
* nobody has installed and no `
|
|
16
|
+
* target's `bundleId`, else the app the build `appPath` installed, once the
|
|
17
|
+
* suite's `device.installApp()` (or a device provider) has. `undefined` with
|
|
18
|
+
* a build nobody has installed and no `bundleId`.
|
|
19
19
|
*/
|
|
20
|
-
export function pinnedApp(
|
|
21
|
-
return
|
|
20
|
+
export function pinnedApp(app, installedApp) {
|
|
21
|
+
return app.bundleId ?? installedApp;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* The most the serialized bindings of one target may occupy in a worker's
|
|
@@ -44,6 +44,7 @@ export function encodeBindings(bindings) {
|
|
|
44
44
|
daemon: binding.daemon === undefined ? undefined : obj({ baseUrl: binding.daemon.baseUrl, authToken: binding.daemon.authToken }),
|
|
45
45
|
client: binding.client,
|
|
46
46
|
installedApp: binding.installedApp,
|
|
47
|
+
leaseId: binding.leaseId,
|
|
47
48
|
sessionApp: binding.sessionApp,
|
|
48
49
|
})));
|
|
49
50
|
const bytes = Buffer.byteLength(encoded);
|
|
@@ -73,10 +74,11 @@ function isOptionalString(value) {
|
|
|
73
74
|
export function isSlotBinding(value) {
|
|
74
75
|
if (typeof value !== 'object' || value === null)
|
|
75
76
|
return false;
|
|
76
|
-
const { device, deviceId, daemon, client, installedApp, sessionApp } = value;
|
|
77
|
+
const { device, deviceId, daemon, client, installedApp, leaseId, sessionApp } = value;
|
|
77
78
|
return (isOptionalString(device) &&
|
|
78
79
|
isOptionalString(deviceId) &&
|
|
79
80
|
isOptionalString(installedApp) &&
|
|
81
|
+
isOptionalString(leaseId) &&
|
|
80
82
|
isOptionalString(sessionApp) &&
|
|
81
83
|
(daemon === undefined || isDaemon(daemon)) &&
|
|
82
84
|
(client === undefined || isClientConfig(client)));
|
package/dist/bindings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindings.js","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"bindings.js","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"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"}
|
package/dist/device.d.ts
CHANGED
|
@@ -50,20 +50,20 @@ export interface Device {
|
|
|
50
50
|
enrollBiometrics(sensor: 'faceid' | 'touchid', enrolled: boolean): Promise<void>;
|
|
51
51
|
/**
|
|
52
52
|
* Installs a build (an iOS `.app` bundle or an Android `.apk`, resolved
|
|
53
|
-
* against the project root) on the device; without a path, the
|
|
54
|
-
* `appPath`. The engine installs nothing on its own, so a suite that runs
|
|
53
|
+
* against the project root) on the device; without a path, the target's
|
|
54
|
+
* `app.appPath`. The engine installs nothing on its own, so a suite that runs
|
|
55
55
|
* against a build calls this once per device, in a fixture or a test.
|
|
56
56
|
* `reinstall: true` removes the app first so it starts with no data; a
|
|
57
57
|
* plain install replaces the binary and keeps its data. Resolves to the
|
|
58
58
|
* identity to `openApp` it by, which becomes the app `app.open()` launches
|
|
59
|
-
* when the
|
|
59
|
+
* when the target's build is installed and no `app.bundleId` is pinned.
|
|
60
60
|
*/
|
|
61
61
|
installApp(appPath?: string, options?: InstallAppOptions): Promise<InstalledApp>;
|
|
62
62
|
/**
|
|
63
63
|
* Brings an app to the foreground; `relaunch` restarts it fresh.
|
|
64
64
|
* `launchArguments` and `permissions` apply to this launch alone; the
|
|
65
|
-
*
|
|
66
|
-
* to no foreground-only open.
|
|
65
|
+
* target's `app.launchArguments` and `app.permissions` apply to a
|
|
66
|
+
* `relaunch` of the pinned app, and to no foreground-only open.
|
|
67
67
|
*/
|
|
68
68
|
openApp(app: string, options?: OpenAppOptions): Promise<void>;
|
|
69
69
|
/**
|
package/dist/device.js
CHANGED
|
@@ -99,7 +99,7 @@ export function createDeviceFixture(surface, context) {
|
|
|
99
99
|
setOrientation: { ...action, label: (orientation) => orientation },
|
|
100
100
|
setBiometrics: action,
|
|
101
101
|
enrollBiometrics: action,
|
|
102
|
-
installApp: { ...action, label: (appPath) => appPath ?? surface.
|
|
102
|
+
installApp: { ...action, label: (appPath) => appPath ?? surface.appPath ?? 'appPath' },
|
|
103
103
|
openApp: { ...action, label: (app) => linkLabel(app) },
|
|
104
104
|
openLink: { ...action, label: (url) => linkLabel(url) },
|
|
105
105
|
closeApp: action,
|
package/dist/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* public `defineEngine`, validated by the same rules and graded by the same
|
|
4
4
|
* capabilities as any other engine. Core imports nothing from here; this
|
|
5
5
|
* package imports the contract from `e2e/engine` and contributes the
|
|
6
|
-
* `device` fixture the way the browser engine contributes `
|
|
6
|
+
* `device` fixture the way the browser engine contributes `browser`.
|
|
7
7
|
*/
|
|
8
8
|
import { type EngineHandle } from 'e2e/engine';
|
|
9
9
|
import type { MobileOptions } from './options.ts';
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAA6F,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1I,OAAO,KAAK,EAAiB,aAAa,EAAkB,MAAM,cAAc,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAqB,MAAM,cAAc,CAAC;AAIrE,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,CA4CrE;AAED,wHAAwH;AACxH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAW3D;AAqCD,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,CAE9E"}
|
package/dist/engine.js
CHANGED
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
* public `defineEngine`, validated by the same rules and graded by the same
|
|
4
4
|
* capabilities as any other engine. Core imports nothing from here; this
|
|
5
5
|
* package imports the contract from `e2e/engine` and contributes the
|
|
6
|
-
* `device` fixture the way the browser engine contributes `
|
|
6
|
+
* `device` fixture the way the browser engine contributes `browser`.
|
|
7
7
|
*/
|
|
8
8
|
import { createRequire } from 'node:module';
|
|
9
9
|
import { createAgentDeviceClient } from 'agent-device';
|
|
10
|
-
import { defineEngine, obj } from 'e2e/engine';
|
|
10
|
+
import { ConfigurationError, defineEngine, obj } from 'e2e/engine';
|
|
11
11
|
import { createDeviceFixture } from './device.js';
|
|
12
|
+
import { isLink } from './links.js';
|
|
12
13
|
import { DEVICE_ACTIONS, DEVICE_POINTER_ACTIONS } from './actions.js';
|
|
13
|
-
import { AgentDeviceSurface } from './surface.js';
|
|
14
|
+
import { AgentDeviceSurface, assertPermissions } from './surface.js';
|
|
14
15
|
const surfaces = new WeakMap();
|
|
15
16
|
/** Assembles the manifest for one surface. Exported for tests that script the client. */
|
|
16
17
|
export function buildEngine(surface) {
|
|
@@ -37,18 +38,14 @@ export function buildEngine(surface) {
|
|
|
37
38
|
press: (key, operation) => surface.pressFocusedKey(key, operation),
|
|
38
39
|
dismiss: (operation) => surface.dismissKeyboard(operation.signal),
|
|
39
40
|
},
|
|
40
|
-
|
|
41
|
+
validateApp: (app, info) => validateApp(app, info, surface.options.platform),
|
|
41
42
|
// No `open`: a device app has no URL to open, so the runner serves
|
|
42
43
|
// `app.open()` with `restart`, the fresh launch of the pinned app, which
|
|
43
|
-
// is also the device's "recreate the context"
|
|
44
|
+
// is also the device's "recreate the context".
|
|
44
45
|
session: {
|
|
45
46
|
back: (operation) => surface.back(operation),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
restart: (operation) => surface.restart(operation),
|
|
49
|
-
reset: (operation) => surface.reset(operation),
|
|
50
|
-
}
|
|
51
|
-
: {}),
|
|
47
|
+
restart: (operation) => surface.restart(operation),
|
|
48
|
+
reset: (operation) => surface.reset(operation),
|
|
52
49
|
},
|
|
53
50
|
artifacts: {
|
|
54
51
|
screenshot: (label, operation) => surface.screenshot(label, operation),
|
|
@@ -72,15 +69,30 @@ export function mobile(options) {
|
|
|
72
69
|
}));
|
|
73
70
|
return buildEngine(new AgentDeviceSurface(options, factory));
|
|
74
71
|
}
|
|
72
|
+
/** What reaching this machine from the device will take once a device target can open a URL. */
|
|
73
|
+
const LOOPBACK_NOTES = {
|
|
74
|
+
ios: "a simulator shares this machine's loopback, and a hosted device cannot reach it at all",
|
|
75
|
+
android: "127.0.0.1 on an Android emulator is the emulator itself (this machine is 10.0.2.2), and a hosted device cannot reach this machine's loopback at all",
|
|
76
|
+
};
|
|
75
77
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
+
* A device target launches an installed app or a build: one of `bundleId`
|
|
79
|
+
* and `appPath` is required. A URL (a website in the device's browser) is
|
|
80
|
+
* not supported yet, and a link in `bundleId` is a mistake: a test opens one
|
|
81
|
+
* with `device.openLink`.
|
|
78
82
|
*/
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
83
|
+
function validateApp(app, { targetName }, platform) {
|
|
84
|
+
const where = `target "${targetName}"`;
|
|
85
|
+
if (app.url !== undefined) {
|
|
86
|
+
throw new ConfigurationError('INVALID_CONFIG', `${where} declares app.url, but a mobile() target cannot open a website in the device's browser yet; test the installed app with app.bundleId or app.appPath. When it lands, note that ${LOOPBACK_NOTES[platform] ?? LOOPBACK_NOTES.android}`);
|
|
87
|
+
}
|
|
88
|
+
if (app.bundleId === undefined && app.appPath === undefined) {
|
|
89
|
+
throw new ConfigurationError('INVALID_CONFIG', `${where} needs app.bundleId or app.appPath: a mobile() target launches an installed app, targets: [{ engine: mobile({ platform }), app: { bundleId: 'com.example.app' } }]`);
|
|
90
|
+
}
|
|
91
|
+
if (app.bundleId !== undefined && isLink(app.bundleId)) {
|
|
92
|
+
throw new ConfigurationError('INVALID_CONFIG', `${where} app.bundleId names an app by bundle id, package, or display name, not a link; a test opens a deep link or web link with device.openLink`);
|
|
93
|
+
}
|
|
94
|
+
if (app.permissions !== undefined)
|
|
95
|
+
assertPermissions(`${where} app.permissions`, app.permissions, 'INVALID_CONFIG');
|
|
84
96
|
}
|
|
85
97
|
/** The surface behind a handle this package created; undefined for any other engine. */
|
|
86
98
|
export function surfaceOf(engine) {
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `@e2e-dev/mobile` public surface: the `mobile()` engine factory,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* the `@e2e-dev/mobile/tools`
|
|
2
|
+
* `@e2e-dev/mobile` public surface: the `mobile()` engine factory, the
|
|
3
|
+
* `device` fixture types, and `test`, `describe`, and the hooks typed with
|
|
4
|
+
* that fixture. `expect`, `credentials`, and `secrets` still come from
|
|
5
|
+
* `e2e`; the agent-side tool pack lives on the `@e2e-dev/mobile/tools`
|
|
6
|
+
* subpath so this entry never loads the AI SDK.
|
|
6
7
|
*/
|
|
7
8
|
import type { Device } from './device.ts';
|
|
8
9
|
export { mobile } from './engine.ts';
|
|
@@ -18,4 +19,13 @@ export type { BiometricSensor, Device, DeviceOrientation, ForegroundApp } from '
|
|
|
18
19
|
export declare const test: import("e2e").TestAPI<import("e2e").TestFixtures & {
|
|
19
20
|
device: Device;
|
|
20
21
|
}>;
|
|
22
|
+
/** `describe` and the hooks, the same functions as `test.describe` and `test.beforeEach`, typed with the `device` fixture. */
|
|
23
|
+
export declare const describe: {
|
|
24
|
+
<Result>(title: string, body: import("e2e").SynchronousBody<Result>): void;
|
|
25
|
+
<Result>(title: string, options: import("e2e").DescribeOptions, body: import("e2e").SynchronousBody<Result>): void;
|
|
26
|
+
}, beforeEach: (fn: import("e2e").TestHookFn<import("e2e").TestFixtures & {
|
|
27
|
+
device: Device;
|
|
28
|
+
}>) => void, afterEach: (fn: import("e2e").TestHookFn<import("e2e").TestFixtures & {
|
|
29
|
+
device: Device;
|
|
30
|
+
}>) => void, beforeAll: (fn: import("e2e").SuiteHookFn) => void, afterAll: (fn: import("e2e").SuiteHookFn) => void;
|
|
21
31
|
//# 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":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxH,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACtG,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpF,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7F;;;GAGG;AACH,eAAO,MAAM,IAAI;YAAyB,MAAM;EAAK,CAAC;AAEtD,8HAA8H;AAC9H,eAAO,MAAQ,QAAQ;;;GAAE,UAAU;YAHO,MAAM;aAGX,SAAS;YAHJ,MAAM;aAGA,SAAS,2CAAE,QAAQ,yCAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `@e2e-dev/mobile` public surface: the `mobile()` engine factory,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* the `@e2e-dev/mobile/tools`
|
|
2
|
+
* `@e2e-dev/mobile` public surface: the `mobile()` engine factory, the
|
|
3
|
+
* `device` fixture types, and `test`, `describe`, and the hooks typed with
|
|
4
|
+
* that fixture. `expect`, `credentials`, and `secrets` still come from
|
|
5
|
+
* `e2e`; the agent-side tool pack lives on the `@e2e-dev/mobile/tools`
|
|
6
|
+
* subpath so this entry never loads the AI SDK.
|
|
6
7
|
*/
|
|
7
8
|
import { test as base } from 'e2e';
|
|
8
9
|
export { mobile } from './engine.js';
|
|
@@ -11,4 +12,6 @@ export { mobile } from './engine.js';
|
|
|
11
12
|
* runtime `test` as `e2e`'s; only the fixture types differ.
|
|
12
13
|
*/
|
|
13
14
|
export const test = base.extend();
|
|
15
|
+
/** `describe` and the hooks, the same functions as `test.describe` and `test.beforeEach`, typed with the `device` fixture. */
|
|
16
|
+
export const { describe, beforeEach, afterEach, beforeAll, afterAll } = test;
|
|
14
17
|
//# 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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,KAAK,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAsB,CAAC;AAEtD,8HAA8H;AAC9H,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC"}
|
package/dist/links.d.ts
CHANGED
|
@@ -25,13 +25,6 @@ export declare function linkTarget(input: string): URL;
|
|
|
25
25
|
* never echoes the link, whose query may carry a magic-link token.
|
|
26
26
|
*/
|
|
27
27
|
export declare function assertAppId(app: string): void;
|
|
28
|
-
/**
|
|
29
|
-
* Refuses a link in the engine's `app` option, which the pool opens on every
|
|
30
|
-
* device in `prepare`, before any attempt's `openApp` would. Config is the
|
|
31
|
-
* project's own code, so a link there is a mistake, not a policy breach:
|
|
32
|
-
* `INVALID_CONFIG` whatever the scheme, pointing at `device.openLink`.
|
|
33
|
-
*/
|
|
34
|
-
export declare function assertConfiguredApp(app: string | undefined): void;
|
|
35
28
|
/**
|
|
36
29
|
* The link as the report shows it, cut before its query and fragment. A
|
|
37
30
|
* magic link carries its one-time token there, and a step label is kept for
|
package/dist/links.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7C;AAQD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAY7C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C;AAED
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7C;AAQD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAY7C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
package/dist/links.js
CHANGED
|
@@ -57,17 +57,6 @@ export function assertAppId(app) {
|
|
|
57
57
|
denyForbiddenScheme(`${(link[1] ?? '').toLowerCase()}:`);
|
|
58
58
|
throw new TestError('INVALID_ARGUMENT', 'openApp opens an app by bundle id, package, or display name; open a deep link or web link with device.openLink');
|
|
59
59
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Refuses a link in the engine's `app` option, which the pool opens on every
|
|
62
|
-
* device in `prepare`, before any attempt's `openApp` would. Config is the
|
|
63
|
-
* project's own code, so a link there is a mistake, not a policy breach:
|
|
64
|
-
* `INVALID_CONFIG` whatever the scheme, pointing at `device.openLink`.
|
|
65
|
-
*/
|
|
66
|
-
export function assertConfiguredApp(app) {
|
|
67
|
-
if (app === undefined || !isLink(app))
|
|
68
|
-
return;
|
|
69
|
-
throw new ConfigurationError('INVALID_CONFIG', 'mobile: `app` names an app by bundle id, package, or display name, not a link; a test opens a deep link or web link with device.openLink');
|
|
70
|
-
}
|
|
71
60
|
/**
|
|
72
61
|
* The link as the report shows it, cut before its query and fragment. A
|
|
73
62
|
* magic link carries its one-time token there, and a step label is kept for
|
package/dist/links.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAErD,6FAA6F;AAC7F,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,kBAAkB,CAAC,eAAe,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CACjB,kBAAkB,EAClB,gGAAgG,KAAK,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IAC1B,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,IAAI,SAAS,CACjB,kBAAkB,EAClB,gHAAgH,CACjH,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAErD,6FAA6F;AAC7F,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,kBAAkB,CAAC,eAAe,EAAE,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CACjB,kBAAkB,EAClB,gGAAgG,KAAK,GAAG,CACzG,CAAC;IACJ,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IAC1B,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,IAAI,SAAS,CACjB,kBAAkB,EAClB,gHAAgH,CACjH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/nodes.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface RawNode {
|
|
|
25
25
|
* accessible name an app set beside visible text (agent-device 0.21.14+).
|
|
26
26
|
*/
|
|
27
27
|
readonly contentDescription?: string;
|
|
28
|
-
/** The field's placeholder text, showing or not (
|
|
28
|
+
/** The field's placeholder text, showing or not (agent-device 0.21.16+). */
|
|
29
29
|
readonly placeholder?: string;
|
|
30
30
|
/** The checked state of a checkable control; absent for one that cannot be checked or an older helper. */
|
|
31
31
|
readonly checked?: boolean;
|
package/dist/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,qEAAqE;AACrE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
|