@enricai/barnacle 1.9.11 → 1.9.12

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 (31) hide show
  1. package/dist/scraper/browser-click-expr.d.ts +44 -0
  2. package/dist/scraper/browser-click-expr.d.ts.map +1 -0
  3. package/dist/scraper/browser-click-expr.js +69 -0
  4. package/dist/scraper/browser-click-expr.js.map +1 -0
  5. package/dist/scraper/deep-locator-candidates.d.ts +43 -11
  6. package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
  7. package/dist/scraper/deep-locator-candidates.js +72 -19
  8. package/dist/scraper/deep-locator-candidates.js.map +1 -1
  9. package/dist/scraper/deep-locator-click.d.ts +40 -2
  10. package/dist/scraper/deep-locator-click.d.ts.map +1 -1
  11. package/dist/scraper/deep-locator-click.js +29 -3
  12. package/dist/scraper/deep-locator-click.js.map +1 -1
  13. package/dist/scraper/deep-locator-fake.d.ts.map +1 -1
  14. package/dist/scraper/deep-locator-fake.js +1 -0
  15. package/dist/scraper/deep-locator-fake.js.map +1 -1
  16. package/dist/scraper/deep-locator-scan.d.ts +9 -5
  17. package/dist/scraper/deep-locator-scan.d.ts.map +1 -1
  18. package/dist/scraper/deep-locator-scan.js +44 -14
  19. package/dist/scraper/deep-locator-scan.js.map +1 -1
  20. package/dist/scraper/deep-query.d.ts +5 -5
  21. package/dist/scraper/deep-query.d.ts.map +1 -1
  22. package/dist/scraper/deep-query.js +7 -9
  23. package/dist/scraper/deep-query.js.map +1 -1
  24. package/dist/scraper/flow-runner.d.ts.map +1 -1
  25. package/dist/scraper/flow-runner.js +36 -6
  26. package/dist/scraper/flow-runner.js.map +1 -1
  27. package/dist/scraper/submit-control.d.ts +5 -3
  28. package/dist/scraper/submit-control.d.ts.map +1 -1
  29. package/dist/scraper/submit-control.js +7 -7
  30. package/dist/scraper/submit-control.js.map +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Shared browser-context click-activation snippet. Three primitives —
