@tayo-dev/rtl 1.2.0 → 1.3.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 (50) hide show
  1. package/README.md +27 -32
  2. package/assets/claude/commands/@tayo-dev/rtl/generate.md +2 -2
  3. package/assets/codex/@tayo-dev/rtl-generate/SKILL.md +1 -1
  4. package/assets/gemini/commands/@tayo-dev/rtl/generate.toml +2 -2
  5. package/assets/opencode/commands/@tayo-dev/rtl-generate.md +2 -2
  6. package/dist/cli/commands/generate.d.ts +1 -1
  7. package/dist/cli/commands/generate.d.ts.map +1 -1
  8. package/dist/cli/commands/generate.js +122 -151
  9. package/dist/cli/commands/generate.js.map +1 -1
  10. package/dist/core/baseline-normalizer.d.ts +3 -0
  11. package/dist/core/baseline-normalizer.d.ts.map +1 -0
  12. package/dist/core/baseline-normalizer.js +65 -0
  13. package/dist/core/baseline-normalizer.js.map +1 -0
  14. package/dist/core/boundary-intelligence.d.ts +10 -0
  15. package/dist/core/boundary-intelligence.d.ts.map +1 -0
  16. package/dist/core/boundary-intelligence.js +254 -0
  17. package/dist/core/boundary-intelligence.js.map +1 -0
  18. package/dist/core/generator.d.ts.map +1 -1
  19. package/dist/core/generator.js +15 -0
  20. package/dist/core/generator.js.map +1 -1
  21. package/dist/core/input-loader.d.ts +4 -0
  22. package/dist/core/input-loader.d.ts.map +1 -0
  23. package/dist/core/input-loader.js +78 -0
  24. package/dist/core/input-loader.js.map +1 -0
  25. package/dist/core/js-parser.d.ts +6 -2
  26. package/dist/core/js-parser.d.ts.map +1 -1
  27. package/dist/core/js-parser.js +329 -72
  28. package/dist/core/js-parser.js.map +1 -1
  29. package/dist/core/parser.d.ts.map +1 -1
  30. package/dist/core/parser.js +11 -1
  31. package/dist/core/parser.js.map +1 -1
  32. package/dist/core/recording-intelligence.d.ts.map +1 -1
  33. package/dist/core/recording-intelligence.js +31 -5
  34. package/dist/core/recording-intelligence.js.map +1 -1
  35. package/dist/core/scorer.d.ts.map +1 -1
  36. package/dist/core/scorer.js +12 -3
  37. package/dist/core/scorer.js.map +1 -1
  38. package/dist/core/suite-planner.d.ts +27 -0
  39. package/dist/core/suite-planner.d.ts.map +1 -0
  40. package/dist/core/suite-planner.js +101 -0
  41. package/dist/core/suite-planner.js.map +1 -0
  42. package/dist/index.js +2 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/types/recording.d.ts +50 -2
  45. package/dist/types/recording.d.ts.map +1 -1
  46. package/dist/types/recording.js +3 -1
  47. package/dist/types/recording.js.map +1 -1
  48. package/dist/types/score.d.ts +1 -0
  49. package/dist/types/score.d.ts.map +1 -1
  50. package/package.json +12 -2
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Babel AST-based parser for Testing Library Recorder JS output.
3
- * Parses the JavaScript recording format and produces structured NormalizedRecording.
3
+ * Parses the JavaScript recording format and produces truthful baseline metadata.
4
4
  */
5
5
  import * as babelParser from '@babel/parser';
6
6
  import _traverse from '@babel/traverse';
7
+ import * as t from '@babel/types';
8
+ import { createStepId, } from '../types/recording.js';
7
9
  // ESM interop for @babel/traverse
8
10
  const traverse = _traverse.default ?? _traverse;
9
11
  /**
@@ -100,19 +102,211 @@ export function segmentIntoItGroups(steps) {
100
102
  return groups;
101
103
  }
102
104
  /**
103
- * Extracts a string argument from a Babel AST node
105
+ * Extracts a string-like value from a Babel AST node
104
106
  */
