playwright-e2e-mcp 0.1.4 → 0.2.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 (64) hide show
  1. package/README.md +208 -54
  2. package/dist/http.d.ts +1 -1
  3. package/dist/http.js +1 -1
  4. package/dist/prompts.d.ts +6 -0
  5. package/dist/prompts.js +39 -0
  6. package/dist/prompts.js.map +1 -0
  7. package/dist/server.d.ts +4 -3
  8. package/dist/server.js +63 -5
  9. package/dist/server.js.map +1 -1
  10. package/dist/tools/analyze-history.d.ts +48 -0
  11. package/dist/tools/analyze-history.js +132 -0
  12. package/dist/tools/analyze-history.js.map +1 -0
  13. package/dist/tools/compare-visual-state.d.ts +89 -17
  14. package/dist/tools/compare-visual-state.js +10 -3
  15. package/dist/tools/compare-visual-state.js.map +1 -1
  16. package/dist/tools/diagnose-flaky.js +5 -2
  17. package/dist/tools/diagnose-flaky.js.map +1 -1
  18. package/dist/tools/generate-e2e-test.d.ts +11 -0
  19. package/dist/tools/generate-e2e-test.js +50 -3
  20. package/dist/tools/generate-e2e-test.js.map +1 -1
  21. package/dist/tools/get-failure.d.ts +6 -1
  22. package/dist/tools/get-failure.js +17 -11
  23. package/dist/tools/get-failure.js.map +1 -1
  24. package/dist/tools/get-run-status.d.ts +28 -0
  25. package/dist/tools/get-run-status.js +75 -0
  26. package/dist/tools/get-run-status.js.map +1 -0
  27. package/dist/tools/inspect-page.d.ts +102 -14
  28. package/dist/tools/inspect-page.js +50 -10
  29. package/dist/tools/inspect-page.js.map +1 -1
  30. package/dist/tools/probe-script.d.ts +20 -0
  31. package/dist/tools/probe-script.js +641 -0
  32. package/dist/tools/probe-script.js.map +1 -0
  33. package/dist/tools/run-test.d.ts +5 -1
  34. package/dist/tools/run-test.js +30 -3
  35. package/dist/tools/run-test.js.map +1 -1
  36. package/dist/tools/shared.d.ts +117 -3
  37. package/dist/tools/shared.js +154 -285
  38. package/dist/tools/shared.js.map +1 -1
  39. package/dist/tools/suggest-fix.d.ts +89 -0
  40. package/dist/tools/suggest-fix.js +437 -0
  41. package/dist/tools/suggest-fix.js.map +1 -0
  42. package/dist/tools/validate-selector.d.ts +83 -6
  43. package/dist/tools/validate-selector.js +71 -32
  44. package/dist/tools/validate-selector.js.map +1 -1
  45. package/dist/types/index.d.ts +40 -0
  46. package/dist/utils/locator-expr.d.ts +38 -0
  47. package/dist/utils/locator-expr.js +280 -0
  48. package/dist/utils/locator-expr.js.map +1 -0
  49. package/dist/utils/playwright-runner.d.ts +9 -1
  50. package/dist/utils/playwright-runner.js +60 -4
  51. package/dist/utils/playwright-runner.js.map +1 -1
  52. package/dist/utils/report-parser.d.ts +3 -1
  53. package/dist/utils/report-parser.js +22 -0
  54. package/dist/utils/report-parser.js.map +1 -1
  55. package/dist/utils/run-history.d.ts +103 -0
  56. package/dist/utils/run-history.js +219 -0
  57. package/dist/utils/run-history.js.map +1 -0
  58. package/dist/utils/run-registry.d.ts +34 -0
  59. package/dist/utils/run-registry.js +86 -0
  60. package/dist/utils/run-registry.js.map +1 -0
  61. package/dist/utils/trace-reader.d.ts +23 -2
  62. package/dist/utils/trace-reader.js +86 -15
  63. package/dist/utils/trace-reader.js.map +1 -1
  64. package/package.json +2 -2