3
+ * `buildClickFrameCandidateExpr` (`deep-locator-scan.ts`),
4
+ * `buildDeepSubmitClickExpr` (`deep-query.ts`), and `buildClickByDeepIndexExpr`
5
+ * (`submit-control.ts`) — each need to activate a resolved element from inside
6
+ * a `page.evaluate`/`Frame.evaluate` string. They used to dispatch bare
7
+ * `new Event("mousedown"/"mouseup"/"click", { bubbles: true })`, which BUBBLES
8
+ * (so analytics/telemetry listeners fire) but is NOT a `MouseEvent`/`PointerEvent`
9
+ * instance — React's synthetic-event system and design-system widgets (Base Web,
10
+ * etc.) refuse a bare `Event` as a real user activation. The observed symptom on
11
+ * a markerless multi-select wizard: an option/toggle click reached the element
12
+ * and its analytics pixel recorded the click, yet the widget's "N selected"
13
+ * counter stayed flat because the selection never registered. This snippet
14
+ * dispatches a realistic `PointerEvent`/`MouseEvent` gesture
15
+ * (`pointerdown → mousedown → pointerup → mouseup`) and then triggers the
16
+ * activation with EXACTLY ONE click: native `el.click()` when the element has it
17
+ * (the trusted-path activation a `<button>` toggle listens for), else a single
18
+ * synthetic `MouseEvent("click")`. It must never do BOTH — a synthetic `click`
19
+ * dispatch plus a native `click()` fires a toggle handler twice
20
+ * (select → deselect = net zero), re-creating the very phantom this snippet
21
+ * exists to cure. Kept as a single interpolated string so all four primitives
22
+ * stay identical (DRY) rather than drifting copies.
23
+ */
24
+ /**
25
+ * Emits a browser-context statement block that activates the element bound to
26
+ * `elVar`: focus, then a `pointerdown → mousedown → pointerup → mouseup` gesture
27
+ * using real `MouseEvent`/`PointerEvent` constructors (feature-detecting
28
+ * `PointerEvent`, since a non-pointer environment still has `MouseEvent`),
29
+ * followed by EXACTLY ONE click activation.
30
+ *
31
+ * `elVar` is interpolated verbatim as an already-in-scope identifier — the
32
+ * caller resolves the element (e.g. `const el = matches[index]`) before
33
+ * interpolating this block. The single click is delivered via native
34
+ * `elVar.click()` when the element exposes one (every `HTMLElement` does; it is
35
+ * the trusted-path activation that drives React/Base Web toggle state), and via
36
+ * one synthetic `MouseEvent("click")` ONLY as the `else` for a non-`HTMLElement`
37
+ * that has no native `click()`. The two paths are mutually exclusive on purpose:
38
+ * dispatching a synthetic `click` AND calling native `click()` would fire the
39
+ * element's handler twice, and on a toggle that is select → deselect = net zero.
40
+ * The gesture events (down/up) are not click activations, so they never
41
+ * double-fire the handler.
42
+ */
43
+ export declare function clickActivationExpr(elVar: string): string;
44
+ //# sourceMappingURL=browser-click-expr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-click-expr.d.ts","sourceRoot":"","sources":["../../src/scraper/browser-click-expr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBzD"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * Shared browser-context click-activation snippet. Three primitives —
4
+ * `buildClickFrameCandidateExpr` (`deep-locator-scan.ts`),
5
+ * `buildDeepSubmitClickExpr` (`deep-query.ts`), and `buildClickByDeepIndexExpr`
6
+ * (`submit-control.ts`) — each need to activate a resolved element from inside
7
+ * a `page.evaluate`/`Frame.evaluate` string. They used to dispatch bare
8
+ * `new Event("mousedown"/"mouseup"/"click", { bubbles: true })`, which BUBBLES
9
+ * (so analytics/telemetry listeners fire) but is NOT a `MouseEvent`/`PointerEvent`
10
+ * instance — React's synthetic-event system and design-system widgets (Base Web,
11
+ * etc.) refuse a bare `Event` as a real user activation. The observed symptom on
12
+ * a markerless multi-select wizard: an option/toggle click reached the element
13
+ * and its analytics pixel recorded the click, yet the widget's "N selected"
14
+ * counter stayed flat because the selection never registered. This snippet
15
+ * dispatches a realistic `PointerEvent`/`MouseEvent` gesture
16
+ * (`pointerdown → mousedown → pointerup → mouseup`) and then triggers the
17
+ * activation with EXACTLY ONE click: native `el.click()` when the element has it
18
+ * (the trusted-path activation a `<button>` toggle listens for), else a single
19
+ * synthetic `MouseEvent("click")`. It must never do BOTH — a synthetic `click`
20
+ * dispatch plus a native `click()` fires a toggle handler twice
21
+ * (select → deselect = net zero), re-creating the very phantom this snippet
22
+ * exists to cure. Kept as a single interpolated string so all four primitives
23
+ * stay identical (DRY) rather than drifting copies.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.clickActivationExpr = clickActivationExpr;
27
+ /**
28
+ * Emits a browser-context statement block that activates the element bound to
29
+ * `elVar`: focus, then a `pointerdown → mousedown → pointerup → mouseup` gesture
30
+ * using real `MouseEvent`/`PointerEvent` constructors (feature-detecting
31
+ * `PointerEvent`, since a non-pointer environment still has `MouseEvent`),
32
+ * followed by EXACTLY ONE click activation.
33
+ *
34
+ * `elVar` is interpolated verbatim as an already-in-scope identifier — the
35
+ * caller resolves the element (e.g. `const el = matches[index]`) before
36
+ * interpolating this block. The single click is delivered via native
37
+ * `elVar.click()` when the element exposes one (every `HTMLElement` does; it is
38
+ * the trusted-path activation that drives React/Base Web toggle state), and via
39
+ * one synthetic `MouseEvent("click")` ONLY as the `else` for a non-`HTMLElement`
40
+ * that has no native `click()`. The two paths are mutually exclusive on purpose:
41
+ * dispatching a synthetic `click` AND calling native `click()` would fire the
42
+ * element's handler twice, and on a toggle that is select → deselect = net zero.
43
+ * The gesture events (down/up) are not click activations, so they never
44
+ * double-fire the handler.
45
+ */
46
+ function clickActivationExpr(elVar) {
47
+ return `{
48
+ if (typeof ${elVar}.focus === "function") { try { ${elVar}.focus(); } catch (e) {} }
49
+ const __ceOpts = { bubbles: true, cancelable: true, composed: true, view: (typeof window !== "undefined" ? window : undefined), button: 0 };
50
+ const __mouse = (type, buttons) => {
51
+ try { return new MouseEvent(type, Object.assign({}, __ceOpts, { buttons: buttons })); }
52
+ catch (e) { return new Event(type, { bubbles: true, cancelable: true }); }
53
+ };
54
+ const __pointer = (type, buttons) => {
55
+ if (typeof PointerEvent === "function") {
56
+ try { return new PointerEvent(type, Object.assign({}, __ceOpts, { buttons: buttons, pointerType: "mouse", isPrimary: true })); }
57
+ catch (e) {}
58
+ }
59
+ return __mouse(type, buttons);
60
+ };
61
+ ${elVar}.dispatchEvent(__pointer("pointerdown", 1));
62
+ ${elVar}.dispatchEvent(__mouse("mousedown", 1));
63
+ ${elVar}.dispatchEvent(__pointer("pointerup", 0));
64
+ ${elVar}.dispatchEvent(__mouse("mouseup", 0));
65
+ if (typeof ${elVar}.click === "function") { try { ${elVar}.click(); } catch (e) {} }
66
+ else { ${elVar}.dispatchEvent(__mouse("click", 0)); }
67
+ }`;
68
+ }
69
+ //# sourceMappingURL=browser-click-expr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-click-expr.js","sourceRoot":"","sources":["../../src/scraper/browser-click-expr.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,6BAAoC,KAAa;IAC/C,OAAO;iBACQ,KAAK,kCAAkC,KAAK;;;;;;;;;;;;;MAavD,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;iBACM,KAAK,kCAAkC,KAAK;aAChD,KAAK;IACd,CAAC;AACL,CAAC"}
@@ -59,6 +59,15 @@ export interface DeepLocatorCandidate {
59
59
  * enumeration fallback.
60
60
  */
61
61
  accessibleText: string;
62
+ /**
63
+ * `true` when the batched scan flagged this candidate as a navigation/advance
64
+ * control (BACK/Next/Cancel — see {@link IS_NAV_CANDIDATE_EXPR}). Feeds
65
+ * {@link scoreCandidate}'s nav-demotion tier so a "select '<option>'" step
66
+ * never resolves to the wizard's back/next button. Always `false` on the
67
+ * legacy per-candidate path (which can't read `data-testid`); there
68
+ * {@link scoreCandidate} re-derives the text-based portion of the nav check.
69
+ */
70
+ isNav: boolean;
62
71
  }
