swarmbox 0.11.0 → 0.13.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.
Files changed (43) hide show
  1. package/README.md +27 -1
  2. package/dist/fleet/browser.d.ts +10 -4
  3. package/dist/fleet/browser.d.ts.map +1 -1
  4. package/dist/fleet/browser.js +15 -5
  5. package/dist/fleet/browser.js.map +1 -1
  6. package/dist/fleet/sight.d.ts +45 -0
  7. package/dist/fleet/sight.d.ts.map +1 -1
  8. package/dist/fleet/sight.js +185 -2
  9. package/dist/fleet/sight.js.map +1 -1
  10. package/dist/harness.d.ts +55 -1
  11. package/dist/harness.d.ts.map +1 -1
  12. package/dist/harness.js +204 -37
  13. package/dist/harness.js.map +1 -1
  14. package/dist/hooks.d.ts.map +1 -1
  15. package/dist/hooks.js +5 -1
  16. package/dist/hooks.js.map +1 -1
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/mcp/server.d.ts.map +1 -1
  22. package/dist/mcp/server.js +77 -5
  23. package/dist/mcp/server.js.map +1 -1
  24. package/dist/product.d.ts +19 -3
  25. package/dist/product.d.ts.map +1 -1
  26. package/dist/redact.d.ts +13 -0
  27. package/dist/redact.d.ts.map +1 -0
  28. package/dist/redact.js +226 -0
  29. package/dist/redact.js.map +1 -0
  30. package/dist/requests.d.ts +60 -0
  31. package/dist/requests.d.ts.map +1 -0
  32. package/dist/requests.js +137 -0
  33. package/dist/requests.js.map +1 -0
  34. package/dist/standins/builtin/email/index.d.ts.map +1 -1
  35. package/dist/standins/builtin/email/index.js +238 -8
  36. package/dist/standins/builtin/email/index.js.map +1 -1
  37. package/dist/standins/builtin/email/manifest.json +6 -2
  38. package/dist/standins/runner.d.ts.map +1 -1
  39. package/dist/standins/runner.js +25 -9
  40. package/dist/standins/runner.js.map +1 -1
  41. package/dist/standins/sdk.js +8 -0
  42. package/dist/standins/sdk.js.map +1 -1
  43. package/package.json +2 -2
package/README.md CHANGED
@@ -14,14 +14,24 @@ Built for Swarmify's agents, and usable by any team whose product runs locally.
14
14
  says what is in the way; of two buttons with one name, the one in the dialog in front is meant.
15
15
  - **Worlds.** Each run starts your product the way it is deployed, with its own data, on tenant hosts that
16
16
  resolve only inside the browsers Swarmbox launches. Nothing is shared with other runs or with real data.
17
+ Name what your pages load from outside (`browserAllow`: fonts, maps), or say `contain: true`, and a world's
18
+ browsers reach only the world, its stand-ins and those; anything else is blocked and shows as a signal.
19
+ Without either they can reach anything this machine can, and `world_list` says so: if your app knows a real
20
+ outside address (an identity provider, an API), contain it.
17
21
  - **People.** Everyone in the world, signed in without a password, each on their own screen; a tablet
18
22
  app past its first screen; a customer at a link, with no sign-in at all. Any screen can be a phone, a
19
23
  tablet either way up or a desktop, light or dark.
20
24
  - **The device and props.** Swarmbox makes the photos, documents and signatures a person would use, each tagged
21
25
  with its id. It puts them in a screen's file chooser (a tablet's camera button) or in front of its live camera,
22
26
  and sets where the device is and whether it shows notifications.
27
+ - **Hands on the screen.** Click, type, choose, press keys, scroll, draw (a signature pad) and drag with the pointer
28
+ (a block onto another lane, an edge to resize, a box onto a page below the fold, scrolling on the way), each
29
+ element found by its accessible role and name. A styled
30
+ radio or checkbox is clicked through the label drawn over it, and of two alike in stacked layers, the one in
31
+ front is taken.
23
32
  - **Time.** Move a world's clock forward, and every screen follows; people stay signed in across the jump