@@ -1,26 +1,36 @@
1
1
  /**
2
2
  * Tool 3 — inspect-page: launch a headless browser against a live URL
3
- * and return the rendered DOM: element inventory with unique CSS
4
- * selectors, visibility, boxes, text and attributes, optional HTML and
5
- * captured console messages.
3
+ * and return the rendered DOM: element inventory with verified Playwright
4
+ * locators (role + name first) and unique CSS selectors, visibility, boxes,
5
+ * text and attributes, optional HTML and captured console messages.
6
+ *
7
+ * The page can be opened as a signed-in user (storageState / headers) and
8
+ * driven to a state first (actions), so modals, multi-step flows and pages
9
+ * behind a login can be inspected.
6
10
  */
7
11
  import { z } from 'zod';
8
- import { assertHttpUrl, clipLines, guard, resolveProjectRoot, runBrowserScript, toolError, toolText, } from './shared.js';
12
+ import { assertHttpUrl, bestLocator, clipLines, describePageState, guard, loginHint, pageStateShape, resolvePageState, resolveProjectRoot, runBrowserScript, toolError, toolText, } from './shared.js';
13
+ import { formatLocator } from '../utils/locator-expr.js';
9
14
  import { assertUrlAllowed } from '../utils/url-policy.js';
10
15
  const inspectPageInput = z.object({
11
16
  url: z.string().describe('Full URL of the page to open (http/https)'),
12
17
  projectRoot: z
13
18
  .string()
14
19
  .optional()
15
- .describe('Project whose Playwright install launches the browser; defaults to the server working directory'),
20
+ .describe('Project whose Playwright launches the browser (default: server root)'),
16
21
  selector: z
17
22
  .string()
18
23
  .optional()
19
24
  .describe('CSS selector: inspect matches instead of the whole DOM'),
25
+ view: z
26
+ .enum(['elements', 'locators'])
27
+ .optional()
28
+ .describe("'locators': compact map of interactive elements (cheapest); 'elements' (default): DOM inventory"),
20
29
  waitFor: z
21
30
  .string()
22
31
  .optional()
23
- .describe('Wait for this selector (CSS or "text=...") to appear before inspecting'),
32
+ .describe('Wait for this selector first'),
33
+ ...pageStateShape,
24
34
  waitUntil: z
25
35
  .enum(['load', 'domcontentloaded', 'networkidle'])
26
36
  .optional()
@@ -36,6 +46,12 @@ const inspectPageInput = z.object({
36
46
  .describe('Overall inspection limit in ms (default 45000)'),
37
47
  });
38
48
  export const inspectPageSchema = inspectPageInput;
49
+ function renderLocatorLine(element, position) {
50
+ const best = bestLocator(element);
51
+ const alt = (element.locators ?? []).slice(1).map((chain) => `\`${formatLocator(chain)}\``);
52
+ const label = element.role ? `${element.role}${element.name ? ` "${clipLines(element.name, 1, 60)}"` : ''}` : element.tag;
53
+ return `${position}. \`${best ?? element.selector}\` — ${label}${alt.length > 0 ? ` · also ${alt.join(', ')}` : ''}`;
54
+ }
39
55
  function renderElement(element, position) {
40
56
  const visibility = element.visible ? 'visible' : 'hidden';
41
57
  const box = element.box
@@ -44,6 +60,9 @@ function renderElement(element, position) {
44
60
  const lines = [
45
61
  `${position}. \`${element.selector}\` — **${element.tag}** · ${visibility} · ${box}`,
46
62
  ];
63
+ const best = bestLocator(element);
64
+ if (best && !best.startsWith('locator('))
65
+ lines.push(` locator: \`${best}\``);
47
66
  if (element.text)
48
67
  lines.push(` text: "${element.text}"`);
49
68
  const attrs = Object.entries(element.attributes).filter(([name]) => name !== 'class' && name !== 'id');
@@ -57,17 +76,21 @@ function renderElement(element, position) {
57
76
  }
58
77
  export const inspectPageTool = {
59
78
  name: 'inspect-page',
60
- description: 'Open a URL in a headless browser and return the rendered DOM: elements with unique CSS selectors, visibility, bounding boxes, text, attributes, captured console messages and optional HTML. Use this to understand a live page before writing or fixing selectors/tests. Requires a reachable URL (detects a missing dev server).',
79
+ description: "Open a URL headlessly and return its elements with Playwright locators proven unique on the page (role + name first), CSS selectors, visibility, text and console messages. storageState/headers open it signed in; actions click/fill first to reach a state. view 'locators' is the compact map.",
61
80
  inputSchema: inspectPageSchema,
62
81
  handler: async (args, ctx) => guard('inspect-page', async () => {
63
82
  const url = assertHttpUrl(args.url);
64
83
  await assertUrlAllowed(url);
65
84
  const root = await resolveProjectRoot(args.projectRoot, ctx);
85
+ const state = await resolvePageState(args, root, url, ctx);
66
86
  const timeoutMs = args.timeoutMs ?? 45_000;
87
+ const view = args.selector ? 'elements' : (args.view ?? 'elements');
67
88
  const outcome = await runBrowserScript({
89
+ ...state,
68
90
  mode: 'inspect',
69
91
  projectRoot: root,
70
92
  url,
93
+ view,
71
94
  selector: args.selector,
72
95
  waitFor: args.waitFor,
73
96
  waitUntil: args.waitUntil,
@@ -78,7 +101,8 @@ export const inspectPageTool = {
78
101
  startedAt: Date.now(),
79
102
  }, { timeoutMs, signal: ctx.signal });
80
103
  if (!outcome.ok) {
81
- return toolError(outcome.kind ?? 'UNKNOWN', `Could not inspect ${url}: ${outcome.error ?? 'unknown error'}`, outcome.hint, outcome.stderrTail);
104
+ const done = outcome.actionsDone?.length ? `\n\nSteps completed before the failure: ${outcome.actionsDone.join('; ')}` : '';
105
+ return toolError(outcome.kind ?? 'UNKNOWN', `Could not inspect ${url}: ${outcome.error ?? 'unknown error'}${done}`, outcome.hint, outcome.stderrTail);
82
106
  }
83
107
  const data = outcome.data;
84
108
  if (data.parseError) {
@@ -87,14 +111,30 @@ export const inspectPageTool = {
87
111
  const lines = [];
88
112
  const title = data.title ? `"${data.title}"` : '(no title)';
89
113
  lines.push(`## 🔎 ${title}`, '');
90
- lines.push(`**URL:** ${url}${data.finalUrl && data.finalUrl !== url ? ` → ${data.finalUrl}` : ''} `, `**Elements:** ${data.elementCount} | **Viewport:** ${data.viewport ? `${data.viewport.width}×${data.viewport.height}` : '—'} | **Took:** ${data.durationMs ?? 0}ms`, '');
114
+ lines.push(`**URL:** ${url}${data.finalUrl && data.finalUrl !== url ? ` → ${data.finalUrl}` : ''} `, `**Elements:** ${data.elementCount} | **Viewport:** ${data.viewport ? `${data.viewport.width}×${data.viewport.height}` : '—'} | **Took:** ${data.durationMs ?? 0}ms`);
115
+ const stateLine = describePageState(state, root);
116
+ if (stateLine)
117
+ lines.push(`**Page state:** ${stateLine}`);
118
+ if (data.actionsDone?.length)
119
+ lines.push(`**Steps run:** ${data.actionsDone.join('; ')}`);
120
+ lines.push('');
121
+ const login = loginHint(data.finalUrl, state);
122
+ if (login)
123
+ lines.push(`> 🔒 ${login}`, '');
91
124
  const heading = args.selector
92
125
  ? `### Matches for \`${args.selector}\` (${data.matchCount})`
93
- : `### DOM sample (first ${data.elements.length} of ${data.elementCount} elements)`;
126
+ : view === 'locators'
127
+ ? `### Locator map (${data.elements.length} of ${data.matchCount} visible interactive elements, locators verified unique)`
128
+ : `### DOM sample (first ${data.elements.length} of ${data.elementCount} elements)`;
94
129
  lines.push(heading, '');
95
130
  if (data.elements.length === 0) {
96
131
  lines.push('_No elements matched._', '');
97
132
  }
133
+ else if (view === 'locators') {
134
+ for (let i = 0; i < data.elements.length; i += 1)
135
+ lines.push(renderLocatorLine(data.elements[i], i + 1));
136
+ lines.push('');
137
+ }
98
138
  else {
99
139
  for (let i = 0; i < data.elements.length; i += 1) {
100
140
  lines.push(renderElement(data.elements[i], i + 1), '');
@@ -1 +1 @@
1
- {"version":3,"file":"inspect-page.js","sourceRoot":"","sources":["../../src/tools/inspect-page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,aAAa,EACb,SAAS,EACT,KAAK,EACL,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACrE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iGAAiG,CAAC;IAC9G,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wEAAwE,CAAC;IACrF,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;SACjD,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACrF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC9H,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,KAAK,CAAC;SACV,GAAG,CAAC,OAAO,CAAC;SACZ,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;CAC9D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAElD,SAAS,aAAa,CAAC,OAAoB,EAAE,QAAgB;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;QACrB,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG;QACrF,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,KAAK,GAAG;QACZ,GAAG,QAAQ,OAAO,OAAO,CAAC,QAAQ,UAAU,OAAO,CAAC,GAAG,QAAQ,UAAU,MAAM,GAAG,EAAE;KACrF,CAAC;IACF,IAAI,OAAO,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,CAC9C,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK;aAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,oUAAoU;IACtU,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,KAAK,EAAE,IAAsB,EAAE,GAAgB,EAAyB,EAAE,CACjF,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QAE3C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,IAAI;YACjB,GAAG;YACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;YAC/C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;YACjE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAClC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,SAAS,CACd,OAAO,CAAC,IAAI,IAAI,SAAS,EACzB,qBAAqB,GAAG,KAAK,OAAO,CAAC,KAAK,IAAI,eAAe,EAAE,EAC/D,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,UAAU,CACnB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,SAAS,CACd,cAAc,EACd,qBAAqB,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,EACzD,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CACR,YAAY,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EACzF,iBAAiB,IAAI,CAAC,YAAY,sBAAsB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,kBAAkB,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,EACxK,EAAE,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;YAC3B,CAAC,CAAC,qBAAqB,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,UAAU,GAAG;YAC7D,CAAC,CAAC,yBAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,YAAY,YAAY,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,mCAAmC,EAAE,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACxG,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAC1H,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,IAAI,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CACR,WAAW,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAClF,EAAE,EACF,SAAS,EACT,IAAI,CAAC,IAAI,EACT,KAAK,EACL,EAAE,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CACR,OAAO,IAAI,CAAC,QAAQ,cAAc,IAAI,CAAC,UAAU,0EAA0E,CAC5H,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"inspect-page.js","sourceRoot":"","sources":["../../src/tools/inspect-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The browser child script behind every page-facing tool (inspect-page,
3
+ * validate-selector, compare-visual-state, generate-e2e-test, suggest-fix).
4
+ *
5
+ * It runs inside a child `node` process with cwd = project root so that
6
+ * `createRequire(projectRoot/package.json)` resolves the *user's* Playwright
7
+ * install (browsers included). It writes one JSON document to stdout and
8
+ * always exits, so it can never wedge the server.
9
+ *
10
+ * Modes:
11
+ * - inspect element inventory (or a compact locator map with view: 'locators')
12
+ * - validate resolve a selector or locator chain, count and describe matches
13
+ * - screenshot capture the page or one element
14
+ * - heal rank elements that look like a broken locator's target, either
15
+ * on the live page or on a DOM snapshot taken from a trace
16
+ *
17
+ * Every element the script reports carries Playwright locators that were
18
+ * proven, in this same page, to resolve to exactly that one element.
19
+ */
20
+ export declare const PROBE_SCRIPT: string;