63
72
  /** One quoted phrase from an instruction, tagged with whether a negation marker (`NEGATION_MARKERS`) governs it. See {@link extractTaggedPhrases}. */
64
73
  export interface TaggedPhrase {
@@ -82,18 +91,41 @@ export interface TaggedPhrase {
82
91
  export declare function extractTaggedPhrases(instruction: string): TaggedPhrase[];
83
92
  /**
84
93
  * Scores one candidate's relevance to `instruction`'s tagged phrases, higher
85
- * is more relevant. Parallels `submit-control.ts`'s tiered-ranking shape:
86
- * negative signal is checked first and wins outright (a candidate matching
87
- * ANY negated phrase is actively demoted below "no match" a decoy sibling
88
- * button is worse than an unrelated structural node), then positive
89
- * exact/substring match tiers, falling through to 0 for empty or
90
- * unrelated text so a structural container with no accessible text can
91
- * never outrank a candidate whose text actually matches the instruction.
92
- * Exported so `flow-runner.ts` can detect a tie for the top rank among
93
- * `resolveDeepLocatorCandidates`'s already-sorted output (see
94
- * {@link extractTaggedPhrases}'s docblock).
94
+ * is more relevant. Parallels `submit-control.ts`'s tiered-ranking shape but
95
+ * adds two tiers the markerless-widget bug report needs: a nav/back demotion
96
+ * (so a "select '<option>'" step never lands on the wizard's BACK/Next button,
97
+ * whose own text may exact-match nothing OR be empty) and an ends-with tier (so
98
+ * an option whose accessible name is polluted by a leading icon-glyph name —
99
+ * an icon-font/`<svg><title>` prefix rendering as `"<IconName><Label>"` still
100
+ * beats a bare exact-text decoy by matching on the trailing label).
101
+ *
102
+ * Strict-priority tiers, first match wins:
103
+ * - negated-phrase match → `-2` (worst: a decoy sibling is worse than an
104
+ * unrelated structural node — the invariant the original tiering established),
105
+ * - exact positive → `4`,
106
+ * - ends-with a positive → `3` (the icon-glyph suffix case),
107
+ * - contains a positive (either direction) → `2`,
108
+ * - nav/back control with NO positive textual match → `-1`,
109
+ * - else → `0`.
110
+ *
111
+ * Crucially, the nav/back demotion sits BELOW the positive tiers, not above
112
+ * them: it only sinks a candidate that would otherwise score `0` (no phrase
113
+ * match at all) — the empty BACK button, or a bare "Next"/"Cancel" chrome
114
+ * button the instruction doesn't name. A candidate that positively matches the
115
+ * instruction phrase — exact, ends-with, or contains — is the control the step
116
+ * named and keeps its positive score even if its label happens to contain a nav
117
+ * word (`select 'Next'` → the "Next" option scores 4; "primary Next" whose step
118
+ * quotes 'Next' scores 2 via containment). This makes the demotion a tie-breaker
119
+ * against chrome, never an override of a real target.
120
+ *
121
+ * `isNav` comes from the batched scan (`data-testid` + empty-text signals it
122
+ * alone can see); the text-word portion is re-derived here via
123
+ * {@link matchesNavText} so the legacy per-candidate path (always `isNav=false`)
124
+ * still demotes a bare "Back"/"Next". Exported so `flow-runner.ts` can detect a
125
+ * tie for the top rank among `resolveDeepLocatorCandidates`'s already-sorted
126
+ * output (see {@link extractTaggedPhrases}'s docblock).
95
127
  */
96
- export declare function scoreCandidate(accessibleText: string, phrases: TaggedPhrase[]): number;
128
+ export declare function scoreCandidate(accessibleText: string, phrases: TaggedPhrase[], isNav?: boolean): number;
97
129
  /**
98
130
  * Enumerates every element `page.deepLocator()` matches inside the frame
99
131
  * scoped by `frameSelector`, ranked by relevance to `instruction` (highest
@@ -1 +1 @@
1
- {"version":3,"file":"deep-locator-candidates.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAWrD,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AA2BhC,sJAAsJ;AACtJ,MAAM,WAAW,yBAAyB;IACxC,mIAAmI;IACnI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uJAAuJ;IACvJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAKD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,kJAAkJ;IAClJ,KAAK,EAAE,MAAM,CAAC;IACd,gLAAgL;IAChL,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAsBD,sJAAsJ;AACtJ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CAaxE;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAStF;AA6JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,cAAc,GAAE,yBAA8B,GAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAuCjC;AAqDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,yBAA8B,GAC7C,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;;;GAQG"}
1
+ {"version":3,"file":"deep-locator-candidates.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAWrD,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AA2BhC,sJAAsJ;AACtJ,MAAM,WAAW,yBAAyB;IACxC,mIAAmI;IACnI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uJAAuJ;IACvJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAKD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,kJAAkJ;IAClJ,KAAK,EAAE,MAAM,CAAC;IACd,gLAAgL;IAChL,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAsBD,sJAAsJ;AACtJ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CAaxE;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,YAAY,EAAE,EACvB,KAAK,UAAQ,GACZ,MAAM,CAiBR;AA+JD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,cAAc,GAAE,yBAA8B,GAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAuCjC;AAqDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,yBAA8B,GAC7C,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;;;GAQG"}
@@ -89,31 +89,82 @@ function extractTaggedPhrases(instruction) {
89
89
  function normalize(text) {
90
90
  return text.replace(/\s+/g, " ").trim().toLowerCase();
91
91
  }
92
+ /**
93
+ * Nav/advance words that mark a control as chrome (BACK/Next/Cancel), matched
94
+ * with the same word-boundary predicate SHAPE `submit-control.ts`'s
95
+ * `NEGATIVE_TEXT_EXPR` uses, over a nav-word list that adds `"next"` (an advance
96
+ * button a "select '<option>'" step must be de-prioritized against). Kept here
97
+ * (not imported from that browser-context string) so {@link scoreCandidate} can
98
+ * re-derive the text portion of the nav check on the legacy per-candidate path,
99
+ * which can't read `data-testid` and so always arrives with `isNav === false`.
100
+ */
101
+ const NAV_TEXT_WORDS = [
102
+ "back",
103
+ "cancel",
104
+ "previous",
105
+ "next",
106
+ "close",
107
+ "save draft",
108
+ "save for later",
109
+ ];
110
+ /** True when `normalizedText` is one of {@link NAV_TEXT_WORDS} (whole-word / edge match), the text-only half of the scan's `IS_NAV_CANDIDATE_EXPR`. */
111
+ function matchesNavText(normalizedText) {
112
+ return NAV_TEXT_WORDS.some((n) => normalizedText === n || normalizedText.startsWith(`${n} `) || normalizedText.endsWith(` ${n}`));
113
+ }
92
114
  /**
93
115
  * Scores one candidate's relevance to `instruction`'s tagged phrases, higher
94
- * is more relevant. Parallels `submit-control.ts`'s tiered-ranking shape:
95
- * negative signal is checked first and wins outright (a candidate matching
96
- * ANY negated phrase is actively demoted below "no match" a decoy sibling
97
- * button is worse than an unrelated structural node), then positive
98
- * exact/substring match tiers, falling through to 0 for empty or
99
- * unrelated text so a structural container with no accessible text can
100
- * never outrank a candidate whose text actually matches the instruction.
101
- * Exported so `flow-runner.ts` can detect a tie for the top rank among
102
- * `resolveDeepLocatorCandidates`'s already-sorted output (see
103
- * {@link extractTaggedPhrases}'s docblock).
116
+ * is more relevant. Parallels `submit-control.ts`'s tiered-ranking shape but
117
+ * adds two tiers the markerless-widget bug report needs: a nav/back demotion
118
+ * (so a "select '<option>'" step never lands on the wizard's BACK/Next button,
119
+ * whose own text may exact-match nothing OR be empty) and an ends-with tier (so
120
+ * an option whose accessible name is polluted by a leading icon-glyph name —
121
+ * an icon-font/`<svg><title>` prefix rendering as `"<IconName><Label>"` still
122
+ * beats a bare exact-text decoy by matching on the trailing label).
123
+ *
124
+ * Strict-priority tiers, first match wins:
125
+ * - negated-phrase match → `-2` (worst: a decoy sibling is worse than an
126
+ * unrelated structural node — the invariant the original tiering established),
127
+ * - exact positive → `4`,
128
+ * - ends-with a positive → `3` (the icon-glyph suffix case),
129
+ * - contains a positive (either direction) → `2`,
130
+ * - nav/back control with NO positive textual match → `-1`,
131
+ * - else → `0`.
132
+ *
133
+ * Crucially, the nav/back demotion sits BELOW the positive tiers, not above
134
+ * them: it only sinks a candidate that would otherwise score `0` (no phrase
135
+ * match at all) — the empty BACK button, or a bare "Next"/"Cancel" chrome
136
+ * button the instruction doesn't name. A candidate that positively matches the
137
+ * instruction phrase — exact, ends-with, or contains — is the control the step
138
+ * named and keeps its positive score even if its label happens to contain a nav
139
+ * word (`select 'Next'` → the "Next" option scores 4; "primary Next" whose step
140
+ * quotes 'Next' scores 2 via containment). This makes the demotion a tie-breaker
141
+ * against chrome, never an override of a real target.
142
+ *
143
+ * `isNav` comes from the batched scan (`data-testid` + empty-text signals it
144
+ * alone can see); the text-word portion is re-derived here via
145
+ * {@link matchesNavText} so the legacy per-candidate path (always `isNav=false`)
146
+ * still demotes a bare "Back"/"Next". Exported so `flow-runner.ts` can detect a
147
+ * tie for the top rank among `resolveDeepLocatorCandidates`'s already-sorted
148
+ * output (see {@link extractTaggedPhrases}'s docblock).
104
149
  */
105
- function scoreCandidate(accessibleText, phrases) {
150
+ function scoreCandidate(accessibleText, phrases, isNav = false) {
106
151
  const normalizedText = normalize(accessibleText);
107
- if (!normalizedText)
108
- return 0;
109
152
  const positives = phrases.filter((p) => !p.negated).map((p) => normalize(p.text));
110
153
  const negatives = phrases.filter((p) => p.negated).map((p) => normalize(p.text));
111
- if (negatives.some((n) => n === normalizedText || normalizedText.includes(n)))
154
+ if (normalizedText.length > 0 &&
155
+ negatives.some((n) => n === normalizedText || normalizedText.includes(n))) {
156
+ return -2;
157
+ }
158
+ if (normalizedText.length > 0) {
159
+ if (positives.some((p) => p === normalizedText))
160
+ return 4;
161
+ if (positives.some((p) => normalizedText.endsWith(p)))
162
+ return 3;
163
+ if (positives.some((p) => normalizedText.includes(p) || p.includes(normalizedText)))
164
+ return 2;
165
+ }
166
+ if (isNav || matchesNavText(normalizedText))
112
167
  return -1;
113
- if (positives.some((p) => p === normalizedText))
114
- return 3;
115
- if (positives.some((p) => normalizedText.includes(p) || p.includes(normalizedText)))
116
- return 2;
117
168
  return 0;
118
169
  }
119
170
  /**
@@ -200,6 +251,7 @@ async function scanFrameCandidatesBatched(page, frameSelector, innerSelector, ho
200
251
  index: entry.index,
201
252
  selector: candidateSelector(hopSelector, entry.index),
202
253
  accessibleText: entry.text.trim(),
254
+ isNav: entry.isNav === true,
203
255
  }));
204
256
  }
205
257
  /**
@@ -238,6 +290,7 @@ async function enumerateCandidatesViaLegacyLoop(delegate, hopSelector, callTimeo
238
290
  index,
239
291
  selector: candidateSelector(hopSelector, index),
240
292
  accessibleText: accessibleText.trim(),
293
+ isNav: false,
241
294
  });
242
295
  }
243
296
  return candidates;
@@ -297,7 +350,7 @@ async function resolveDeepLocatorCandidates(page, frameSelector, innerSelector,
297
350
  .map((candidate, originalOrder) => ({
298
351
  candidate,
299
352
  originalOrder,
300
- score: scoreCandidate(candidate.accessibleText, phrases),
353
+ score: scoreCandidate(candidate.accessibleText, phrases, candidate.isNav),
301
354
  }))
302
355
  .sort((a, b) => b.score - a.score || a.originalOrder - b.originalOrder)
303
356
  .map(({ candidate }) => candidate);
@@ -1 +1 @@
1
- {"version":3,"file":"deep-locator-candidates.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deep-locator-candidates.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"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"}
@@ -39,20 +39,45 @@ export declare const DEFAULT_CLICK_CANDIDATE_ATTEMPT_CAP = 5;
39
39
  export type ClickCandidateFn = (candidate: DeepLocatorCandidate) => Promise<void>;
40
40
  /** Refuses a candidate before it's clicked — e.g. `flow-runner.ts`'s `isWizardExitAction` deny-list, injected so this module stays site-agnostic. */
41
41
  export type DenyCandidatePredicate = (candidate: DeepLocatorCandidate) => boolean;
42
+ /**
43
+ * Reads the running "N selected" counter AFTER a candidate's click resolved,
44
+ * returning the current count or `null` when no counter is exposed. Injected so
45
+ * this module stays site-agnostic and `Page`-free — `flow-runner.ts` supplies a
46
+ * reader that re-snapshots the frame and parses the count via
47
+ * `selectionCountFromSignature`. See {@link ClickCandidateCascadeOptions.readSelectionCount}.
48
+ */
49
+ export type ReadSelectionCountFn = () => Promise<number | null>;
42
50
  export interface ClickCandidateCascadeOptions {
43
51
  /** Skips a candidate without clicking it when this returns `true`. Optional — omit to click every non-not-actionable candidate in rank order. */
44
52
  denyCandidate?: DenyCandidatePredicate;
45
53
  /** Overrides {@link DEFAULT_CLICK_CANDIDATE_ATTEMPT_CAP}. */
46
54
  attemptCap?: number;
55
+ /**
56
+ * When supplied (alongside a numeric {@link baselineSelectionCount}), a
57
+ * candidate whose click RESOLVED but did not raise the selection count above
58
+ * the baseline is treated like a not-actionable rejection: the walk keeps
59
+ * going to the next candidate instead of reporting success. This is the
60
+ * next-best-candidate recovery for a markerless multi-select phantom (the
61
+ * #163/#164 counter veto knows the click didn't register; this feeds that
62
+ * back into re-resolution before a replan is spent). A `null` read means "no
63
+ * counter exposed" and never vetoes, mirroring `isSelectionCounterStalled`'s
64
+ * null-safety. Omit for non-selection steps — the walk then behaves exactly
65
+ * as before.
66
+ */
67
+ readSelectionCount?: ReadSelectionCountFn;
68
+ /** The pre-walk selection count; a post-click read at or below this counts as "did not register". Ignored unless {@link readSelectionCount} is set. `null` disables the check (counter-less widget). */
69
+ baselineSelectionCount?: number | null;
47
70
  }
48
71
  /** Outcome of a {@link clickFirstActionableCandidate} walk. */
49
72
  export interface ClickCandidateCascadeOutcome {
50
- /** `true` only when a candidate's click resolved (didn't reject). */
73
+ /** `true` only when a candidate's click resolved (didn't reject) AND, when a selection-count check is wired, registered the selection. */
51
74
  clicked: boolean;
52
75
  /** The candidate that was clicked, or `null` when the walk exhausted the list/cap without a successful click. */
53
76
  candidate: DeepLocatorCandidate | null;
54
77
  /** Selectors of every candidate this walk actually clicked (attempted), in attempt order — denied candidates are excluded since they were never clicked. */
55
78
  triedSelectors: string[];
79
+ /** Selectors of candidates that clicked cleanly but were rejected because the selection counter did not rise (a subset of {@link triedSelectors}). Empty unless {@link ClickCandidateCascadeOptions.readSelectionCount} vetoed at least one — lets the caller emit a "clicked but nothing registered" failure reason distinct from not-actionable. */
80
+ counterStalledSelectors: string[];
56
81
  }
57
82
  /**
58
83
  * Walks `candidates` in rank order, clicking each via `click` until one
@@ -65,7 +90,20 @@ export interface ClickCandidateCascadeOutcome {
65
90
  * with actionability (a detached frame, a wedged click's
66
91
  * `WatchdogTimeoutError`). Never throws on exhaustion — an exhausted list
67
92
  * (every candidate denied or not-actionable, or the cap reached) resolves to
68
- * `{ clicked: false, candidate: null, triedSelectors }` instead.
93
+ * `{ clicked: false, candidate: null, triedSelectors, counterStalledSelectors }`
94
+ * instead.
95
+ *
96
+ * When `readSelectionCount`/`baselineSelectionCount` are supplied, a click that
97
+ * RESOLVED but left the selection count at or below the baseline is treated
98
+ * like a not-actionable rejection — the walk advances to the next candidate
99
+ * instead of reporting a phantom success. A count that rose returns immediately
100
+ * (so a click that DID register never triggers a second click — the
101
+ * toggle-double-click guard), and a `null` read is never a veto (counter-less
102
+ * widget). Because the check runs after `click` already awaited its own settle,
103
+ * a synchronously-updated counter is visible; the only residual is a genuinely-
104
+ * registered click whose counter lags, which is the same false-negative the
105
+ * caller's late counter veto already tolerates today — behaviour is no worse,
106
+ * and now recovers via the next candidate.
69
107
  */
70
108
  export declare function clickFirstActionableCandidate(candidates: readonly DeepLocatorCandidate[], click: ClickCandidateFn, options?: ClickCandidateCascadeOptions): Promise<ClickCandidateCascadeOutcome>;
71
109
  //# sourceMappingURL=deep-locator-click.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deep-locator-click.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-click.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E;;;;;;;;;GASG;AACH,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElF,qJAAqJ;AACrJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,oBAAoB,KAAK,OAAO,CAAC;AAElF,MAAM,WAAW,4BAA4B;IAC3C,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,4BAA4B;IAC3C,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,iHAAiH;IACjH,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACvC,4JAA4J;IAC5J,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,4BAA4B,CAAC,CAoBvC"}
1
+ {"version":3,"file":"deep-locator-click.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-click.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E;;;;;;;;;GASG;AACH,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElF,qJAAqJ;AACrJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,oBAAoB,KAAK,OAAO,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEhE,MAAM,WAAW,4BAA4B;IAC3C,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C,wMAAwM;IACxM,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,+DAA+D;AAC/D,MAAM,WAAW,4BAA4B;IAC3C,0IAA0I;IAC1I,OAAO,EAAE,OAAO,CAAC;IACjB,iHAAiH;IACjH,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACvC,4JAA4J;IAC5J,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sVAAsV;IACtV,uBAAuB,EAAE,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,4BAA4B,CAAC,CAmCvC"}
@@ -44,11 +44,29 @@ exports.DEFAULT_CLICK_CANDIDATE_ATTEMPT_CAP = 5;
44
44
  * with actionability (a detached frame, a wedged click's
45
45
  * `WatchdogTimeoutError`). Never throws on exhaustion — an exhausted list
46
46
  * (every candidate denied or not-actionable, or the cap reached) resolves to
47
- * `{ clicked: false, candidate: null, triedSelectors }` instead.
47
+ * `{ clicked: false, candidate: null, triedSelectors, counterStalledSelectors }`
48
+ * instead.
49
+ *
50
+ * When `readSelectionCount`/`baselineSelectionCount` are supplied, a click that
51
+ * RESOLVED but left the selection count at or below the baseline is treated
52
+ * like a not-actionable rejection — the walk advances to the next candidate
53
+ * instead of reporting a phantom success. A count that rose returns immediately
54
+ * (so a click that DID register never triggers a second click — the
55
+ * toggle-double-click guard), and a `null` read is never a veto (counter-less
56
+ * widget). Because the check runs after `click` already awaited its own settle,
57
+ * a synchronously-updated counter is visible; the only residual is a genuinely-
58
+ * registered click whose counter lags, which is the same false-negative the
59
+ * caller's late counter veto already tolerates today — behaviour is no worse,
60
+ * and now recovers via the next candidate.
48
61
  */
49
62
  async function clickFirstActionableCandidate(candidates, click, options = {}) {
50
63
  const attemptCap = options.attemptCap ?? exports.DEFAULT_CLICK_CANDIDATE_ATTEMPT_CAP;
64
+ const { readSelectionCount, baselineSelectionCount } = options;
65
+ const checkCounter = readSelectionCount !== undefined &&
66
+ baselineSelectionCount !== undefined &&
67
+ baselineSelectionCount !== null;
51
68
  const triedSelectors = [];
69
+ const counterStalledSelectors = [];
52
70
  let attempts = 0;
53
71
  for (const candidate of candidates) {
54
72
  if (attempts >= attemptCap)
@@ -59,13 +77,21 @@ async function clickFirstActionableCandidate(candidates, click, options = {}) {
59
77
  triedSelectors.push(candidate.selector);
60
78
  try {
61
79
  await click(candidate);
62
- return { clicked: true, candidate, triedSelectors };
63
80
  }
64
81
  catch (error) {
65
82
  if (!(0, deep_locator_scan_1.isNodeNotActionableError)(error))
66
83
  throw error;
84
+ continue;
85
+ }
86
+ if (checkCounter) {
87
+ const after = await readSelectionCount();
88
+ if (after !== null && after <= baselineSelectionCount) {
89
+ counterStalledSelectors.push(candidate.selector);
90
+ continue;
91
+ }
67
92
  }
93
+ return { clicked: true, candidate, triedSelectors, counterStalledSelectors };
68
94
  }
69
- return { clicked: false, candidate: null, triedSelectors };
95
+ return { clicked: false, candidate: null, triedSelectors, counterStalledSelectors };
70
96
  }
71
97
  //# sourceMappingURL=deep-locator-click.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deep-locator-click.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-click.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;AAGH,mEAAuE;AAEvE;;;;;;;;;GASG;AACU,QAAA,mCAAmC,GAAG,CAAC,CAAC;AA+BrD;;;;;;;;;;;;GAYG;AACI,KAAK,wCACV,UAA2C,EAC3C,KAAuB,EACvB,OAAO,GAAiC,EAAE;IAE1C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAA,mCAAmC,CAAC;IAC7E,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ,IAAI,UAAU;YAAE,MAAM;QAClC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;YAAE,SAAS;QAEjD,QAAQ,IAAI,CAAC,CAAC;QACd,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAA,4CAAwB,EAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"deep-locator-click.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-click.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;AAGH,mEAAuE;AAEvE;;;;;;;;;GASG;AACU,QAAA,mCAAmC,GAAG,CAAC,CAAC;AAyDrD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACI,KAAK,wCACV,UAA2C,EAC3C,KAAuB,EACvB,OAAO,GAAiC,EAAE;IAE1C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAA,mCAAmC,CAAC;IAC7E,MAAM,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,YAAY,GAChB,kBAAkB,KAAK,SAAS;QAChC,sBAAsB,KAAK,SAAS;QACpC,sBAAsB,KAAK,IAAI,CAAC;IAClC,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ,IAAI,UAAU;YAAE,MAAM;QAClC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;YAAE,SAAS;QAEjD,QAAQ,IAAI,CAAC,CAAC;QACd,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAA,4CAAwB,EAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAClD,SAAS;QACX,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;YACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,sBAAsB,EAAE,CAAC;gBACtD,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACjD,SAAS;YACX,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC/E,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,uBAAuB,EAAE,CAAC;AACtF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep-locator-fake.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-fake.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deep-locator-fake.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-fake.ts"],"names":[],"mappings":"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"}
@@ -448,6 +448,7 @@ function makeFakeFrameScan(frame, selector) {
448
448
  index,
449
449
  text: element.text,
450
450
  visible: element.visible,
451
+ isNav: false,
451
452
  }));
452
453
  };
453
454
  }