105
- function extractStringArg(node) {
107
+ function extractLiteralValue(node) {
106
108
  if (!node)
107
109
  return undefined;
108
- if (node.type === 'StringLiteral') {
110
+ if (t.isStringLiteral(node)) {
109
111
  return node.value;
110
112
  }
111
- if (node.type === 'TemplateLiteral' && node.quasis.length > 0) {
112
- return node.quasis[0].value.cooked;
113
+ if (t.isNumericLiteral(node) || t.isBooleanLiteral(node)) {
114
+ return String(node.value);
115
+ }
116
+ if (t.isTemplateLiteral(node) && node.expressions.length === 0) {
117
+ return node.quasis[0]?.value.cooked ?? undefined;
113
118
  }
114
119
  return undefined;
115
120
  }
121
+ function sliceSource(code, node) {
122
+ if (!node || typeof node.start !== 'number' || typeof node.end !== 'number') {
123
+ return undefined;
124
+ }
125
+ return code.slice(node.start, node.end);
126
+ }
127
+ function extractPlainObject(node) {
128
+ if (!t.isObjectExpression(node)) {
129
+ return undefined;
130
+ }
131
+ const entries = node.properties.flatMap((property) => {
132
+ if (!t.isObjectProperty(property) || property.computed) {
133
+ return [];
134
+ }
135
+ const key = t.isIdentifier(property.key)
136
+ ? property.key.name
137
+ : t.isStringLiteral(property.key)
138
+ ? property.key.value
139
+ : undefined;
140
+ const value = extractLiteralValue(property.value);
141
+ if (!key || value === undefined) {
142
+ return [];
143
+ }
144
+ return [[key, value]];
145
+ });
146
+ return Object.fromEntries(entries);
147
+ }
148
+ function memberExpressionToSubject(node) {
149
+ if (!node) {
150
+ return undefined;
151
+ }
152
+ if (t.isIdentifier(node)) {
153
+ return node.name;
154
+ }
155
+ if (t.isThisExpression(node)) {
156
+ return 'this';
157
+ }
158
+ if (t.isMemberExpression(node) && !node.computed) {
159
+ const object = memberExpressionToSubject(node.object);
160
+ const property = t.isIdentifier(node.property) ? node.property.name : undefined;
161
+ if (object && property) {
162
+ return `${object}.${property}`;
163
+ }
164
+ }
165
+ return undefined;
166
+ }
167
+ function getLine(node) {
168
+ return node?.loc?.start?.line ?? 0;
169
+ }
170
+ function isUserEventCall(node) {
171
+ return (t.isMemberExpression(node.callee) &&
172
+ t.isIdentifier(node.callee.object, { name: 'userEvent' }) &&
173
+ t.isIdentifier(node.callee.property));
174
+ }
175
+ function isPageGotoCall(node) {
176
+ return (t.isMemberExpression(node.callee) &&
177
+ t.isIdentifier(node.callee.object, { name: 'page' }) &&
178
+ t.isIdentifier(node.callee.property, { name: 'goto' }));
179
+ }
180
+ function isScreenQueryCall(node) {
181
+ return (t.isMemberExpression(node.callee) &&
182
+ t.isIdentifier(node.callee.property) &&
183
+ node.callee.property.name.startsWith('getBy') &&
184
+ ((t.isIdentifier(node.callee.object, { name: 'screen' }) ||
185
+ (t.isCallExpression(node.callee.object) &&
186
+ t.isIdentifier(node.callee.object.callee, { name: 'within' }))) ||
187
+ t.isIdentifier(node.callee.object, { name: 'document' })));
188
+ }
189
+ function isSelectorCall(node) {
190
+ return (t.isMemberExpression(node.callee) &&
191
+ t.isIdentifier(node.callee.object, { name: 'document' }) &&
192
+ t.isIdentifier(node.callee.property) &&
193
+ ['querySelector', 'querySelectorAll'].includes(node.callee.property.name));
194
+ }
195
+ function isExpectationCall(node) {
196
+ return (t.isMemberExpression(node.callee) &&
197
+ t.isIdentifier(node.callee.property) &&
198
+ t.isCallExpression(node.callee.object) &&
199
+ t.isIdentifier(node.callee.object.callee, { name: 'expect' }));
200
+ }
201
+ function isRecorderTitleCall(node) {
202
+ return t.isIdentifier(node.callee) && ['test', 'it'].includes(node.callee.name);
203
+ }
204
+ function isStandaloneExpression(path) {
205
+ return (path.parentPath.isExpressionStatement() ||
206
+ (path.parentPath.isAwaitExpression() && path.parentPath.parentPath?.isExpressionStatement()));
207
+ }
208
+ function mapAssertionKind(subject) {
209
+ if (subject === 'location.href') {
210
+ return 'location';
211
+ }
212
+ if (subject === 'document.title') {
213
+ return 'document-title';
214
+ }
215
+ return 'custom';
216
+ }
217
+ function fallbackDocCommentTitle(code) {
218
+ const titleMatch = code.match(/\/\*\*\s*\n\s*\*\s*([^@\*]+)/);
219
+ const title = titleMatch?.[1]?.trim();
220
+ return title ? title.replace(/\s+at\s+\d{1,2}:\d{2}:\d{2}/, '').replace(/-/g, ' ') : undefined;
221
+ }
222
+ function extractQueryDescriptor(code, node, stepId) {
223
+ if (!isScreenQueryCall(node) || !t.isMemberExpression(node.callee) || !t.isIdentifier(node.callee.property)) {
224
+ return undefined;
225
+ }
226
+ const method = node.callee.property.name;
227
+ const queryRoot = t.isIdentifier(node.callee.object, { name: 'screen' })
228
+ ? 'screen'
229
+ : t.isCallExpression(node.callee.object) &&
230
+ t.isIdentifier(node.callee.object.callee, { name: 'within' })
231
+ ? 'within'
232
+ : 'document';
233
+ const primaryTarget = extractLiteralValue(node.arguments[0]);
234
+ const options = extractPlainObject(node.arguments[1]);
235
+ const name = typeof options?.name === 'string' ? options.name : undefined;
236
+ const role = method === 'getByRole' ? primaryTarget : undefined;
237
+ return {
238
+ stepId,
239
+ method,
240
+ queryRoot,
241
+ line: getLine(node),
242
+ target: name ?? primaryTarget,
243
+ quality: classifyQuery(method),
244
+ raw: sliceSource(code, node),
245
+ options,
246
+ role,
247
+ name,
248
+ };
249
+ }
250
+ function extractSelectorDescriptor(code, node, stepId) {
251
+ if (!isSelectorCall(node) || !t.isMemberExpression(node.callee) || !t.isIdentifier(node.callee.property)) {
252
+ return undefined;
253
+ }
254
+ const selector = extractLiteralValue(node.arguments[0]);
255
+ if (!selector) {
256
+ return undefined;
257
+ }
258
+ return {
259
+ stepId,
260
+ selector,
261
+ selectorKind: `document.${node.callee.property.name}`,
262
+ line: getLine(node),
263
+ raw: sliceSource(code, node),
264
+ };
265
+ }
266
+ function resolveTarget(code, node, stepId) {
267
+ if (!node || !t.isExpression(node)) {
268
+ return {};
269
+ }
270
+ if (t.isCallExpression(node)) {
271
+ const query = extractQueryDescriptor(code, node, stepId);
272
+ if (query) {
273
+ return {
274
+ query,
275
+ target: query.target ?? query.role ?? query.method,
276
+ metadata: {
277
+ query: {
278
+ method: query.method,
279
+ queryRoot: query.queryRoot,
280
+ target: query.target,
281
+ role: query.role,
282
+ name: query.name,
283
+ options: query.options,
284
+ raw: query.raw,
285
+ },
286
+ },
287
+ };
288
+ }
289
+ const selector = extractSelectorDescriptor(code, node, stepId);
290
+ if (selector) {
291
+ return {
292
+ selector,
293
+ target: selector.selector,
294
+ metadata: {
295
+ selector,
296
+ },
297
+ };
298
+ }
299
+ }
300
+ const literalValue = extractLiteralValue(node);
301
+ if (literalValue !== undefined) {
302
+ return { target: literalValue };
303
+ }
304
+ const subject = memberExpressionToSubject(node);
305
+ if (subject) {
306
+ return { target: subject };
307
+ }
308
+ return {};
309
+ }
116
310
  /**
117
311
  * Maps userEvent method calls to NormalizedAction
118
312
  */
@@ -139,104 +333,167 @@ export async function parseJsRecording(code) {
139
333
  if (trimmed.startsWith('{')) {
140
334
  throw new Error('Expected JS file from Testing Library Recorder extension. Got JSON — use the Chrome Recorder JSON parser instead.');
141
335
  }
142
- // Extract environment URL
143
336
  const environmentUrl = extractEnvironmentUrl(code);
144
- // Extract title from file
145
- let title = 'Recorded Flow';
146
- const titleMatch = code.match(/\/\*\*\s*\n\s*\*\s*([^@\*]+)/);
147
- if (titleMatch) {
148
- title = titleMatch[1].trim();
149
- // Sanitize: strip date suffix and replace hyphens
150
- title = title.replace(/\s+at\s+\d{1,2}:\d{2}:\d{2}/, '').replace(/-/g, ' ');
151
- }
152
337
  // Parse with Babel
153
338
  const ast = babelParser.parse(code, {
154
- sourceType: 'commonjs',
339
+ plugins: ['jsx', 'typescript'],
340
+ sourceType: 'unambiguous',
155
341
  });
342
+ let title;
156
343
  const steps = [];
344
+ const queries = [];
345
+ const selectors = [];
346
+ const assertions = [];
157
347
  const querySelectorCalls = [];
158
348
  // Traverse AST
159
349
  traverse(ast, {
160
350
  CallExpression(path) {
161
- const callee = path.node.callee;
162
- const line = path.node.loc?.start?.line ?? 0;
163
- // Handle screen.getBy* calls
164
- if (callee.type === 'MemberExpression' &&
165
- callee.object.type === 'Identifier' &&
166
- callee.object.name === 'screen' &&
167
- callee.property.type === 'Identifier') {
168
- const methodName = callee.property.name;
169
- if (methodName && methodName.startsWith('getBy')) {
170
- const target = extractStringArg(path.node.arguments[0]);
171
- // All screen queries become asserts in this implementation
172
- steps.push({
173
- action: 'assert',
174
- target: target ?? methodName,
175
- value: undefined,
176
- originalType: methodName,
177
- line,
178
- source: 'js',
179
- });
351
+ if (!title && isRecorderTitleCall(path.node)) {
352
+ const candidateTitle = extractLiteralValue(path.node.arguments[0]);
353
+ if (candidateTitle) {
354
+ title = candidateTitle;
180
355
  }
181
356
  }
182
- // Handle document.querySelector calls
183
- if (callee.type === 'MemberExpression' &&
184
- callee.object.type === 'Identifier' &&
185
- callee.object.name === 'document' &&
186
- callee.property.type === 'Identifier' &&
187
- callee.property.name === 'querySelector') {
188
- const selector = extractStringArg(path.node.arguments[0]);
189
- if (selector) {
190
- querySelectorCalls.push({ selector, line });
357
+ if (isUserEventCall(path.node) && t.isMemberExpression(path.node.callee) && t.isIdentifier(path.node.callee.property)) {
358
+ const stepId = createStepId('js', steps.length);
359
+ const methodName = path.node.callee.property.name;
360
+ const action = mapUserEventCall(methodName);
361
+ const resolvedTarget = resolveTarget(code, path.node.arguments[0], stepId);
362
+ const value = extractLiteralValue(path.node.arguments[1]);
363
+ if (resolvedTarget.query) {
364
+ queries.push(resolvedTarget.query);
191
365
  }
192
- }
193
- // Handle userEvent.* calls
194
- if (callee.type === 'MemberExpression' &&
195
- callee.object.type === 'Identifier' &&
196
- callee.object.name === 'userEvent') {
197
- const methodName = callee.property.name;
198
- if (methodName) {
199
- const action = mapUserEventCall(methodName);
200
- // Extract target from first argument (element reference)
201
- const target = extractStringArg(path.node.arguments[0]) ?? methodName;
202
- // Extract value from second argument for type/keyboard
203
- const value = extractStringArg(path.node.arguments[1]);
204
- steps.push({
205
- action,
206
- target,
207
- value,
208
- originalType: methodName,
209
- line,
210
- source: 'js',
366
+ if (resolvedTarget.selector) {
367
+ selectors.push(resolvedTarget.selector);
368
+ querySelectorCalls.push({
369
+ selector: resolvedTarget.selector.selector,
370
+ line: resolvedTarget.selector.line ?? getLine(path.node),
371
+ stepId,
211
372
  });
212
373
  }
374
+ steps.push({
375
+ id: stepId,
376
+ action,
377
+ target: resolvedTarget.target ?? methodName,
378
+ value,
379
+ originalType: methodName,
380
+ line: getLine(path.node),
381
+ source: 'js',
382
+ metadata: {
383
+ ...resolvedTarget.metadata,
384
+ },
385
+ });
386
+ return;
213
387
  }
214
- // Handle await page.goto(url)
215
- if (callee.type === 'MemberExpression' &&
216
- callee.object.type === 'Identifier' &&
217
- callee.object.name === 'page' &&
218
- callee.property.type === 'Identifier' &&
219
- callee.property.name === 'goto') {
220
- const target = extractStringArg(path.node.arguments[0]);
388
+ if (isExpectationCall(path.node) &&
389
+ t.isMemberExpression(path.node.callee) &&
390
+ t.isIdentifier(path.node.callee.property) &&
391
+ t.isCallExpression(path.node.callee.object)) {
392
+ const matcher = path.node.callee.property.name;
393
+ const expectCall = path.node.callee.object;
394
+ const subject = memberExpressionToSubject(expectCall.arguments[0]);
395
+ const expected = extractLiteralValue(path.node.arguments[0]);
396
+ const stepId = createStepId('js', steps.length);
397
+ const assertion = {
398
+ stepId,
399
+ kind: mapAssertionKind(subject),
400
+ line: getLine(path.node),
401
+ target: subject,
402
+ raw: sliceSource(code, path.node),
403
+ expected,
404
+ matcher,
405
+ subject,
406
+ };
407
+ assertions.push(assertion);
408
+ steps.push({
409
+ id: stepId,
410
+ action: 'assert',
411
+ target: subject ?? matcher,
412
+ value: expected,
413
+ originalType: matcher,
414
+ line: getLine(path.node),
415
+ source: 'js',
416
+ metadata: {
417
+ assertion,
418
+ },
419
+ });
420
+ return;
421
+ }
422
+ if (isPageGotoCall(path.node)) {
423
+ const target = extractLiteralValue(path.node.arguments[0]);
221
424
  if (target) {
425
+ const stepId = createStepId('js', steps.length);
222
426
  steps.push({
427
+ id: stepId,
223
428
  action: 'navigate',
224
429
  target,
225
430
  value: undefined,
226
431
  originalType: 'goto',
227
- line,
432
+ line: getLine(path.node),
433
+ source: 'js',
434
+ });
435
+ }
436
+ return;
437
+ }
438
+ if (isStandaloneExpression(path)) {
439
+ const stepId = createStepId('js', steps.length);
440
+ const query = extractQueryDescriptor(code, path.node, stepId);
441
+ if (query) {
442
+ queries.push(query);
443
+ const assertion = {
444
+ stepId,
445
+ kind: 'query-result',
446
+ line: getLine(path.node),
447
+ target: query.target,
448
+ queryMethod: query.method,
449
+ raw: query.raw,
450
+ };
451
+ assertions.push(assertion);
452
+ steps.push({
453
+ id: stepId,
454
+ action: 'assert',
455
+ target: query.target ?? query.method,
456
+ value: undefined,
457
+ originalType: query.method,
458
+ line: getLine(path.node),
228
459
  source: 'js',
460
+ metadata: {
461
+ query: {
462
+ method: query.method,
463
+ queryRoot: query.queryRoot,
464
+ target: query.target,
465
+ role: query.role,
466
+ name: query.name,
467
+ options: query.options,
468
+ raw: query.raw,
469
+ },
470
+ assertion,
471
+ },
472
+ });
473
+ return;
474
+ }
475
+ const selector = extractSelectorDescriptor(code, path.node, stepId);
476
+ if (selector) {
477
+ selectors.push(selector);
478
+ querySelectorCalls.push({
479
+ selector: selector.selector,
480
+ line: selector.line ?? getLine(path.node),
481
+ stepId,
229
482
  });
230
483
  }
231
484
  }
232
485
  },
233
486
  });
487
+ const resolvedTitle = title ?? fallbackDocCommentTitle(code) ?? 'Recorded Flow';
234
488
  // Segment into ItGroups
235
489
  const itGroups = segmentIntoItGroups(steps);
236
490
  return {
237
- title,
491
+ title: resolvedTitle,
238
492
  environmentUrl,
239
493
  steps,
494
+ queries,
495
+ selectors,
496
+ assertions,
240
497
  querySelectorCalls,
241
498
  itGroups,
242
499
  };
@@ -1 +1 @@
1
- {"version":3,"file":"js-parser.js","sourceRoot":"","sources":["../../src/core/js-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"js-parser.js","sourceRoot":"","sources":["../../src/core/js-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAGV,UAAU,EAEV,mBAAmB,EACnB,cAAc,EACf,MAAM,uBAAuB,CAAA;AAiC9B,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CA+DpE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgCnF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAGV,UAAU,EAIV,mBAAmB,EACnB,cAAc,EACf,MAAM,uBAAuB,CAAA;AAkC9B,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CA+DpE;AAUD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkCnF"}
@@ -4,6 +4,7 @@
4
4
  * into a consistent internal representation.
5
5
  */
6
6
  import { readFile } from 'node:fs/promises';
7
+ import { createStepId } from '../types/recording.js';
7
8
  function getFirstSelector(selectors) {
8
9
  if (!selectors || selectors.length === 0)
9
10
  return undefined;
@@ -88,6 +89,13 @@ export function normalizeStep(chromeStep) {
88
89
  originalType: chromeStep.type,
89
90
  });
90
91
  }
92
+ function attachJsonStepIds(steps) {
93
+ return steps.map((step, index) => ({
94
+ ...step,
95
+ id: (step.id ?? createStepId('json', index)),
96
+ source: 'json',
97
+ }));
98
+ }
91
99
  export async function parseRecording(filePath) {
92
100
  let raw;
93
101
  try {
@@ -110,11 +118,13 @@ export async function parseRecording(filePath) {
110
118
  if (!Array.isArray(recording.steps)) {
111
119
  throw new Error('Invalid Chrome Recorder export: "steps" must be an array');
112
120
  }
113
- const steps = recording.steps.map((step) => normalizeStep(step));
121
+ const steps = attachJsonStepIds(recording.steps.map((step) => normalizeStep(step)));
114
122
  return {
115
123
  title: recording.title ?? 'Untitled Recording',
116
124
  steps,
117
125
  rawStepCount: recording.steps.length,
126
+ url: recording.settings?.url,
127
+ settings: recording.settings,
118
128
  };
119
129
  }
120
130
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recording-intelligence.d.ts","sourceRoot":"","sources":["../../src/core/recording-intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,cAAc,GAAG,cAAc,CAAA;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,WAAW,EAAE,IAAI,CACf,oBAAoB,EACpB,qBAAqB,GAAG,yBAAyB,GAAG,wBAAwB,CAC7E,CAAA;CACF;AAwFD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAwCxE;AAED,wBAAgB,2BAA2B,CACzC,iBAAiB,EAAE,iBAAiB,GACnC,sBAAsB,EAAE,CA2B1B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,iBAAiB,CA2D3E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,GAAG,iBAAiB,CAelF"}
1
+ {"version":3,"file":"recording-intelligence.d.ts","sourceRoot":"","sources":["../../src/core/recording-intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,cAAc,GAAG,cAAc,CAAA;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,WAAW,EAAE,IAAI,CACf,oBAAoB,EACpB,qBAAqB,GAAG,yBAAyB,GAAG,wBAAwB,CAC7E,CAAA;CACF;AAuHD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CA4CxE;AAED,wBAAgB,2BAA2B,CACzC,iBAAiB,EAAE,iBAAiB,GACnC,sBAAsB,EAAE,CA2B1B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,iBAAiB,CA2D3E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,GAAG,iBAAiB,CAelF"}
@@ -1,3 +1,25 @@
1
+ function getAssertionKind(step) {
2
+ const assertion = step.metadata?.assertion;
3
+ if (assertion &&
4
+ typeof assertion === 'object' &&
5
+ 'kind' in assertion &&
6
+ typeof assertion.kind === 'string') {
7
+ return assertion.kind;
8
+ }
9
+ if (step.target === 'location.href') {
10
+ return 'location';
11
+ }
12
+ if (step.target === 'document.title') {
13
+ return 'document-title';
14
+ }
15
+ return undefined;
16
+ }
17
+ function isSyncAssertionStep(step) {
18
+ if (step.action !== 'assert') {
19
+ return false;
20
+ }
21
+ return ['location', 'document-title'].includes(getAssertionKind(step) ?? '');
22
+ }
1
23
  function hasPointerMetadata(step) {
2
24
  return [step.x, step.y, step.offsetX, step.offsetY].some((value) => typeof value === 'number');
3
25
  }
@@ -30,21 +52,22 @@ function pickRepresentativeClick(cluster) {
30
52
  return cluster.find((step) => !isDoubleClickVariant(step)) ?? cluster[0];
31
53
  }
32
54
  function deriveIntentLabel(steps) {
33
- const navigateStep = steps.find((step) => step.action === 'navigate');
55
+ const meaningfulSteps = steps.filter((step) => !isSyncAssertionStep(step));
56
+ const navigateStep = meaningfulSteps.find((step) => step.action === 'navigate');
34
57
  if (navigateStep) {
35
58
  return navigateStep.target ? `navigate to ${navigateStep.target}` : 'navigation flow';
36
59
  }
37
- const submitStep = steps.find((step) => step.action === 'click' &&
60
+ const submitStep = meaningfulSteps.find((step) => step.action === 'click' &&
38
61
  /save|submit|confirm|continue|done|create|update/i.test(step.target ?? ''));
39
62
  if (submitStep?.target) {
40
63
  return `submit ${submitStep.target}`;
41
64
  }
42
- const fillStep = steps.find((step) => step.action === 'fill' || step.action === 'select');
65
+ const fillStep = meaningfulSteps.find((step) => step.action === 'fill' || step.action === 'select');
43
66
  if (fillStep?.target) {
44
67
  return `edit ${fillStep.target}`;
45
68
  }
46
- const clickStep = steps.find((step) => step.action === 'click');
47
- if (clickStep?.target && steps.some((step) => step.action === 'assert')) {
69
+ const clickStep = meaningfulSteps.find((step) => step.action === 'click');
70
+ if (clickStep?.target && meaningfulSteps.some((step) => step.action === 'assert')) {
48
71
  return `confirm ${clickStep.target}`;
49
72
  }
50
73
  if (clickStep?.target) {
@@ -75,6 +98,9 @@ export function inferIntentGroups(steps) {
75
98
  currentGroup = [];
76
99
  };
77
100
  for (const step of steps) {
101
+ if (isSyncAssertionStep(step)) {
102
+ continue;
103
+ }
78
104
  if (step.action === 'navigate') {
79
105
  flushGroup();
80
106
  currentGroup = [step];