@descryy/mcp 0.4.0 → 0.6.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/dist/bin/descry-mcp.js +16 -2
- package/dist/bin/descry-mcp.js.map +1 -1
- package/dist/browser/driver.d.ts +105 -6
- package/dist/browser/driver.d.ts.map +1 -1
- package/dist/browser/driver.js +17 -3
- package/dist/browser/driver.js.map +1 -1
- package/dist/browser/evidence.d.ts +11 -0
- package/dist/browser/evidence.d.ts.map +1 -1
- package/dist/browser/evidence.js +64 -8
- package/dist/browser/evidence.js.map +1 -1
- package/dist/browser/fake-driver.d.ts +8 -0
- package/dist/browser/fake-driver.d.ts.map +1 -1
- package/dist/browser/fake-driver.js +26 -3
- package/dist/browser/fake-driver.js.map +1 -1
- package/dist/browser/playwright-driver.d.ts +68 -14
- package/dist/browser/playwright-driver.d.ts.map +1 -1
- package/dist/browser/playwright-driver.js +318 -38
- package/dist/browser/playwright-driver.js.map +1 -1
- package/dist/browser/provider.d.ts +10 -4
- package/dist/browser/provider.d.ts.map +1 -1
- package/dist/browser/provider.js +10 -4
- package/dist/browser/provider.js.map +1 -1
- package/dist/browser/scenario-runner.d.ts +9 -0
- package/dist/browser/scenario-runner.d.ts.map +1 -1
- package/dist/browser/scenario-runner.js +32 -2
- package/dist/browser/scenario-runner.js.map +1 -1
- package/dist/browser/tool-support.js +1 -1
- package/dist/browser/tool-support.js.map +1 -1
- package/dist/cancellation.d.ts +55 -0
- package/dist/cancellation.d.ts.map +1 -0
- package/dist/cancellation.js +76 -0
- package/dist/cancellation.js.map +1 -0
- package/dist/capped.d.ts +41 -0
- package/dist/capped.d.ts.map +1 -0
- package/dist/capped.js +35 -0
- package/dist/capped.js.map +1 -0
- package/dist/registry.d.ts +20 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +71 -4
- package/dist/registry.js.map +1 -1
- package/dist/render.d.ts +92 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +250 -5
- package/dist/render.js.map +1 -1
- package/dist/runtime-registry.d.ts +19 -1
- package/dist/runtime-registry.d.ts.map +1 -1
- package/dist/runtime-registry.js +88 -4
- package/dist/runtime-registry.js.map +1 -1
- package/dist/server.d.ts +19 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +135 -11
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +22 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +27 -1
- package/dist/session.js.map +1 -1
- package/dist/tools/analyze.d.ts +23 -3
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +35 -3
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/browser-click.d.ts.map +1 -1
- package/dist/tools/browser-click.js +14 -0
- package/dist/tools/browser-click.js.map +1 -1
- package/dist/tools/browser-fill.d.ts.map +1 -1
- package/dist/tools/browser-fill.js +14 -0
- package/dist/tools/browser-fill.js.map +1 -1
- package/dist/tools/browser-navigate.d.ts.map +1 -1
- package/dist/tools/browser-navigate.js +14 -0
- package/dist/tools/browser-navigate.js.map +1 -1
- package/dist/tools/browser-run-scenario.d.ts.map +1 -1
- package/dist/tools/browser-run-scenario.js +12 -3
- package/dist/tools/browser-run-scenario.js.map +1 -1
- package/dist/tools/browser-save-scenario.d.ts.map +1 -1
- package/dist/tools/browser-save-scenario.js +109 -3
- package/dist/tools/browser-save-scenario.js.map +1 -1
- package/dist/tools/browser-start-session.d.ts.map +1 -1
- package/dist/tools/browser-start-session.js +43 -0
- package/dist/tools/browser-start-session.js.map +1 -1
- package/dist/tools/browser-type.d.ts.map +1 -1
- package/dist/tools/browser-type.js +14 -0
- package/dist/tools/browser-type.js.map +1 -1
- package/dist/tools/contracts.d.ts +41 -10
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +117 -17
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/cross-pr.d.ts +39 -10
- package/dist/tools/cross-pr.d.ts.map +1 -1
- package/dist/tools/cross-pr.js +113 -29
- package/dist/tools/cross-pr.js.map +1 -1
- package/dist/tools/git-diff.d.ts.map +1 -1
- package/dist/tools/git-diff.js +30 -2
- package/dist/tools/git-diff.js.map +1 -1
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +50 -2
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/observe-runtime.d.ts.map +1 -1
- package/dist/tools/observe-runtime.js +84 -4
- package/dist/tools/observe-runtime.js.map +1 -1
- package/dist/tools/observe-tests.d.ts +12 -0
- package/dist/tools/observe-tests.d.ts.map +1 -1
- package/dist/tools/observe-tests.js +92 -8
- package/dist/tools/observe-tests.js.map +1 -1
- package/dist/tools/pre-push.d.ts +40 -7
- package/dist/tools/pre-push.d.ts.map +1 -1
- package/dist/tools/pre-push.js +65 -23
- package/dist/tools/pre-push.js.map +1 -1
- package/dist/tools/scope.d.ts.map +1 -1
- package/dist/tools/scope.js +20 -4
- package/dist/tools/scope.js.map +1 -1
- package/dist/tools/validate.d.ts +40 -1
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js +150 -27
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/verification-status.d.ts.map +1 -1
- package/dist/tools/verification-status.js +3 -3
- package/dist/tools/verification-status.js.map +1 -1
- package/dist/transport.d.ts +12 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +30 -16
- package/dist/transport.js.map +1 -1
- package/package.json +22 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-driver.d.ts","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"playwright-driver.d.ts","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AA+B7E,OAAO,KAAK,EACV,aAAa,EAGb,kBAAkB,EAElB,cAAc,EAOd,eAAe,EAChB,MAAM,aAAa,CAAC;AAgDrB,MAAM,WAAW,uBAAuB;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,uGAAuG;IACvG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAChD,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD;AAED,KAAK,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;AAsDhE,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,OAAO;CAO3B;AAED;;;;;GAKG;AACH;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,6BAA6B,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBjH;AAgXD;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,SAAS,EAAE,SAAS,eAAe,EAAE,GACpC,kBAAkB,CA6FpB"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The real `BrowserDriver`, over `@descryy/runtime-browser`.
|
|
3
3
|
*
|
|
4
|
-
* ## Why the import is dynamic
|
|
4
|
+
* ## Why the import is still dynamic
|
|
5
5
|
*
|
|
6
|
-
* `@descryy/runtime-browser` is
|
|
7
|
-
* (`mcp-browser-tools.md` §3.1 — the
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
6
|
+
* `@descryy/runtime-browser` is now a declared dependency of `@descryy/mcp`
|
|
7
|
+
* (`mcp-browser-tools.md` §3.1's publish landed) — so the reason this module
|
|
8
|
+
* used to give for a call-time specifier import, "not on the registry yet,"
|
|
9
|
+
* no longer holds. It stays dynamic anyway, for a reason that outgrew that
|
|
10
|
+
* one: `loadRuntimeModule` (`PlaywrightDriverOptions`, below) is a real
|
|
11
|
+
* injection seam that `browser-action-settle.test.ts` uses today to drive
|
|
12
|
+
* this file's settle logic against a fake module shaped like this one,
|
|
13
|
+
* deterministically, with no real browser involved. A static
|
|
14
|
+
* `import … from "@descryy/runtime-browser"` at the top of this file would
|
|
15
|
+
* remove that seam along with the indirection, and nothing here needs
|
|
16
|
+
* removing it — the package being on the registry made the *dependency*
|
|
17
|
+
* declarable, not the import path mandatory. Absence (package missing,
|
|
18
|
+
* import throws, or Chromium missing) is still a **named refusal with a
|
|
19
|
+
* remedy**, exactly as before — see `provider.ts`.
|
|
17
20
|
*
|
|
18
21
|
* ## What this adds over the runtime package, and what it deliberately does not
|
|
19
22
|
*
|
|
@@ -49,6 +52,33 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
49
52
|
import { BrowserSessionCrashedError, UnknownElementRefError } from "./driver.js";
|
|
50
53
|
/** The module the driver composes. Named once, imported at call time. */
|
|
51
54
|
const RUNTIME_BROWSER_MODULE = "@descryy/runtime-browser";
|
|
55
|
+
const defaultRuntimeModuleLoader = () => import(__rewriteRelativeImportExtension(RUNTIME_BROWSER_MODULE));
|
|
56
|
+
/**
|
|
57
|
+
* How long an action waits for the page to *start* doing something.
|
|
58
|
+
*
|
|
59
|
+
* This is the one half of the wait that cannot be made conditional: there is
|
|
60
|
+
* no signal for "this click will never issue a request", and proving that
|
|
61
|
+
* negative is proving a negative. It is the old fixed 300ms, kept at its old
|
|
62
|
+
* value so an action that causes nothing observes exactly what it observed
|
|
63
|
+
* before — and it is now a *ceiling* rather than a duration, since any
|
|
64
|
+
* request that starts inside it moves the wait onto the settle condition
|
|
65
|
+
* below.
|
|
66
|
+
*/
|
|
67
|
+
const ACTIVITY_GRACE_MS = 300;
|
|
68
|
+
/**
|
|
69
|
+
* After the last request lifecycle event, how long of nothing counts as
|
|
70
|
+
* settled. Short on purpose: this fires only once activity has been seen, so
|
|
71
|
+
* it measures a gap between requests, not a guess about whether any will come.
|
|
72
|
+
*/
|
|
73
|
+
const NETWORK_QUIET_MS = 120;
|
|
74
|
+
/**
|
|
75
|
+
* The ceiling on the whole wait. A page that never stops requesting must not
|
|
76
|
+
* hold a tool call open forever; reaching this is recorded on the observation
|
|
77
|
+
* and disclosed, never swallowed.
|
|
78
|
+
*/
|
|
79
|
+
const SETTLE_TIMEOUT_MS = 5_000;
|
|
80
|
+
/** How often the settle loop re-checks. Small enough not to add latency of its own. */
|
|
81
|
+
const POLL_INTERVAL_MS = 10;
|
|
52
82
|
/**
|
|
53
83
|
* Elements an agent can act on.
|
|
54
84
|
*
|
|
@@ -68,7 +98,7 @@ export class BrowserBackendMissingError extends Error {
|
|
|
68
98
|
export async function createPlaywrightBrowserDriver(options = {}) {
|
|
69
99
|
let runtime;
|
|
70
100
|
try {
|
|
71
|
-
runtime = (await
|
|
101
|
+
runtime = (await (options.loadRuntimeModule ?? defaultRuntimeModuleLoader)());
|
|
72
102
|
}
|
|
73
103
|
catch (error) {
|
|
74
104
|
throw new BrowserBackendMissingError(error);
|
|
@@ -88,6 +118,22 @@ export async function createPlaywrightBrowserDriver(options = {}) {
|
|
|
88
118
|
async function openSession(runtime, session, launchOptions, options) {
|
|
89
119
|
const emitted = [];
|
|
90
120
|
const actions = [];
|
|
121
|
+
const unsettled = [];
|
|
122
|
+
// The request lifecycle, counted rather than slept through. `inFlight` is
|
|
123
|
+
// what "the page is still doing something" means, and `lastEventAt` is what
|
|
124
|
+
// separates a gap between two requests from the end of them.
|
|
125
|
+
let inFlight = 0;
|
|
126
|
+
let lastEventAt = 0;
|
|
127
|
+
session.page.on("request", () => {
|
|
128
|
+
inFlight += 1;
|
|
129
|
+
lastEventAt = Date.now();
|
|
130
|
+
});
|
|
131
|
+
const settleOne = () => {
|
|
132
|
+
inFlight = Math.max(0, inFlight - 1);
|
|
133
|
+
lastEventAt = Date.now();
|
|
134
|
+
};
|
|
135
|
+
session.page.on("requestfinished", settleOne);
|
|
136
|
+
session.page.on("requestfailed", settleOne);
|
|
91
137
|
let refs = new Map();
|
|
92
138
|
let generation = 0;
|
|
93
139
|
let closed = false;
|
|
@@ -137,6 +183,49 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
137
183
|
function recordAction(action, ref, mode) {
|
|
138
184
|
actions.push({ action, ref, mode, url: session.page.url(), at: new Date().toISOString() });
|
|
139
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Waits for the network activity this action caused, and records it when it
|
|
188
|
+
* does not arrive.
|
|
189
|
+
*
|
|
190
|
+
* Two conditions, because there are two different questions:
|
|
191
|
+
*
|
|
192
|
+
* - **Did anything start?** There is no signal for "nothing will", so this
|
|
193
|
+
* half is a bounded wait — `ACTIVITY_GRACE_MS`, the old fixed sleep's own
|
|
194
|
+
* value, so an action that causes nothing observes exactly what it did
|
|
195
|
+
* before. It is a ceiling now rather than a duration: the moment a
|
|
196
|
+
* request starts, the wait moves onto the second condition.
|
|
197
|
+
* - **Has it finished?** Nothing in flight, and nothing new for
|
|
198
|
+
* `NETWORK_QUIET_MS`. This is the half the fixed sleep got wrong: a
|
|
199
|
+
* request that took longer than 300ms was not waited for and its
|
|
200
|
+
* evidence was silently absent from the reply.
|
|
201
|
+
*
|
|
202
|
+
* Whichever condition is running, the whole wait is capped at
|
|
203
|
+
* `SETTLE_TIMEOUT_MS` — and reaching that cap is recorded on the
|
|
204
|
+
* observation, never swallowed.
|
|
205
|
+
*/
|
|
206
|
+
async function settleAfterAction(action, ref) {
|
|
207
|
+
const startedAt = Date.now();
|
|
208
|
+
lastEventAt = startedAt;
|
|
209
|
+
let sawActivity = inFlight > 0;
|
|
210
|
+
for (;;) {
|
|
211
|
+
const now = Date.now();
|
|
212
|
+
const waitedMs = now - startedAt;
|
|
213
|
+
if (inFlight > 0)
|
|
214
|
+
sawActivity = true;
|
|
215
|
+
if (waitedMs >= SETTLE_TIMEOUT_MS) {
|
|
216
|
+
unsettled.push({ action, ref, waitedMs });
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (sawActivity) {
|
|
220
|
+
if (inFlight === 0 && now - lastEventAt >= NETWORK_QUIET_MS)
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
else if (waitedMs >= ACTIVITY_GRACE_MS) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
140
229
|
async function dropRefs() {
|
|
141
230
|
const handles = [...refs.values()].map((r) => r.handle);
|
|
142
231
|
refs = new Map();
|
|
@@ -187,7 +276,115 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
187
276
|
el.getAttribute("placeholder") ??
|
|
188
277
|
el.getAttribute("name") ??
|
|
189
278
|
"";
|
|
190
|
-
|
|
279
|
+
// --- a real, re-resolvable selector, computed in this same
|
|
280
|
+
// round trip so role/name/selector are all read off one live
|
|
281
|
+
// DOM state. Everything below runs *inside the page* — it is
|
|
282
|
+
// serialized by Playwright, so it must be entirely self
|
|
283
|
+
// contained (no closures over the outer module).
|
|
284
|
+
// An id that looks generated rather than authored: a hex run
|
|
285
|
+
// (a hashed/uuid-derived id), React's `:r0:`-style useId
|
|
286
|
+
// output, or blank. Rejected because "stable across a reload"
|
|
287
|
+
// is exactly the property a generated id does not have.
|
|
288
|
+
const GENERATED_ID = /[0-9a-f]{8}|:r[0-9a-z]+:|^\s*$/i;
|
|
289
|
+
const FORM_CONTROLS = ["input", "select", "textarea", "button"];
|
|
290
|
+
function escapeAttrValue(value) {
|
|
291
|
+
return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
292
|
+
}
|
|
293
|
+
function isUnique(candidate) {
|
|
294
|
+
try {
|
|
295
|
+
return el.ownerDocument.querySelectorAll(candidate).length === 1;
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
// An attribute value that produces an invalid selector (rare,
|
|
299
|
+
// but not impossible) is treated as "no candidate" rather
|
|
300
|
+
// than thrown — the caller falls through to the next tier.
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/** The element's own stable-hook selector, or null. Used both on the target itself and while climbing for a structural path's anchor. */
|
|
305
|
+
function stableHookSelector(node) {
|
|
306
|
+
const testId = node.getAttribute("data-testid");
|
|
307
|
+
if (testId !== null && testId.trim() !== "")
|
|
308
|
+
return `[data-testid="${escapeAttrValue(testId)}"]`;
|
|
309
|
+
const testAttr = node.getAttribute("data-test");
|
|
310
|
+
if (testAttr !== null && testAttr.trim() !== "")
|
|
311
|
+
return `[data-test="${escapeAttrValue(testAttr)}"]`;
|
|
312
|
+
const id = node.getAttribute("id");
|
|
313
|
+
if (id !== null && !GENERATED_ID.test(id))
|
|
314
|
+
return `[id="${escapeAttrValue(id)}"]`;
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
function nthOfTypeSegment(node, parent) {
|
|
318
|
+
const tag = node.tagName.toLowerCase();
|
|
319
|
+
const siblings = parent.querySelectorAll(`:scope > ${tag}`);
|
|
320
|
+
if (siblings.length <= 1)
|
|
321
|
+
return tag;
|
|
322
|
+
for (let i = 0; i < siblings.length; i += 1) {
|
|
323
|
+
if (siblings.item(i) === node)
|
|
324
|
+
return `${tag}:nth-of-type(${i + 1})`;
|
|
325
|
+
}
|
|
326
|
+
return tag;
|
|
327
|
+
}
|
|
328
|
+
/** A bounded path from the nearest ancestor carrying a stable hook, capped at 6 segments. Null when none is found in range. */
|
|
329
|
+
function structuralPath(target) {
|
|
330
|
+
const segments = [];
|
|
331
|
+
let node = target;
|
|
332
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
333
|
+
const parent = node.parentElement;
|
|
334
|
+
if (parent === null)
|
|
335
|
+
return null;
|
|
336
|
+
segments.unshift(nthOfTypeSegment(node, parent));
|
|
337
|
+
const hook = stableHookSelector(parent);
|
|
338
|
+
if (hook !== null) {
|
|
339
|
+
const candidate = `${hook} > ${segments.join(" > ")}`;
|
|
340
|
+
return isUnique(candidate) ? candidate : null;
|
|
341
|
+
}
|
|
342
|
+
node = parent;
|
|
343
|
+
}
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
346
|
+
function computeSelector(target) {
|
|
347
|
+
// Priority order: first candidate that is unique in the whole
|
|
348
|
+
// document wins. Each tier is checked for uniqueness on its
|
|
349
|
+
// own — a data-testid shared by two elements is not
|
|
350
|
+
// addressable either, and the next tier gets its turn rather
|
|
351
|
+
// than giving up at the first attribute that happens to be
|
|
352
|
+
// present.
|
|
353
|
+
const testId = target.getAttribute("data-testid");
|
|
354
|
+
if (testId !== null && testId.trim() !== "") {
|
|
355
|
+
const candidate = `[data-testid="${escapeAttrValue(testId)}"]`;
|
|
356
|
+
if (isUnique(candidate))
|
|
357
|
+
return candidate;
|
|
358
|
+
}
|
|
359
|
+
const testAttr = target.getAttribute("data-test");
|
|
360
|
+
if (testAttr !== null && testAttr.trim() !== "") {
|
|
361
|
+
const candidate = `[data-test="${escapeAttrValue(testAttr)}"]`;
|
|
362
|
+
if (isUnique(candidate))
|
|
363
|
+
return candidate;
|
|
364
|
+
}
|
|
365
|
+
const id = target.getAttribute("id");
|
|
366
|
+
if (id !== null && !GENERATED_ID.test(id)) {
|
|
367
|
+
const candidate = `[id="${escapeAttrValue(id)}"]`;
|
|
368
|
+
if (isUnique(candidate))
|
|
369
|
+
return candidate;
|
|
370
|
+
}
|
|
371
|
+
const controlTag = target.tagName.toLowerCase();
|
|
372
|
+
const name = target.getAttribute("name");
|
|
373
|
+
if (name !== null && name.trim() !== "" && FORM_CONTROLS.includes(controlTag)) {
|
|
374
|
+
const candidate = `${controlTag}[name="${escapeAttrValue(name)}"]`;
|
|
375
|
+
if (isUnique(candidate))
|
|
376
|
+
return candidate;
|
|
377
|
+
}
|
|
378
|
+
const explicitRole = target.getAttribute("role");
|
|
379
|
+
const ariaLabel = target.getAttribute("aria-label");
|
|
380
|
+
if (explicitRole !== null && ariaLabel !== null && ariaLabel.trim() !== "") {
|
|
381
|
+
const candidate = `[role="${escapeAttrValue(explicitRole)}"][aria-label="${escapeAttrValue(ariaLabel)}"]`;
|
|
382
|
+
if (isUnique(candidate))
|
|
383
|
+
return candidate;
|
|
384
|
+
}
|
|
385
|
+
return structuralPath(target);
|
|
386
|
+
}
|
|
387
|
+
return { role, name: name.slice(0, 200), selector: computeSelector(el) };
|
|
191
388
|
})
|
|
192
389
|
.catch(() => null);
|
|
193
390
|
if (described === null) {
|
|
@@ -199,10 +396,7 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
199
396
|
ref,
|
|
200
397
|
role: described.role,
|
|
201
398
|
name: described.name,
|
|
202
|
-
|
|
203
|
-
// selector string. Reporting a fabricated CSS path here would be a
|
|
204
|
-
// selector nothing ever uses and that might not even match.
|
|
205
|
-
selector: `(held handle ${ref})`,
|
|
399
|
+
selector: described.selector,
|
|
206
400
|
};
|
|
207
401
|
refs.set(ref, { element, handle });
|
|
208
402
|
elements.push(element);
|
|
@@ -216,7 +410,7 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
216
410
|
// `requestfinished` fires after the page's own handler resolves, so a
|
|
217
411
|
// drain immediately after a click would miss the request the click
|
|
218
412
|
// caused — which is the request this whole feature exists to witness.
|
|
219
|
-
await
|
|
413
|
+
await settleAfterAction("click", ref);
|
|
220
414
|
},
|
|
221
415
|
async type(ref, text) {
|
|
222
416
|
assertUsable();
|
|
@@ -228,18 +422,19 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
228
422
|
else
|
|
229
423
|
throw new Error("this Playwright build exposes no keystroke-level typing method");
|
|
230
424
|
recordAction("type", ref, "append");
|
|
231
|
-
await
|
|
425
|
+
await settleAfterAction("type", ref);
|
|
232
426
|
},
|
|
233
427
|
async fill(ref, text) {
|
|
234
428
|
assertUsable();
|
|
235
429
|
await resolve(ref).handle.fill(text);
|
|
236
430
|
recordAction("fill", ref, "replace");
|
|
237
|
-
await
|
|
431
|
+
await settleAfterAction("fill", ref);
|
|
238
432
|
},
|
|
239
433
|
async drainEvidence() {
|
|
240
|
-
const observation = collect(emitted, actions);
|
|
434
|
+
const observation = collect(emitted, actions, unsettled);
|
|
241
435
|
emitted.length = 0;
|
|
242
436
|
actions.length = 0;
|
|
437
|
+
unsettled.length = 0;
|
|
243
438
|
return observation;
|
|
244
439
|
},
|
|
245
440
|
async close() {
|
|
@@ -252,9 +447,10 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
252
447
|
await actionCollector.stop().catch(() => { });
|
|
253
448
|
await consoleCollector.stop().catch(() => { });
|
|
254
449
|
await networkCollector.stop().catch(() => { });
|
|
255
|
-
const observation = collect(emitted, actions);
|
|
450
|
+
const observation = collect(emitted, actions, unsettled);
|
|
256
451
|
emitted.length = 0;
|
|
257
452
|
actions.length = 0;
|
|
453
|
+
unsettled.length = 0;
|
|
258
454
|
await dropRefs();
|
|
259
455
|
await session.close().catch(() => { });
|
|
260
456
|
finalObservation = observation;
|
|
@@ -270,8 +466,11 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
270
466
|
* `NETWORK_RESPONSE` knows the status. A request with no response is kept with
|
|
271
467
|
* `status: null` — "never answered" is a different fact from a 500, and the
|
|
272
468
|
* port says so.
|
|
469
|
+
*
|
|
470
|
+
* Exported for `browser-request-outcome-mapping.test.ts` — see
|
|
471
|
+
* `EmittedEvidence`'s doc comment for why.
|
|
273
472
|
*/
|
|
274
|
-
function collect(emitted, actions) {
|
|
473
|
+
export function collect(emitted, actions, unsettled) {
|
|
275
474
|
// Two joins, in priority order, because `requestId` is a *correlation
|
|
276
475
|
// header* and not a transport id: it exists only when the application
|
|
277
476
|
// itself propagates one. The fixture's own delete sets `x-request-id`, so
|
|
@@ -279,20 +478,44 @@ function collect(emitted, actions) {
|
|
|
279
478
|
// for every request the page issued without one — which is most of them.
|
|
280
479
|
const statusByRequestId = new Map();
|
|
281
480
|
const statusByUrl = new Map();
|
|
481
|
+
// B3: the same two joins, for `outcome`. `descry-runtime` stamps
|
|
482
|
+
// `outcome: "answered"` on every `NETWORK_RESPONSE` and `"unanswered"` on a
|
|
483
|
+
// paired `HTTP_ERROR` (a real `requestfailed`, a collector timeout, or a
|
|
484
|
+
// WebSocket `socketerror`); it never emits `"pending"` itself — a request
|
|
485
|
+
// still open when the drain runs simply has no terminal event at all,
|
|
486
|
+
// which is why `pairedRequestIds`/`pairedUrls` below track "a terminal
|
|
487
|
+
// event existed" separately from "and it named a recognisable outcome".
|
|
488
|
+
const outcomeByRequestId = new Map();
|
|
489
|
+
const outcomeByUrl = new Map();
|
|
490
|
+
const pairedRequestIds = new Set();
|
|
491
|
+
const pairedUrls = new Set();
|
|
282
492
|
for (const evidence of emitted) {
|
|
283
|
-
if (evidence.eventType !== "NETWORK_RESPONSE")
|
|
284
|
-
continue;
|
|
285
|
-
const status = evidence.payload["status"];
|
|
286
|
-
if (typeof status !== "number")
|
|
493
|
+
if (evidence.eventType !== "NETWORK_RESPONSE" && evidence.eventType !== "HTTP_ERROR")
|
|
287
494
|
continue;
|
|
288
|
-
if (evidence.requestId !== null)
|
|
289
|
-
statusByRequestId.set(evidence.requestId, status);
|
|
290
495
|
const url = evidence.payload["url"];
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
// asking about.
|
|
496
|
+
if (evidence.requestId !== null)
|
|
497
|
+
pairedRequestIds.add(evidence.requestId);
|
|
294
498
|
if (typeof url === "string")
|
|
295
|
-
|
|
499
|
+
pairedUrls.add(url);
|
|
500
|
+
if (evidence.eventType === "NETWORK_RESPONSE") {
|
|
501
|
+
const status = evidence.payload["status"];
|
|
502
|
+
if (typeof status === "number") {
|
|
503
|
+
if (evidence.requestId !== null)
|
|
504
|
+
statusByRequestId.set(evidence.requestId, status);
|
|
505
|
+
// Last response wins: a page that requests the same URL twice reports
|
|
506
|
+
// the most recent outcome, which is the one a caller reading this
|
|
507
|
+
// reply is asking about.
|
|
508
|
+
if (typeof url === "string")
|
|
509
|
+
statusByUrl.set(url, status);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
const outcome = requestOutcomeOf(evidence.payload);
|
|
513
|
+
if (outcome !== undefined) {
|
|
514
|
+
if (evidence.requestId !== null)
|
|
515
|
+
outcomeByRequestId.set(evidence.requestId, outcome);
|
|
516
|
+
if (typeof url === "string")
|
|
517
|
+
outcomeByUrl.set(url, outcome);
|
|
518
|
+
}
|
|
296
519
|
}
|
|
297
520
|
const requests = [];
|
|
298
521
|
const consoleErrors = [];
|
|
@@ -302,14 +525,24 @@ function collect(emitted, actions) {
|
|
|
302
525
|
const url = evidence.payload["url"];
|
|
303
526
|
if (typeof method !== "string" || typeof url !== "string")
|
|
304
527
|
continue;
|
|
528
|
+
const requestId = evidence.requestId;
|
|
529
|
+
const pairedOutcome = (requestId === null ? undefined : outcomeByRequestId.get(requestId)) ?? outcomeByUrl.get(url);
|
|
530
|
+
const wasPaired = (requestId !== null && pairedRequestIds.has(requestId)) || pairedUrls.has(url);
|
|
531
|
+
// A recognised outcome from the paired terminal event wins; no terminal
|
|
532
|
+
// event at all means the request was still in flight when the drain
|
|
533
|
+
// happened, so "pending"; a terminal event that exists but names no
|
|
534
|
+
// recognisable outcome (an older `descry-runtime` build) leaves the
|
|
535
|
+
// field undefined rather than guessing — `isFailedRequest`'s documented
|
|
536
|
+
// fallback is what handles that case, not this function.
|
|
537
|
+
const outcome = pairedOutcome ?? (wasPaired ? undefined : "pending");
|
|
305
538
|
requests.push({
|
|
306
539
|
method,
|
|
307
540
|
url,
|
|
308
|
-
status: (
|
|
309
|
-
|
|
310
|
-
null,
|
|
541
|
+
status: (requestId === null ? undefined : statusByRequestId.get(requestId)) ?? statusByUrl.get(url) ?? null,
|
|
542
|
+
...(outcome === undefined ? {} : { outcome }),
|
|
311
543
|
stackText: renderStack(evidence.stackTrace),
|
|
312
544
|
stackTrace: evidence.stackTrace,
|
|
545
|
+
scriptUrlMapping: scriptUrlOutcomesOf(evidence.payload),
|
|
313
546
|
at: evidence.timestamp,
|
|
314
547
|
});
|
|
315
548
|
continue;
|
|
@@ -325,11 +558,58 @@ function collect(emitted, actions) {
|
|
|
325
558
|
consoleErrors.push({
|
|
326
559
|
text: typeof text === "string" ? text : JSON.stringify(evidence.payload),
|
|
327
560
|
stackText: renderStack(evidence.stackTrace),
|
|
561
|
+
scriptUrlMapping: scriptUrlOutcomesOf(evidence.payload),
|
|
328
562
|
at: evidence.timestamp,
|
|
329
563
|
});
|
|
330
564
|
}
|
|
331
565
|
}
|
|
332
|
-
return { actions: [...actions], consoleErrors, requests };
|
|
566
|
+
return { actions: [...actions], consoleErrors, requests, unsettled: [...unsettled] };
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Reads a terminal event's `outcome` off an untyped payload.
|
|
570
|
+
*
|
|
571
|
+
* Validated rather than cast, exactly like `scriptUrlOutcomesOf` below: this
|
|
572
|
+
* crosses a package boundary — the field is `@descryy/runtime-browser`'s to
|
|
573
|
+
* set, and this build does not depend on that package's types — so an
|
|
574
|
+
* absent or unrecognised value must degrade to "no outcome reported", never
|
|
575
|
+
* be cast through as one of the three known literals it might not actually
|
|
576
|
+
* be.
|
|
577
|
+
*/
|
|
578
|
+
function requestOutcomeOf(payload) {
|
|
579
|
+
const raw = payload["outcome"];
|
|
580
|
+
if (raw === "answered" || raw === "unanswered" || raw === "pending")
|
|
581
|
+
return raw;
|
|
582
|
+
return undefined;
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* Reads the collector's `scriptUrlMapping` off an untyped payload.
|
|
586
|
+
*
|
|
587
|
+
* Validated rather than cast. This crosses a package boundary — the shape is
|
|
588
|
+
* `@descryy/runtime-browser`'s and this build does not even depend on it — so
|
|
589
|
+
* a malformed or absent field must degrade to "no mapping was reported",
|
|
590
|
+
* never to a half-populated outcome that reads like a real one.
|
|
591
|
+
*/
|
|
592
|
+
function scriptUrlOutcomesOf(payload) {
|
|
593
|
+
const raw = payload["scriptUrlMapping"];
|
|
594
|
+
if (!Array.isArray(raw))
|
|
595
|
+
return [];
|
|
596
|
+
const outcomes = [];
|
|
597
|
+
for (const entry of raw) {
|
|
598
|
+
if (typeof entry !== "object" || entry === null)
|
|
599
|
+
continue;
|
|
600
|
+
const record = entry;
|
|
601
|
+
const url = record["url"];
|
|
602
|
+
if (typeof url !== "string")
|
|
603
|
+
continue;
|
|
604
|
+
const mapped = record["mapped"];
|
|
605
|
+
const reason = record["reason"];
|
|
606
|
+
outcomes.push({
|
|
607
|
+
url,
|
|
608
|
+
mapped: typeof mapped === "string" ? mapped : null,
|
|
609
|
+
reason: typeof reason === "string" ? reason : null,
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
return outcomes;
|
|
333
613
|
}
|
|
334
614
|
/**
|
|
335
615
|
* A short, readable rendering of a parsed stack.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-driver.js","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"playwright-driver.js","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Where a tool gets a browser.
|
|
3
3
|
*
|
|
4
|
-
* `@descryy/runtime-browser` is
|
|
5
|
-
* has
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `@descryy/runtime-browser` is published and declared as a dependency of this
|
|
5
|
+
* package, so a complete install has a real driver in it. It is still imported by
|
|
6
|
+
* specifier at call time rather than statically — that indirection is the
|
|
7
|
+
* injection seam the tests drive the settle logic through, against a fake module
|
|
8
|
+
* with no real browser involved (see `playwright-driver.ts`) — and an import can
|
|
9
|
+
* still fail for reasons an install does not rule out: a pruned dependency tree,
|
|
10
|
+
* or a Chromium binary that was never downloaded. That absence is handled the way
|
|
11
|
+
* this codebase handles every expected inability: as a **named refusal with a
|
|
12
|
+
* remedy**, returned rather than thrown, and never as a tool that quietly does
|
|
13
|
+
* nothing.
|
|
8
14
|
*
|
|
9
15
|
* Rule 7 is the whole point of this file. A browser tool in a build with no
|
|
10
16
|
* browser backend must say *"this build cannot do that, and here is why"* —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE7B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAA;CAAE,GAAG,yBAAyB,CAAC;AAEnI;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAE,yBAO3C,CAAC"}
|
package/dist/browser/provider.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Where a tool gets a browser.
|
|
3
3
|
*
|
|
4
|
-
* `@descryy/runtime-browser` is
|
|
5
|
-
* has
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `@descryy/runtime-browser` is published and declared as a dependency of this
|
|
5
|
+
* package, so a complete install has a real driver in it. It is still imported by
|
|
6
|
+
* specifier at call time rather than statically — that indirection is the
|
|
7
|
+
* injection seam the tests drive the settle logic through, against a fake module
|
|
8
|
+
* with no real browser involved (see `playwright-driver.ts`) — and an import can
|
|
9
|
+
* still fail for reasons an install does not rule out: a pruned dependency tree,
|
|
10
|
+
* or a Chromium binary that was never downloaded. That absence is handled the way
|
|
11
|
+
* this codebase handles every expected inability: as a **named refusal with a
|
|
12
|
+
* remedy**, returned rather than thrown, and never as a tool that quietly does
|
|
13
|
+
* nothing.
|
|
8
14
|
*
|
|
9
15
|
* Rule 7 is the whole point of this file. A browser tool in a build with no
|
|
10
16
|
* browser backend must say *"this build cannot do that, and here is why"* —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA+BH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA8B;IACtE,SAAS,EAAE,KAAK;IAChB,MAAM,EACJ,wGAAwG;QACxG,6GAA6G;QAC7G,2CAA2C;IAC7C,MAAM,EAAE,2EAA2E;CACpF,CAAC"}
|
|
@@ -105,6 +105,15 @@ export interface ScenarioReplay {
|
|
|
105
105
|
readonly graph: BrowserGraphWrite;
|
|
106
106
|
/** Set when the session went away mid-replay — a crash, a reap, a disconnect. Null on a replay that ran to its own end. */
|
|
107
107
|
readonly sessionEnded: DeadSession | null;
|
|
108
|
+
/**
|
|
109
|
+
* True when the call's own signal was aborted mid-replay.
|
|
110
|
+
*
|
|
111
|
+
* Reported rather than folded into `outcome` alone, because "stopped because
|
|
112
|
+
* the caller cancelled" and "stopped because a step would not resolve" are
|
|
113
|
+
* different facts about the run and only one of them says anything about the
|
|
114
|
+
* application.
|
|
115
|
+
*/
|
|
116
|
+
readonly cancelled: boolean;
|
|
108
117
|
readonly notes: readonly string[];
|
|
109
118
|
}
|
|
110
119
|
/** True when replaying this scenario would change the running application. A navigate-only scenario would not. */
|