24
- (`renewSignIn`). A scenario can say when its day starts (`world.startsAt`: "09:00", or a date and time
33
+ (`renewSignIn`). A kept world that comes back with its clock moved on an earlier run starts its screens on its
34
+ own time. A scenario can say when its day starts (`world.startsAt`: "09:00", or a date and time
25
35
  in the tenant's zone, to test across a time change). Swarmbox works out times with Node's tzdata; a
26
36
  screen shows them with Chromium's own, and the two can differ on a zone whose rules changed recently.
27
37
  A time a screen shows an hour out may be that, not your product.
@@ -31,6 +41,10 @@ Built for Swarmify's agents, and usable by any team whose product runs locally.
31
41
  actions on that screen are refused.
32
42
  - **The world's own log** (`world_log`), when the product shares it: the stack behind a screen's
33
43
  "something went wrong", while the world runs.
44
+ - **A screen's own requests** (`screen_requests`): what it asked its servers for, with status, timing, and the
45
+ start of what was sent and what came back, and what it keeps open (a live stream). An action's "refused:" line
46
+ gives each refusal's number, with the server's reason (`error.message`, or FastAPI's `detail`). No headers are
47
+ kept, and secrets in addresses and bodies are redacted.
34
48
  - **A daily budget** in browser-minutes and runs.
35
49
 
36
50
  ## Install
@@ -64,6 +78,18 @@ A product can take options of its own for a world (`worldOptions`, as zod fields
64
78
  migrating from another system, a feature switched on. `world_create` takes them as `options` and a
65
79
  scenario as `world.options`.
66
80
 
81
+ What adapters have learnt so far:
82
+
83
+ - **Mint sessions on the world's time.** A world's clock can be days ahead of the machine's, so a session dated on
84
+ the machine's clock may already be over to the product. Date it from the product's own clock (its hooks).
85
+ - **Renew by extending, not replacing** (`renewSignIn`). An open page often keeps something derived from its
86
+ session (a CSRF token); a fresh session under it ends in the product's "sign in again".
87
+ - **Share the server's output** (`log`): `world_log` is how an agent gets from a screen's "something went wrong" to
88
+ the stack.
89
+ - **In the product's own tests, check for the tools it relies on, not Swarmbox's whole list**: each release adds
90
+ tools.
91
+ - **Give each of the product's system tests its own port**, apart from the one a running sandbox uses.
92
+
67
93
  ### In production
68
94
 
69
95
  A product that uses stand-ins calls the guard as it starts in production, before it builds any provider client:
@@ -21,11 +21,15 @@ export interface FleetOptions {
21
21
  to: string;
22
22
  }[];
23
23
  /**
24
- * With routes, where else the browsers may go: the world's stand-ins and what the product loads from outside.
25
- * A routed provider page is the stand-in's own code in the browser, so the world's browsers then reach only the
26
- * world's hosts, the routed origins and these; every other request and WebSocket is blocked.
24
+ * In a contained world, where else the browsers may go: what the product loads from outside (Product.browserAllow).
27
25
  */
28
26
  allowOrigins?: string[];
27
+ /**
28
+ * Keep the browsers inside the world (Product.contain): they reach only the world's hosts, its stand-ins, the
29
+ * routed origins and allowOrigins; every other request and WebSocket is blocked, and there are no service workers.
30
+ * Always so with routes: a routed provider page is the stand-in's own code in the browser.
31
+ */
32
+ contain?: boolean;
29
33
  /**
30
34
  * The world's stand-ins' own addresses (http://127.0.0.1:<port>): reachable from its browsers (a presigned
31
35
  * upload goes straight to S3's), but when its browsers play a provider's pages, only through the same checked
@@ -33,7 +37,9 @@ export interface FleetOptions {
33
37
  */
34
38
  standins?: string[];
35
39
  }
36
- /** Whether a URL is inside a world whose browsers play a provider's pages (see FleetOptions.allowOrigins). */
40
+ /** Whether a world's browsers are kept inside it (FleetOptions.contain). */
41
+ export declare function contained(options: FleetOptions): boolean;
42
+ /** Whether a URL is inside a contained world (FleetOptions.contain): somewhere its browsers may go. */
37
43
  export declare function insideWorld(url: string, options: FleetOptions): boolean;
38
44
  /**
39
45
  * The devices a screen can be. A sign-in's own viewport (a product's tablet app) is the default for that
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/fleet/browser.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,IAAI,EAAc,MAAM,iBAAiB,CAAC;AACrG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAElE,sGAAsG;AACtG,wBAAsB,UAAU,CAC9B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAyFD,8GAA8G;AAC9G,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CA0BvE;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKV,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,OAAO,CAAC;AAE1C,2FAA2F;AAC3F,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,MAAM;IACrB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,KAAK;IACpB,gGAAgG;IAChG,IAAI,CACF,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,UAAU,GAAG;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,0FAA0F;QAC1F,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,gGAAgG;QAChG,KAAK,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,CAAC;KACzC,GACA,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAiKvE"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/fleet/browser.ts"],"names":[],"mappings":"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"}
@@ -108,7 +108,11 @@ async function answerRouted(route, options) {
108
108
  });
109
109
  }
110
110
  }
111
- /** Whether a URL is inside a world whose browsers play a provider's pages (see FleetOptions.allowOrigins). */
111
+ /** Whether a world's browsers are kept inside it (FleetOptions.contain). */
112
+ export function contained(options) {
113
+ return Boolean(options.contain || options.routes?.length);
114
+ }
115
+ /** Whether a URL is inside a contained world (FleetOptions.contain): somewhere its browsers may go. */
112
116
  export function insideWorld(url, options) {
113
117
  let u;
114
118
  try {
@@ -164,6 +168,12 @@ export async function launchFleet(options) {
164
168
  '--disable-renderer-backgrounding',
165
169
  ],
166
170
  ...(options.slowMo === undefined ? {} : { slowMo: options.slowMo }),
171
+ // Signals are Swarmbox's (serve): it stops every world, then closes the browsers. Left to Playwright, Ctrl-C
172
+ // closed the browsers and exited the process at once, cutting short a world still stopping: its servers
173
+ // and database were left running.
174
+ handleSIGINT: false,
175
+ handleSIGTERM: false,
176
+ handleSIGHUP: false,
167
177
  });
168
178
  const browserFor = (origin) => {
169
179
  let b = browsers.get(origin);
@@ -210,8 +220,8 @@ export async function launchFleet(options) {
210
220
  // The server runs in UTC; a person's browser runs where they are. "Today", "Yesterday" and the
211
221
  // year on a byline are decided here, so this machine's zone must not leak in.
212
222
  timezoneId: who.persona.timeZone,
213
- // A contained world has no service workers: one on a routed origin would answer outside the routes.
214
- ...(options.routes?.length ? { serviceWorkers: 'block' } : {}),
223
+ // A contained world has no service workers: one would answer outside the routes and the checks below.
224
+ ...(contained(options) ? { serviceWorkers: 'block' } : {}),
215
225
  ...shape,
216
226
  ...(colorScheme ? { colorScheme } : {}),
217
227
  });
@@ -237,7 +247,7 @@ export async function launchFleet(options) {
237
247
  await context.route(`${origin}/**`, async (route) => route.continue({ headers: { ...(await route.request().allHeaders()), 'x-forwarded-for': ip } }));
238
248
  if (signIn?.cookies?.length)
239
249
  await setCookies(context, origin, signIn.cookies);
240
- if (options.routes?.length) {
250
+ if (contained(options)) {
241
251
  // Contained: nothing leaves the world but to its stand-ins and what the product loads from outside.
242
252
  await context.route((url) => !insideWorld(url.href, options), (route) => route.abort('blockedbyclient'));
243
253
  await context.routeWebSocket((url) => !insideWorld(url.href, options), (ws) => ws.close({ code: 1008, reason: 'outside the world' }));
@@ -246,7 +256,7 @@ export async function launchFleet(options) {
246
256
  // reached through the same proxy, so every redirect any of them answers is checked.
247
257
  const proxied = [
248
258
  ...(options.routes ?? []).map((r) => r.origin),
249
- ...(options.routes?.length ? (options.standins ?? []) : []),
259
+ ...(contained(options) ? (options.standins ?? []) : []),
250
260
  ];
251
261
  for (const o of proxied)
252
262
  await context.route((url) => url.origin === o, (route) => answerRouted(route, options).catch(() => route.abort('connectionrefused').catch(() => undefined)));
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/fleet/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/fleet/browser.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,2GAA2G;AAC3G,mGAAmG;AACnG,2GAA2G;AAC3G,6GAA6G;AAC7G,EAAE;AACF,6GAA6G;AAC7G,2GAA2G;AAC3G,6GAA6G;AAC7G,wGAAwG;AACxG,mCAAmC;AACnC,EAAE;AACF,0GAA0G;AAC1G,gCAAgC;AAEhC,OAAO,EAAE,QAAQ,EAA4D,MAAM,iBAAiB,CAAC;AAGrG,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAuB,EACvB,MAAc,EACd,OAAsB;IAEtB,MAAM,OAAO,CAAC,UAAU,CACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,EAAE,MAAM;QACX,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QAC5B,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;KAC9B,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO,+BAA+B,UAAU,YAAY,CAAC;AAC/D,CAAC;AAiCD,uFAAuF;AACvF,MAAM,UAAU,GACd,2FAA2F;IAC3F,iGAAiG,CAAC;AAEpG,4FAA4F;AAC5F,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;;;;;GAUG;AACH,KAAK,UAAU,YAAY,CAAC,KAAY,EAAE,OAAqB;IAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACrF,CAAC;IACF,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IAC1B,IAAI,IAAI,GACN,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAC9B,KAAK,CAAC,OAAO,CAAC;QACZ,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,yBAAyB,EAAE,UAAU,EAAE;QAChF,IAAI,EAAE,oBAAoB,IAAI,GAAG;KAClC,CAAC,CAAC;IACL,KAAK,IAAI,GAAG,GAAG,CAAC,GAAI,GAAG,EAAE,EAAE,CAAC;QAC1B,oFAAoF;QACpF,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC;QACzE,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YACrE,OAAO,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE;YAC3D,MAAM;YACN,OAAO;YACP,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC/D,IAAI,IAAI,GAAe,IAAI,CAAC;YAC5B,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;gBAAE,OAAO,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAC5F,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnG,IAAI,GAAG,CAAC,mBAAmB,EAAE;oBAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;wBACnB,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,yBAAyB,EAAE,UAAU,EAAE;wBAC/E,IAAI,EAAE,2CAA2C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY;qBAChH,CAAC,CAAC;gBACL,IAAI,GAAG,IAAI,WAAW;oBAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACzD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;oBAC5F,MAAM,GAAG,KAAK,CAAC;oBACf,IAAI,GAAG,SAAS,CAAC;gBACnB,CAAC;gBACD,GAAG,GAAG,IAAI,CAAC;gBACX,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAC5B,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM;QACrB,sFAAsF;QACtF,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gFAAgF,CAAC,IAAI,CAAC,CAAC,CAAC,CACnG,CACF,CAAC;QACF,OAAO,KAAK,CAAC,OAAO,CAAC;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,yBAAyB,EAAE,UAAU,EAAE;YAC1D,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,SAAS,CAAC,OAAqB;IAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAAqB;IAC5D,IAAI,CAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7F,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7F,MAAM,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,KAAK,GACT,KAAK,KAAK,OAAO;QACjB,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI;QACrC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACvF,OAAO,CACL,KAAK;QACL,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QACvD,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;IACnD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE;IACtG,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE;IACxF,iBAAiB,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE;CAC3F,CAAC;AA8CX,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAqB;IACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,MAAM,MAAM,GAAG,CAAC,MAAc,EAAoB,EAAE,CAClD,QAAQ,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;QACnC,IAAI,EAAE;YACJ,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YAChC,8CAA8C,MAAM,EAAE;YACtD,iGAAiG;YACjG,mGAAmG;YACnG,oGAAoG;YACpG,iEAAiE;YACjE,uCAAuC;YACvC,0CAA0C;YAC1C,kCAAkC;SACnC;QACD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,6GAA6G;QAC7G,wGAAwG;QACxG,kCAAkC;QAClC,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACL,MAAM,UAAU,GAAG,CAAC,MAAc,EAAoB,EAAE;QACtD,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACnB,iFAAiF;YACjF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACvC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,UAAU,MAAM,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAEvG,OAAO;QACL,SAAS;QACT,OAAO;QAEP;;;;;;;;;;;;;;;WAeG;QACH,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;YACjF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,EAAE,YAAY,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;YACxB,MAAM,EAAE,GAAG,OAAO,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,UAAU,CAAC,MAAM,CAAC,CACzB,CAAC,UAAU,CAAC;gBACX,OAAO,EAAE,MAAM;gBACf,+FAA+F;gBAC/F,8EAA8E;gBAC9E,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ;gBAChC,sGAAsG;gBACtG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,KAAK;gBACR,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxC,CAAC,CAAC;YACH,iGAAiG;YACjG,iGAAiG;YACjG,IAAI,YAAY;gBACd,iGAAiG;gBACjG,MAAM,OAAO,CAAC,aAAa,CACzB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAiD,EAAE,EAAE;oBAC/D,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,KAAK,EAAE;wBAAE,OAAO;oBAC/C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;wBACxC,IAAI,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;4BAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3F,CAAC,EACD,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,CACpC,CAAC;YACJ,iGAAiG;YACjG,oGAAoG;YACpG,+DAA+D;YAC/D,EAAE;YACF,qGAAqG;YACrG,+FAA+F;YAC/F,wFAAwF;YACxF,qGAAqG;YACrG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAClD,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,CAAC,CAChG,CAAC;YACF,IAAI,MAAM,EAAE,OAAO,EAAE,MAAM;gBAAE,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/E,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,oGAAoG;gBACpG,MAAM,OAAO,CAAC,KAAK,CACjB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EACxC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAC1C,CAAC;gBACF,MAAM,OAAO,CAAC,cAAc,CAC1B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EACxC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAC9D,CAAC;YACJ,CAAC;YACD,wGAAwG;YACxG,oFAAoF;YACpF,MAAM,OAAO,GAAG;gBACd,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC9C,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,OAAO;gBACrB,MAAM,OAAO,CAAC,KAAK,CACjB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EACzB,CAAC,KAAK,EAAE,EAAE,CACR,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CACpG,CAAC;YACJ,IAAI,IAAU,CAAC;YACf,IAAI,CAAC;gBACH,qGAAqG;gBACrG,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;gBAC3B,oGAAoG;gBACpG,0DAA0D;gBAC1D,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,KAAK,CAAC,MAAM;wBAAE,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;;wBAClE,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC/B,mFAAmF;gBACnF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,qGAAqG;gBACrG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,MAAM,GAAW;gBACrB,MAAM;gBACN,OAAO,EAAE,EAAE;gBACX,OAAO;gBACP,IAAI;gBACJ,KAAK,EAAE,KAAK,IAAI,EAAE;oBAChB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC;aACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,KAAK;YACT,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACnC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -19,6 +19,8 @@ export interface Glance {
19
19
  dialogs: string[];
20
20
  /** Visible status and alert text. */
21
21
  said: string[];
22
+ /** Visible top headings (h1, h2): a view that swaps in place (a "You signed it" page) shows here. */
23
+ headings: string[];
22
24
  }
23
25
  export declare function glance(page: Page): Promise<Glance>;
24
26
  /** Lines saying what moved between two glances; empty when nothing a person would notice did. */
@@ -40,10 +42,53 @@ export declare function pickAmong(matches: Locator, count: number): Promise<{
40
42
  export declare function behindModal(el: Locator): Promise<string | null>;
41
43
  /** Why a click failed, in a sentence, from Playwright's log of what it tried. */
42
44
  export declare function whyNotClicked(e: unknown): string;
45
+ /**
46
+ * Whether what is in front of a control is its own label: a styled radio or checkbox draws its label (or a
47
+ * box inside it) over the real input, and a person clicks that. Clicking the label is then the same click.
48
+ */
49
+ export declare function coveredByOwnLabel(el: Locator): Promise<boolean>;
43
50
  /** A stroke as fractions of the element's box: [x, y] pairs, 0 to 1. */
44
51
  export type Stroke = [number, number][];
45
52
  /** A signature-like scribble, for a pad that only needs one. */
46
53
  export declare const SIGNATURE: Stroke[];
47
54
  /** Draws strokes on an element with the pointer, as a finger or a mouse would: down, moves, up. */
48
55
  export declare function draw(page: Page, el: Locator, strokes?: Stroke[]): Promise<void>;
56
+ /** Where a drag goes: a point on another element (fractions of its box), or a distance in CSS pixels. */
57
+ export type DragTo = {
58
+ el: Locator;
59
+ at: [number, number];
60
+ } | {
61
+ by: {
62
+ x: number;
63
+ y: number;
64
+ };
65
+ };
66
+ /**
67
+ * Drags with the pointer, as a person would: press at a point on the element (fractions of its box), move
68
+ * a little first (a drag library starts a drag only once the pointer has moved), then on to the drop in small
69
+ * steps, pause over it (a drop target answers hovering), and let go.
70
+ *
71
+ * A drop below or above the screen is reached as a person reaches it: when both ends fit on the screen at once,
72
+ * the page is scrolled to show them both first; otherwise the wheel is turned while the drag is held, and the
73
+ * pointer follows the drop point as it comes into view. Returns how far it scrolled, in CSS pixels (0: not at all).
74
+ */
75
+ export declare function drag(page: Page, el: Locator, grab: [number, number], to: DragTo): Promise<number>;
76
+ /** Where a scroll goes: to an element, by a distance, or to one end. */
77
+ export type ScrollTo = {
78
+ el: Locator;
79
+ } | {
80
+ by: {
81
+ x: number;
82
+ y: number;
83
+ };
84
+ over?: Locator;
85
+ } | {
86
+ end: 'top' | 'bottom';
87
+ over?: Locator;
88
+ };
89
+ /**
90
+ * Scrolls as a person does: an element into view; or the wheel turned over a panel (or the page), by a distance
91
+ * or to one end. Returns how far the page or the panel moved, in CSS pixels.
92
+ */
93
+ export declare function scroll(page: Page, to: ScrollTo): Promise<number>;
49
94
  //# sourceMappingURL=sight.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sight.d.ts","sourceRoot":"","sources":["../../src/fleet/sight.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AASrD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;CACd;AAgCD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAsBnE;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAWzD;AAED,6FAA6F;AAC7F,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBxD;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ/D;AAYD;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAwChF;AAED,2GAA2G;AAC3G,wBAAsB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcrE;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAWhD;AAED,wEAAwE;AACxE,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAExC,gEAAgE;AAChE,eAAO,MAAM,SAAS,EAAE,MAAM,EAkB7B,CAAC;AAEF,mGAAmG;AACnG,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,EAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhG"}
1
+ {"version":3,"file":"sight.d.ts","sourceRoot":"","sources":["../../src/fleet/sight.ts"],"names":[],"mappings":"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"}
@@ -74,8 +74,16 @@ export function dialogsText(dialogs) {
74
74
  });
75
75
  return `${lines.join('\n')}\n--- the page${modal ? ' behind it' : ''} ---`;
76
76
  }
77
+ const HEADINGS = 'h1, h2, [role="heading"][aria-level="1"], [role="heading"][aria-level="2"]';
77
78
  export async function glance(page) {
78
- const [info, said] = await Promise.all([
79
+ const visibleText = (els) => els
80
+ .filter((e) => {
81
+ const b = e.getBoundingClientRect();
82
+ return b.width > 0 && b.height > 0 && getComputedStyle(e).visibility !== 'hidden';
83
+ })
84
+ .map((e) => (e.innerText ?? e.textContent ?? '').replace(/\s+/g, ' ').trim())
85
+ .filter((t) => t.length > 0);
86
+ const [info, said, headings] = await Promise.all([
79
87
  page.locator(DIALOGS).evaluateAll(describeDialogs),
80
88
  page.locator(LIVE).evaluateAll((els) => els
81
89
  .filter((e) => {
@@ -85,11 +93,13 @@ export async function glance(page) {
85
93
  // innerText, as laid out: textContent runs "1:05 p.m." into the next line's "Lakeside".
86
94
  .map((e) => (e.innerText ?? e.textContent ?? '').replace(/\s+/g, ' ').trim())
87
95
  .filter((t) => t.length > 0)),
96
+ page.locator(HEADINGS).evaluateAll(visibleText),
88
97
  ]);
89
98
  return {
90
99
  url: page.url(),
91
100
  dialogs: info.filter((d) => d.visible).map((d) => (d.modal ? `${d.title} (modal)` : d.title)),
92
101
  said: [...new Set(said)].map((t) => (t.length > 200 ? `${t.slice(0, 200)}…` : t)),
102
+ headings: [...new Set(headings)].map((t) => (t.length > 120 ? `${t.slice(0, 120)}…` : t)),
93
103
  };
94
104
  }
95
105
  /** Lines saying what moved between two glances; empty when nothing a person would notice did. */
@@ -102,6 +112,14 @@ export function changes(before, after) {
102
112
  lines.push(`dialog closed: "${d}"`);
103
113
  for (const t of gone(after.said, before.said))
104
114
  lines.push(`says: "${t}"`);
115
+ // A dialog's own heading is said by "dialog opened"; three at most, so a whole new page doesn't flood it.
116
+ const inDialog = (h) => after.dialogs.some((d) => d.startsWith(h)) || before.dialogs.some((d) => d.startsWith(h));
117
+ const came = gone(after.headings, before.headings).filter((h) => !inDialog(h));
118
+ const went = gone(before.headings, after.headings).filter((h) => !inDialog(h));
119
+ for (const h of came.slice(0, 3))
120
+ lines.push(`heading: "${h}"`);
121
+ for (const h of went.slice(0, 3))
122
+ lines.push(`heading gone: "${h}"`);
105
123
  if (before.url !== after.url)
106
124
  lines.push(`address: ${pathOf(before.url)} → ${pathOf(after.url)}`);
107
125
  return lines;
@@ -134,10 +152,15 @@ export async function pickAmong(matches, count) {
134
152
  info: els.map((el) => {
135
153
  const d = el.closest('dialog, [role="dialog"], [role="alertdialog"]');
136
154
  const b = el.getBoundingClientRect();
155
+ // What a pointer at its middle would land on: itself (or its own label), or something over it,
156
+ // such as the scrim a non-modal layer puts over the page behind it.
157
+ const hit = document.elementFromPoint(b.left + b.width / 2, b.top + b.height / 2);
158
+ const label = hit?.closest('label');
137
159
  return {
138
160
  dialog: d ? name(d) : null,
139
161
  inFront: Boolean(front?.contains(el)),
140
162
  visible: b.width > 0 && b.height > 0,
163
+ onTop: Boolean(hit && (el.contains(hit) || label?.contains(el) || label?.control === el)),
141
164
  };
142
165
  }),
143
166
  };
@@ -152,11 +175,16 @@ export async function pickAmong(matches, count) {
152
175
  const visible = each.filter((m) => m.visible);
153
176
  if (visible.length === 1 && count > 1)
154
177
  return { index: visible[0].i, why: 'the only one showing; the others are hidden' };
178
+ // Layers that don't say they are modal (a panel, then a dialog over it with a scrim): the one not covered.
179
+ const onTop = visible.filter((m) => m.onTop);
180
+ if (onTop.length === 1 && visible.length > 1)
181
+ return { index: onTop[0].i, why: 'the only one not covered by another layer' };
155
182
  }
156
183
  return {
157
184
  index: null,
158
185
  described: each.map((m) => `${m.i}: ${m.dialog ? `in "${m.dialog}"` : 'on the page'}${m.visible ? '' : ', hidden'}` +
159
- `${top !== null && !m.inFront ? `, behind the dialog "${top}"` : ''}`),
186
+ `${top !== null && !m.inFront ? `, behind the dialog "${top}"` : ''}` +
187
+ `${m.visible && !m.onTop ? ', covered' : ''}`),
160
188
  };
161
189
  }
162
190
  /** When the element is behind the modal dialog in front, that dialog's title: a click there can't land. */
@@ -191,6 +219,20 @@ export function whyNotClicked(e) {
191
219
  return 'it never became clickable within 10 s';
192
220
  return msg.split('\n')[0].slice(0, 300);
193
221
  }
222
+ /**
223
+ * Whether what is in front of a control is its own label: a styled radio or checkbox draws its label (or a
224
+ * box inside it) over the real input, and a person clicks that. Clicking the label is then the same click.
225
+ */
226
+ export async function coveredByOwnLabel(el) {
227
+ return el
228
+ .evaluate((n) => {
229
+ const b = n.getBoundingClientRect();
230
+ const hit = document.elementFromPoint(b.left + b.width / 2, b.top + b.height / 2);
231
+ const label = hit?.closest('label');
232
+ return Boolean(label && (label.contains(n) || label.control === n));
233
+ })
234
+ .catch(() => false);
235
+ }
194
236
  /** A signature-like scribble, for a pad that only needs one. */
195
237
  export const SIGNATURE = [
196
238
  [
@@ -231,4 +273,145 @@ export async function draw(page, el, strokes = SIGNATURE) {
231
273
  await page.mouse.up();
232
274
  }
233
275
  }
276
+ /** How far one wheel turn scrolls while a drag is held, as a fraction of the screen's height. */
277
+ const WHEEL_STEP = 0.6;
278
+ /** How close to an edge of the screen a drop point may be, in CSS pixels. */
279
+ const EDGE = 8;
280
+ /**
281
+ * Drags with the pointer, as a person would: press at a point on the element (fractions of its box), move
282
+ * a little first (a drag library starts a drag only once the pointer has moved), then on to the drop in small
283
+ * steps, pause over it (a drop target answers hovering), and let go.
284
+ *
285
+ * A drop below or above the screen is reached as a person reaches it: when both ends fit on the screen at once,
286
+ * the page is scrolled to show them both first; otherwise the wheel is turned while the drag is held, and the
287
+ * pointer follows the drop point as it comes into view. Returns how far it scrolled, in CSS pixels (0: not at all).
288
+ */
289
+ export async function drag(page, el, grab, to) {
290
+ await el.scrollIntoViewIfNeeded({ timeout: 10_000 });
291
+ const view = page.viewportSize() ?? { width: 1280, height: 800 };
292
+ const scrollY = () => page.evaluate(() => window.scrollY);
293
+ const grabPoint = async () => {
294
+ const box = await el.boundingBox({ timeout: 10_000 });
295
+ if (!box)
296
+ throw new Error('it has no size on screen');
297
+ return { x: box.x + grab[0] * box.width, y: box.y + grab[1] * box.height };
298
+ };
299
+ // A distance is from where it was first held, in the page: it moves with the page as the page scrolls.
300
+ const held = await grabPoint();
301
+ let from = held;
302
+ const startY = await scrollY();
303
+ const destPoint = async () => {
304
+ if ('by' in to)
305
+ return { x: held.x + to.by.x, y: held.y + to.by.y - ((await scrollY()) - startY) };
306
+ const b = await to.el.boundingBox({ timeout: 10_000 });
307
+ if (!b)
308
+ throw new Error('where it goes has no size on screen');
309
+ return { x: b.x + to.at[0] * b.width, y: b.y + to.at[1] * b.height };
310
+ };
311
+ const onScreen = (p) => p.x >= 0 && p.x <= view.width && p.y >= EDGE && p.y <= view.height - EDGE;
312
+ let dest = await destPoint();
313
+ if (dest.x < 0 || dest.x > view.width)
314
+ throw new Error(`the drop point (${Math.round(dest.x)}, ${Math.round(dest.y)}) is beside the screen (${view.width}×${view.height})`);
315
+ let scrolled = 0;
316
+ // Both ends fit: scroll them both into view before taking hold, by the wheel over what is held.
317
+ if (!onScreen(dest) && Math.abs(dest.y - from.y) < view.height - 4 * EDGE) {
318
+ const by = (from.y + dest.y) / 2 - view.height / 2;
319
+ await page.mouse.move(from.x, from.y);
320
+ await page.mouse.wheel(0, by);
321
+ await page.waitForTimeout(150);
322
+ const moved = await grabPoint();
323
+ // What the page moved, not what was asked: it stops at its own end.
324
+ scrolled += from.y - moved.y;
325
+ from = moved;
326
+ dest = await destPoint();
327
+ }
328
+ await page.mouse.move(from.x, from.y);
329
+ await page.mouse.down();
330
+ try {
331
+ await page.mouse.move(from.x + 6, from.y, { steps: 3 });
332
+ // Too far apart to see both: hold it near the edge it goes towards and turn the wheel until the drop shows.
333
+ for (let turns = 0; !onScreen(dest) && turns < 20; turns++) {
334
+ const down = dest.y > view.height;
335
+ const edge = {
336
+ x: Math.min(Math.max(dest.x, EDGE), view.width - EDGE),
337
+ y: down ? view.height - 3 * EDGE : 3 * EDGE,
338
+ };
339
+ await page.mouse.move(edge.x, edge.y, { steps: 8 });
340
+ const step = Math.min(Math.abs(dest.y - edge.y), view.height * WHEEL_STEP) * (down ? 1 : -1);
341
+ await page.mouse.wheel(0, step);
342
+ await page.waitForTimeout(120);
343
+ const next = await destPoint();
344
+ if (Math.abs(next.y - dest.y) < 1)
345
+ throw new Error('the page would not scroll any further towards the drop point; drag in steps');
346
+ scrolled += dest.y - next.y;
347
+ dest = next;
348
+ }
349
+ if (!onScreen(dest))
350
+ throw new Error(`the drop point is still off the screen after scrolling ${Math.round(Math.abs(scrolled))} px`);
351
+ await page.mouse.move(dest.x, dest.y, { steps: 24 });
352
+ await page.waitForTimeout(150);
353
+ }
354
+ catch (e) {
355
+ // Never left holding the button: the next action would drag.
356
+ await page.mouse.up().catch(() => undefined);
357
+ throw e;
358
+ }
359
+ await page.mouse.up();
360
+ return Math.round(Math.abs(scrolled));
361
+ }
362
+ /**
363
+ * Scrolls as a person does: an element into view; or the wheel turned over a panel (or the page), by a distance
364
+ * or to one end. Returns how far the page or the panel moved, in CSS pixels.
365
+ */
366
+ export async function scroll(page, to) {
367
+ if ('el' in to) {
368
+ const before = await to.el.boundingBox({ timeout: 10_000 });
369
+ await to.el.scrollIntoViewIfNeeded({ timeout: 10_000 });
370
+ const after = await to.el.boundingBox({ timeout: 10_000 });
371
+ return before && after ? Math.round(Math.abs(before.y - after.y)) : 0;
372
+ }
373
+ const view = page.viewportSize() ?? { width: 1280, height: 800 };
374
+ const box = to.over ? await to.over.boundingBox({ timeout: 10_000 }) : null;
375
+ if (to.over && !box)
376
+ throw new Error('what to scroll has no size on screen');
377
+ const at = box
378
+ ? { x: box.x + box.width / 2, y: box.y + box.height / 2 }
379
+ : { x: view.width / 2, y: view.height / 2 };
380
+ // How far along and down the page or the panel under the pointer is, each way: what the wheel moves.
381
+ const position = () => page.evaluate(({ x, y }) => {
382
+ const scroller = (down) => {
383
+ for (let e = document.elementFromPoint(x, y); e; e = e.parentElement) {
384
+ const style = getComputedStyle(e);
385
+ if (down
386
+ ? e.scrollHeight > e.clientHeight + 1 && /(auto|scroll)/.test(style.overflowY)
387
+ : e.scrollWidth > e.clientWidth + 1 && /(auto|scroll)/.test(style.overflowX))
388
+ return e;
389
+ }
390
+ return null;
391
+ };
392
+ return {
393
+ x: scroller(false)?.scrollLeft ?? window.scrollX,
394
+ y: scroller(true)?.scrollTop ?? window.scrollY,
395
+ };
396
+ }, at);
397
+ await page.mouse.move(at.x, at.y);
398
+ const start = await position();
399
+ if ('by' in to) {
400
+ await page.mouse.wheel(to.by.x, to.by.y);
401
+ await page.waitForTimeout(150);
402
+ }
403
+ else {
404
+ // To an end: turn the wheel until it stops moving.
405
+ for (let turns = 0, last = start.y; turns < 50; turns++) {
406
+ await page.mouse.wheel(0, (to.end === 'bottom' ? 1 : -1) * view.height * 2);
407
+ await page.waitForTimeout(80);
408
+ const now = (await position()).y;
409
+ if (now === last)
410
+ break;
411
+ last = now;
412
+ }
413
+ }
414
+ const end = await position();
415
+ return Math.round(Math.hypot(end.x - start.x, end.y - start.y));
416
+ }
234
417
  //# sourceMappingURL=sight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sight.js","sourceRoot":"","sources":["../../src/fleet/sight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sight.js","sourceRoot":"","sources":["../../src/fleet/sight.ts"],"names":[],"mappings":"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"}