@tayo-dev/rtl 1.3.0 → 1.4.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 (69) hide show
  1. package/README.md +66 -33
  2. package/assets/claude/commands/@tayo-dev/rtl/generate.md +2 -2
  3. package/assets/claude/commands/@tayo-dev/rtl/help.md +1 -1
  4. package/assets/codex/@tayo-dev/rtl-conventions/SKILL.md +2 -2
  5. package/assets/codex/@tayo-dev/rtl-generate/SKILL.md +6 -5
  6. package/assets/codex/@tayo-dev/rtl-help/SKILL.md +1 -1
  7. package/assets/gemini/commands/@tayo-dev/rtl/generate.toml +2 -2
  8. package/assets/gemini/commands/@tayo-dev/rtl/help.toml +1 -1
  9. package/assets/opencode/commands/@tayo-dev/rtl-generate.md +2 -2
  10. package/assets/opencode/commands/@tayo-dev/rtl-help.md +1 -1
  11. package/dist/cli/commands/generate.d.ts.map +1 -1
  12. package/dist/cli/commands/generate.js +485 -67
  13. package/dist/cli/commands/generate.js.map +1 -1
  14. package/dist/cli/commands/install.js +6 -6
  15. package/dist/core/baseline-normalizer.d.ts.map +1 -1
  16. package/dist/core/baseline-normalizer.js +42 -0
  17. package/dist/core/baseline-normalizer.js.map +1 -1
  18. package/dist/core/generator.d.ts +5 -1
  19. package/dist/core/generator.d.ts.map +1 -1
  20. package/dist/core/generator.js +235 -17
  21. package/dist/core/generator.js.map +1 -1
  22. package/dist/core/input-loader.d.ts.map +1 -1
  23. package/dist/core/input-loader.js +1 -0
  24. package/dist/core/input-loader.js.map +1 -1
  25. package/dist/core/js-parser.d.ts +2 -1
  26. package/dist/core/js-parser.d.ts.map +1 -1
  27. package/dist/core/js-parser.js +69 -0
  28. package/dist/core/js-parser.js.map +1 -1
  29. package/dist/core/orchestrator.d.ts +1 -1
  30. package/dist/core/orchestrator.js +4 -4
  31. package/dist/core/parser.js +2 -2
  32. package/dist/core/recording-intelligence.d.ts +1 -1
  33. package/dist/core/recording-intelligence.d.ts.map +1 -1
  34. package/dist/core/recording-intelligence.js +298 -4
  35. package/dist/core/recording-intelligence.js.map +1 -1
  36. package/dist/core/resolver.d.ts +28 -2
  37. package/dist/core/resolver.d.ts.map +1 -1
  38. package/dist/core/resolver.js +462 -23
  39. package/dist/core/resolver.js.map +1 -1
  40. package/dist/core/scanner.d.ts +11 -3
  41. package/dist/core/scanner.d.ts.map +1 -1
  42. package/dist/core/scanner.js +47 -9
  43. package/dist/core/scanner.js.map +1 -1
  44. package/dist/core/scorer.d.ts +6 -2
  45. package/dist/core/scorer.d.ts.map +1 -1
  46. package/dist/core/scorer.js +163 -9
  47. package/dist/core/scorer.js.map +1 -1
  48. package/dist/core/suite-planner.d.ts +4 -1
  49. package/dist/core/suite-planner.d.ts.map +1 -1
  50. package/dist/core/suite-planner.js +261 -11
  51. package/dist/core/suite-planner.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.js +4 -4
  54. package/dist/install/planner.js +1 -1
  55. package/dist/install/types.d.ts +1 -1
  56. package/dist/learner/index.d.ts +2 -2
  57. package/dist/learner/index.js +3 -3
  58. package/dist/learner/storage.d.ts +1 -1
  59. package/dist/learner/storage.js +2 -2
  60. package/dist/templates/test-template.d.ts +26 -2
  61. package/dist/templates/test-template.d.ts.map +1 -1
  62. package/dist/templates/test-template.js +46 -6
  63. package/dist/templates/test-template.js.map +1 -1
  64. package/dist/types/recording.d.ts +162 -0
  65. package/dist/types/recording.d.ts.map +1 -1
  66. package/dist/types/recording.js.map +1 -1
  67. package/dist/types/score.d.ts +37 -0
  68. package/dist/types/score.d.ts.map +1 -1
  69. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"recording-intelligence.js","sourceRoot":"","sources":["../../src/core/recording-intelligence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recording-intelligence.js","sourceRoot":"","sources":["../../src/core/recording-intelligence.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,24 @@
1
- import { Page } from 'playwright';
2
- import type { DialogState, ElementInfo, QueryResult, VisualState } from '../types/recording.js';
1
+ import { type Page } from 'playwright';
2
+ import type { DialogState, ElementInfo, NormalizedStep, QueryDescriptor, QueryResult, SemanticMarkerAssertionResolution, SelectorDescriptor, SelectorResolutionResult, VisualState } from '../types/recording.js';
3
+ export interface FoundSelectorInspectionResult {
4
+ status: 'found';
5
+ element: ElementInfo;
6
+ }
7
+ export interface MissingSelectorInspectionResult {
8
+ status: 'selector-not-found';
9
+ }
10
+ export interface FailedSelectorInspectionResult {
11
+ status: 'inspection-failed';
12
+ error: string;
13
+ }
14
+ export type SelectorInspectionResult = FoundSelectorInspectionResult | MissingSelectorInspectionResult | FailedSelectorInspectionResult;
15
+ export interface ResolveSelectorOptions {
16
+ url?: string;
17
+ preservedQuery?: QueryDescriptor;
18
+ timeoutMs?: number;
19
+ inspect?: (url: string, cssSelector: string, timeoutMs?: number) => Promise<SelectorInspectionResult>;
20
+ }
21
+ export declare function resolveSemanticMarkerAssertion(step: NormalizedStep): SemanticMarkerAssertionResolution;
3
22
  export declare function extractDialogState(page: Page): Promise<DialogState | null>;
4
23
  export interface CaptureVisualStateOptions {
5
24
  reason: string;
@@ -19,7 +38,14 @@ export declare function captureVisualState(url: string, options: CaptureVisualSt
19
38
  * @param selector - Original CSS selector
20
39
  * @returns QueryResult with query string, quality rating, and method name
21
40
  */
41
+ export declare function deriveAccessibleQuery(info: ElementInfo): QueryResult | null;
42
+ /**
43
+ * Legacy helper retained for scoring/reporting until generation consumes
44
+ * SelectorResolutionResult directly in Phase 14-02.
45
+ */
22
46
  export declare function buildQuery(info: ElementInfo, selector: string): QueryResult;
47
+ export declare function inspectSelector(url: string, cssSelector: string, timeoutMs?: number): Promise<SelectorInspectionResult>;
48
+ export declare function resolveSelector(selector: SelectorDescriptor, options?: ResolveSelectorOptions): Promise<SelectorResolutionResult>;
23
49
  /**
24
50
  * Selects the most appropriate RTL matcher based on element type and action.
25
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,WAAW,EAEX,WAAW,EACZ,MAAM,uBAAuB,CAAA;AA4D9B,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA8BhF;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA6C7B;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CA+C3E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAuBvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,SAAO,GACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAyB7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,SAAO,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAsC1C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMvD"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/core/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAE9D,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EAIX,iCAAiC,EAIjC,kBAAkB,EAClB,wBAAwB,EAExB,WAAW,EACZ,MAAM,uBAAuB,CAAA;AA0C9B,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,mBAAmB,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,wBAAwB,GAChC,6BAA6B,GAC7B,+BAA+B,GAC/B,8BAA8B,CAAA;AAElC,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,eAAe,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,CACR,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACvC;AAucD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,cAAc,GACnB,iCAAiC,CA6EnC;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA8BhF;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA6C7B;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CAyC3E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAa3E;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,SAAO,GACf,OAAO,CAAC,wBAAwB,CAAC,CA+BnC;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAgFnC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAuBvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,SAAO,GACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAe7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,SAAO,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAsC1C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMvD"}
@@ -18,6 +18,8 @@ const ROLE_MAP = {
18
18
  h6: 'heading',
19
19
  img: 'img',
20
20
  };
21
+ const GENERIC_FIELD_CONTEXT_PATTERN = /\b(details?|information|summary|review|section|panel|wrapper|container|layout|row|table|list|grid)\b/i;
22
+ const FIELD_LABEL_HINT_PATTERN = /\b(name|email|phone|pin|quantity|amount|reference|description|notes?|comment|code|search|address|date|time|password|customer|type|number)\b/i;
21
23
  /**
22
24
  * Escapes single quotes in strings for use in generated query code.
23
25
  */
@@ -49,9 +51,365 @@ async function readElementInfo(page, selector) {
49
51
  });
50
52
  return elementInfo;
51
53
  }
54
+ function getAccessibleName(info) {
55
+ const accessibleName = info.ariaLabel ?? info.innerText;
56
+ const normalizedName = accessibleName?.trim();
57
+ return normalizedName ? normalizedName : null;
58
+ }
59
+ function toQueryDescriptor(selector, query) {
60
+ return {
61
+ stepId: selector.stepId,
62
+ method: query.method,
63
+ queryRoot: 'screen',
64
+ line: selector.line,
65
+ target: selector.selector,
66
+ quality: query.quality,
67
+ raw: query.query,
68
+ };
69
+ }
70
+ function toUnresolvedSelectorResult(selector, outcome, reason, options = {}) {
71
+ return {
72
+ status: 'unresolved',
73
+ outcome,
74
+ stepId: selector.stepId,
75
+ selector,
76
+ url: options.url,
77
+ reason,
78
+ inspectionError: options.inspectionError,
79
+ warnings: [reason],
80
+ };
81
+ }
52
82
  function sanitizeCaptureSegment(value) {
53
83
  return value.replace(/[^a-zA-Z0-9-_]+/g, '-').replace(/^-+|-+$/g, '') || 'capture';
54
84
  }
85
+ function getSemanticMarkerCandidate(step) {
86
+ const metadataCandidate = step.metadata?.semanticMarkerCandidate;
87
+ if (metadataCandidate &&
88
+ typeof metadataCandidate === 'object' &&
89
+ 'stepId' in metadataCandidate &&
90
+ typeof metadataCandidate.stepId === 'string') {
91
+ return metadataCandidate;
92
+ }
93
+ return step.semanticMarkerCandidate;
94
+ }
95
+ function getSemanticMarkerLink(step) {
96
+ const metadataLink = step.metadata?.semanticMarkerLink;
97
+ if (metadataLink &&
98
+ typeof metadataLink === 'object' &&
99
+ 'markerStepId' in metadataLink &&
100
+ typeof metadataLink.markerStepId === 'string') {
101
+ return metadataLink;
102
+ }
103
+ return step.semanticMarkerLink;
104
+ }
105
+ function getUnresolvedSemanticMarker(step) {
106
+ const metadataMarker = step.metadata?.unresolvedSemanticMarker;
107
+ if (metadataMarker &&
108
+ typeof metadataMarker === 'object' &&
109
+ 'stepId' in metadataMarker &&
110
+ typeof metadataMarker.stepId === 'string') {
111
+ return metadataMarker;
112
+ }
113
+ return step.unresolvedSemanticMarker;
114
+ }
115
+ function normalizeProofText(value) {
116
+ const normalized = value?.replace(/\s+/g, ' ').trim();
117
+ return normalized ? normalized : undefined;
118
+ }
119
+ function isIconOnlyText(value) {
120
+ const normalized = normalizeProofText(value);
121
+ if (!normalized) {
122
+ return false;
123
+ }
124
+ return normalized.length <= 2 && !/[a-z0-9]/i.test(normalized);
125
+ }
126
+ function toAsyncQueryMethod(method) {
127
+ switch (method) {
128
+ case 'getByRole':
129
+ return 'findByRole';
130
+ case 'getByText':
131
+ return 'findByText';
132
+ case 'getByDisplayValue':
133
+ return 'findByDisplayValue';
134
+ case 'getByLabelText':
135
+ return 'findByLabelText';
136
+ case 'getByPlaceholderText':
137
+ return 'findByPlaceholderText';
138
+ default:
139
+ return undefined;
140
+ }
141
+ }
142
+ function getQueryScope(query) {
143
+ if (query.raw) {
144
+ const match = query.raw.match(/^(.*)\.(?:get|find|query)(?:All)?By[A-Za-z]+\(.+\)$/);
145
+ if (match?.[1]) {
146
+ return match[1];
147
+ }
148
+ }
149
+ if (query.queryRoot === 'screen') {
150
+ return 'screen';
151
+ }
152
+ if (query.queryRoot === 'within') {
153
+ return 'screen';
154
+ }
155
+ return undefined;
156
+ }
157
+ function buildScopedQueryExpression(query, method, options) {
158
+ const scope = getQueryScope(query);
159
+ if (!scope) {
160
+ return undefined;
161
+ }
162
+ if (method === 'findByRole' && options.role && options.name) {
163
+ return `${scope}.${method}('${escapeSingleQuote(options.role)}', { name: '${escapeSingleQuote(options.name)}' })`;
164
+ }
165
+ if (!options.target) {
166
+ return undefined;
167
+ }
168
+ return `${scope}.${method}('${escapeSingleQuote(options.target)}')`;
169
+ }
170
+ function buildAsyncQueryDescriptor(query, options) {
171
+ const raw = buildScopedQueryExpression(query, options.method, options);
172
+ if (!raw) {
173
+ return undefined;
174
+ }
175
+ return {
176
+ ...query,
177
+ method: options.method,
178
+ role: options.role ?? query.role,
179
+ target: options.target ?? query.target,
180
+ name: options.name ?? query.name,
181
+ raw,
182
+ };
183
+ }
184
+ function buildAssertion(step, candidate, query, proofKind) {
185
+ const semanticMarkerLink = getSemanticMarkerLink(step);
186
+ const anchor = semanticMarkerLink ?? candidate.anchor;
187
+ if (!anchor?.anchorStepId || !anchor.relation || !query.raw) {
188
+ return undefined;
189
+ }
190
+ return {
191
+ markerStepId: step.id ?? candidate.stepId,
192
+ anchorStepId: anchor.anchorStepId,
193
+ relation: anchor.relation,
194
+ proofKind,
195
+ proofSubject: candidate.proofSubject,
196
+ target: candidate.target ?? step.target,
197
+ proofText: candidate.proofText,
198
+ line: candidate.line ?? step.line,
199
+ query,
200
+ queryExpression: query.raw,
201
+ expectation: 'visibility',
202
+ matcher: 'toBeVisible',
203
+ sourceContext: candidate.sourceContext,
204
+ };
205
+ }
206
+ function toUnresolvedAssertion(step, reason, candidate, unresolvedMarker) {
207
+ const source = candidate ?? unresolvedMarker;
208
+ const anchor = source?.anchor;
209
+ return {
210
+ status: 'unresolved',
211
+ markerStepId: step.id ?? source?.stepId ?? 'unknown-step',
212
+ anchorStepId: anchor?.anchorStepId,
213
+ relation: anchor?.relation,
214
+ reason,
215
+ proofSubject: source?.proofSubject ?? 'unknown',
216
+ target: source?.target ?? step.target,
217
+ proofText: source?.proofText,
218
+ line: source?.line ?? step.line,
219
+ sourceContext: source?.sourceContext ?? {
220
+ line: step.line,
221
+ originalType: step.originalType,
222
+ },
223
+ query: source?.query,
224
+ selector: source?.selector,
225
+ };
226
+ }
227
+ function resolveRoleNameAssertion(step, candidate, query) {
228
+ const accessibleName = normalizeProofText(query.name ?? query.target ?? candidate.proofText);
229
+ if (!query.role || !accessibleName || isIconOnlyText(accessibleName)) {
230
+ return undefined;
231
+ }
232
+ const asyncQuery = buildAsyncQueryDescriptor(query, {
233
+ method: 'findByRole',
234
+ role: query.role,
235
+ target: accessibleName,
236
+ name: accessibleName,
237
+ });
238
+ if (!asyncQuery) {
239
+ return undefined;
240
+ }
241
+ const assertion = buildAssertion(step, candidate, asyncQuery, 'role-name');
242
+ return assertion
243
+ ? {
244
+ status: 'resolved',
245
+ markerStepId: assertion.markerStepId,
246
+ anchorStepId: assertion.anchorStepId,
247
+ assertion,
248
+ }
249
+ : undefined;
250
+ }
251
+ function resolveVisibleTextAssertion(step, candidate, query) {
252
+ const proofText = normalizeProofText(candidate.proofText ?? query.target ?? candidate.target);
253
+ if (!proofText || isIconOnlyText(proofText)) {
254
+ return undefined;
255
+ }
256
+ const asyncQuery = buildAsyncQueryDescriptor(query, {
257
+ method: 'findByText',
258
+ target: proofText,
259
+ });
260
+ if (!asyncQuery) {
261
+ return undefined;
262
+ }
263
+ const assertion = buildAssertion(step, candidate, asyncQuery, 'visible-text');
264
+ return assertion
265
+ ? {
266
+ status: 'resolved',
267
+ markerStepId: assertion.markerStepId,
268
+ anchorStepId: assertion.anchorStepId,
269
+ assertion,
270
+ }
271
+ : undefined;
272
+ }
273
+ function resolveVisibleValueAssertion(step, candidate, query) {
274
+ const proofText = normalizeProofText(candidate.proofText ?? query.target ?? candidate.target);
275
+ if (!proofText || isIconOnlyText(proofText)) {
276
+ return undefined;
277
+ }
278
+ const nextMethod = query.method === 'getByDisplayValue' ? 'findByDisplayValue' : 'findByText';
279
+ const asyncQuery = buildAsyncQueryDescriptor(query, {
280
+ method: nextMethod,
281
+ target: proofText,
282
+ });
283
+ if (!asyncQuery) {
284
+ return undefined;
285
+ }
286
+ const assertion = buildAssertion(step, candidate, asyncQuery, 'visible-value');
287
+ return assertion
288
+ ? {
289
+ status: 'resolved',
290
+ markerStepId: assertion.markerStepId,
291
+ anchorStepId: assertion.anchorStepId,
292
+ assertion,
293
+ }
294
+ : undefined;
295
+ }
296
+ function resolveFieldContextAssertion(step, candidate, query) {
297
+ const proofText = normalizeProofText(candidate.proofText ?? query.target ?? candidate.target);
298
+ if (!proofText) {
299
+ return toUnresolvedAssertion(step, 'missing-query', candidate);
300
+ }
301
+ if (isIconOnlyText(proofText)) {
302
+ return toUnresolvedAssertion(step, 'icon-only-target', candidate);
303
+ }
304
+ if (GENERIC_FIELD_CONTEXT_PATTERN.test(proofText)) {
305
+ return toUnresolvedAssertion(step, 'generic-container', candidate);
306
+ }
307
+ if (/[/,]/.test(proofText)) {
308
+ return toUnresolvedAssertion(step, 'ambiguous-field-context', candidate);
309
+ }
310
+ if (query.method === 'getByLabelText') {
311
+ const asyncQuery = buildAsyncQueryDescriptor(query, {
312
+ method: 'findByLabelText',
313
+ target: proofText,
314
+ });
315
+ const assertion = asyncQuery && buildAssertion(step, candidate, asyncQuery, 'label-text');
316
+ return assertion
317
+ ? {
318
+ status: 'resolved',
319
+ markerStepId: assertion.markerStepId,
320
+ anchorStepId: assertion.anchorStepId,
321
+ assertion,
322
+ }
323
+ : toUnresolvedAssertion(step, 'unsupported-field-context', candidate);
324
+ }
325
+ if (query.method === 'getByPlaceholderText') {
326
+ const asyncQuery = buildAsyncQueryDescriptor(query, {
327
+ method: 'findByPlaceholderText',
328
+ target: proofText,
329
+ });
330
+ const assertion = asyncQuery && buildAssertion(step, candidate, asyncQuery, 'placeholder-text');
331
+ return assertion
332
+ ? {
333
+ status: 'resolved',
334
+ markerStepId: assertion.markerStepId,
335
+ anchorStepId: assertion.anchorStepId,
336
+ assertion,
337
+ }
338
+ : toUnresolvedAssertion(step, 'unsupported-field-context', candidate);
339
+ }
340
+ if (query.method === 'getByText' && FIELD_LABEL_HINT_PATTERN.test(proofText)) {
341
+ const asyncQuery = buildAsyncQueryDescriptor(query, {
342
+ method: 'findByLabelText',
343
+ target: proofText,
344
+ });
345
+ const assertion = asyncQuery && buildAssertion(step, candidate, asyncQuery, 'label-text');
346
+ return assertion
347
+ ? {
348
+ status: 'resolved',
349
+ markerStepId: assertion.markerStepId,
350
+ anchorStepId: assertion.anchorStepId,
351
+ assertion,
352
+ }
353
+ : toUnresolvedAssertion(step, 'unsupported-field-context', candidate);
354
+ }
355
+ if (query.method === 'getByText') {
356
+ return toUnresolvedAssertion(step, 'ambiguous-field-context', candidate);
357
+ }
358
+ return toUnresolvedAssertion(step, 'unsupported-field-context', candidate);
359
+ }
360
+ export function resolveSemanticMarkerAssertion(step) {
361
+ const candidate = getSemanticMarkerCandidate(step);
362
+ const unresolvedMarker = getUnresolvedSemanticMarker(step);
363
+ if (!candidate) {
364
+ return toUnresolvedAssertion(step, 'missing-marker-candidate', undefined, unresolvedMarker);
365
+ }
366
+ const anchorStepId = getSemanticMarkerLink(step)?.anchorStepId ??
367
+ unresolvedMarker?.anchor?.anchorStepId ??
368
+ candidate.anchor?.anchorStepId;
369
+ if (!anchorStepId) {
370
+ return toUnresolvedAssertion(step, 'missing-anchor', candidate, unresolvedMarker);
371
+ }
372
+ if (unresolvedMarker?.reason === 'ambiguous-field-context') {
373
+ return toUnresolvedAssertion(step, 'ambiguous-field-context', candidate, unresolvedMarker);
374
+ }
375
+ if (candidate.proofSubject === 'selector-target') {
376
+ return toUnresolvedAssertion(step, 'css-only-evidence', candidate, unresolvedMarker);
377
+ }
378
+ if (candidate.proofSubject === 'unknown') {
379
+ return toUnresolvedAssertion(step, 'unsupported-proof-subject', candidate, unresolvedMarker);
380
+ }
381
+ if (!candidate.query) {
382
+ return toUnresolvedAssertion(step, 'missing-query', candidate, unresolvedMarker);
383
+ }
384
+ if (candidate.query.queryRoot === 'document' ||
385
+ candidate.query.method === 'getByTestId' ||
386
+ /data-testid|querySelector|nth-(?:of-type|child)|css-[\w-]+/i.test(candidate.query.raw ?? '')) {
387
+ return toUnresolvedAssertion(step, 'hidden-evidence', candidate, unresolvedMarker);
388
+ }
389
+ if (isIconOnlyText(candidate.proofText ?? candidate.query.target ?? candidate.target)) {
390
+ return toUnresolvedAssertion(step, 'icon-only-target', candidate, unresolvedMarker);
391
+ }
392
+ const roleNameResolution = resolveRoleNameAssertion(step, candidate, candidate.query);
393
+ if (roleNameResolution) {
394
+ return roleNameResolution;
395
+ }
396
+ if (candidate.proofSubject === 'concrete-value') {
397
+ return (resolveVisibleValueAssertion(step, candidate, candidate.query) ??
398
+ toUnresolvedAssertion(step, 'missing-query', candidate, unresolvedMarker));
399
+ }
400
+ if (candidate.proofSubject === 'visible-message' ||
401
+ candidate.proofSubject === 'heading') {
402
+ return (resolveVisibleTextAssertion(step, candidate, candidate.query) ??
403
+ toUnresolvedAssertion(step, 'missing-query', candidate, unresolvedMarker));
404
+ }
405
+ if (candidate.proofSubject === 'field-label') {
406
+ return resolveFieldContextAssertion(step, candidate, candidate.query);
407
+ }
408
+ const asyncMethod = toAsyncQueryMethod(candidate.query.method);
409
+ return asyncMethod
410
+ ? toUnresolvedAssertion(step, 'unsupported-proof-subject', candidate, unresolvedMarker)
411
+ : toUnresolvedAssertion(step, 'missing-query', candidate, unresolvedMarker);
412
+ }
55
413
  export async function extractDialogState(page) {
56
414
  try {
57
415
  const state = await page.evaluate(() => {
@@ -111,7 +469,7 @@ export async function captureVisualState(url, options) {
111
469
  };
112
470
  }
113
471
  catch (error) {
114
- console.warn(pc.yellow('[taro]') +
472
+ console.warn(pc.yellow('[tayo]') +
115
473
  pc.dim(' VIS-01:') +
116
474
  ` Failed to capture visual state for ${url}: ${error instanceof Error ? error.message : 'Unknown error'}`);
117
475
  return null;
@@ -130,9 +488,9 @@ export async function captureVisualState(url, options) {
130
488
  * @param selector - Original CSS selector
131
489
  * @returns QueryResult with query string, quality rating, and method name
132
490
  */
133
- export function buildQuery(info, selector) {
491
+ export function deriveAccessibleQuery(info) {
134
492
  const impliedRole = info.role ?? ROLE_MAP[info.tagName];
135
- const accessibleName = info.ariaLabel ?? info.innerText;
493
+ const accessibleName = getAccessibleName(info);
136
494
  // Priority 1: getByRole when both role and accessible name exist
137
495
  if (impliedRole && accessibleName) {
138
496
  return {
@@ -165,6 +523,17 @@ export function buildQuery(info, selector) {
165
523
  query: `screen.getByPlaceholderText('${escapeSingleQuote(info.placeholder)}')`,
166
524
  };
167
525
  }
526
+ return null;
527
+ }
528
+ /**
529
+ * Legacy helper retained for scoring/reporting until generation consumes
530
+ * SelectorResolutionResult directly in Phase 14-02.
531
+ */
532
+ export function buildQuery(info, selector) {
533
+ const accessibleQuery = deriveAccessibleQuery(info);
534
+ if (accessibleQuery) {
535
+ return accessibleQuery;
536
+ }
168
537
  // Priority 5: Fallback to getByTestId (fragile)
169
538
  const sanitized = sanitizeSelectorForTestId(selector);
170
539
  return {
@@ -173,6 +542,87 @@ export function buildQuery(info, selector) {
173
542
  query: `screen.getByTestId('${sanitized}')`,
174
543
  };
175
544
  }
545
+ export async function inspectSelector(url, cssSelector, timeoutMs = 5000) {
546
+ let browser = null;
547
+ try {
548
+ browser = await chromium.launch({ headless: true });
549
+ const page = await browser.newPage();
550
+ await page.goto(url, {
551
+ timeout: timeoutMs,
552
+ waitUntil: 'domcontentloaded',
553
+ });
554
+ const count = await page.locator(cssSelector).count();
555
+ if (count === 0) {
556
+ return { status: 'selector-not-found' };
557
+ }
558
+ return {
559
+ status: 'found',
560
+ element: await readElementInfo(page, cssSelector),
561
+ };
562
+ }
563
+ catch (error) {
564
+ return {
565
+ status: 'inspection-failed',
566
+ error: error instanceof Error ? error.message : 'Unknown error',
567
+ };
568
+ }
569
+ finally {
570
+ if (browser) {
571
+ await browser.close();
572
+ }
573
+ }
574
+ }
575
+ export async function resolveSelector(selector, options = {}) {
576
+ const { url, preservedQuery, timeoutMs = 5000, inspect = inspectSelector } = options;
577
+ if (preservedQuery) {
578
+ return {
579
+ status: 'resolved',
580
+ outcome: 'preserved-query',
581
+ source: 'baseline',
582
+ stepId: selector.stepId,
583
+ selector,
584
+ url,
585
+ query: preservedQuery,
586
+ warnings: [],
587
+ };
588
+ }
589
+ if (!url) {
590
+ return toUnresolvedSelectorResult(selector, 'no-url', `No recorded URL is available to inspect selector ${selector.selector}.`);
591
+ }
592
+ try {
593
+ const inspection = await inspect(url, selector.selector, timeoutMs);
594
+ if (inspection.status === 'inspection-failed') {
595
+ return toUnresolvedSelectorResult(selector, 'inspection-failed', `Playwright inspection failed for selector ${selector.selector}.`, {
596
+ url,
597
+ inspectionError: inspection.error,
598
+ });
599
+ }
600
+ if (inspection.status === 'selector-not-found') {
601
+ return toUnresolvedSelectorResult(selector, 'selector-not-found', `Selector ${selector.selector} was not found at ${url}.`, { url });
602
+ }
603
+ const accessibleQuery = deriveAccessibleQuery(inspection.element);
604
+ if (!accessibleQuery) {
605
+ return toUnresolvedSelectorResult(selector, 'selector-inaccessible', `Selector ${selector.selector} did not expose trustworthy accessible query evidence.`, { url });
606
+ }
607
+ return {
608
+ status: 'resolved',
609
+ outcome: 'accessible-query',
610
+ source: 'live-dom',
611
+ stepId: selector.stepId,
612
+ selector,
613
+ url,
614
+ query: toQueryDescriptor(selector, accessibleQuery),
615
+ inspectedElement: inspection.element,
616
+ warnings: [],
617
+ };
618
+ }
619
+ catch (error) {
620
+ return toUnresolvedSelectorResult(selector, 'inspection-failed', `Playwright inspection failed for selector ${selector.selector}.`, {
621
+ url,
622
+ inspectionError: error instanceof Error ? error.message : 'Unknown error',
623
+ });
624
+ }
625
+ }
176
626
  /**
177
627
  * Selects the most appropriate RTL matcher based on element type and action.
178
628
  *
@@ -210,27 +660,16 @@ export function selectMatcher(info, action) {
210
660
  * @returns ElementInfo or null if element not found/error occurs
211
661
  */
212
662
  export async function inspectElement(url, cssSelector, timeoutMs = 5000) {
213
- let browser = null;
214
- try {
215
- browser = await chromium.launch({ headless: true });
216
- const page = await browser.newPage();
217
- await page.goto(url, {
218
- timeout: timeoutMs,
219
- waitUntil: 'domcontentloaded',
220
- });
221
- return await readElementInfo(page, cssSelector);
663
+ const inspection = await inspectSelector(url, cssSelector, timeoutMs);
664
+ if (inspection.status === 'found') {
665
+ return inspection.element;
222
666
  }
223
- catch (error) {
224
- console.warn(pc.yellow('[taro]') +
667
+ if (inspection.status === 'inspection-failed') {
668
+ console.warn(pc.yellow('[tayo]') +
225
669
  pc.dim(' QRY-02:') +
226
- ` Failed to inspect element ${cssSelector} on ${url}: ${error instanceof Error ? error.message : 'Unknown error'}`);
227
- return null;
228
- }
229
- finally {
230
- if (browser) {
231
- await browser.close();
232
- }
670
+ ` Failed to inspect element ${cssSelector} on ${url}: ${inspection.error}`);
233
671
  }
672
+ return null;
234
673
  }
235
674
  /**
236
675
  * Inspects multiple elements on a page using a single Playwright browser instance.
@@ -263,7 +702,7 @@ export async function inspectElements(url, selectors, timeoutMs = 5000) {
263
702
  }
264
703
  catch (error) {
265
704
  // On browser/page error, set all selectors to null
266
- console.warn(pc.yellow('[taro]') +
705
+ console.warn(pc.yellow('[tayo]') +
267
706
  pc.dim(' QRY-02:') +
268
707
  ` Failed to inspect elements on ${url}: ${error instanceof Error ? error.message : 'Unknown error'}`);
269
708
  for (const selector of selectors) {
@@ -284,7 +723,7 @@ export async function inspectElements(url, selectors, timeoutMs = 5000) {
284
723
  * @param selector - The CSS selector that required fallback to testId
285
724
  */
286
725
  export function emitQry03Warning(selector) {
287
- console.warn(pc.yellow('[taro]') +
726
+ console.warn(pc.yellow('[tayo]') +
288
727
  pc.dim(' QRY-03:') +
289
728
  ` No accessible query for ${pc.bold(selector)} — consider adding aria-label or data-testid to this element`);
290
729
  }