@tayo-dev/rtl 1.2.0 → 1.3.0-alpha.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 (37) 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 +88 -149
  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/generator.d.ts.map +1 -1
  15. package/dist/core/generator.js +15 -0
  16. package/dist/core/generator.js.map +1 -1
  17. package/dist/core/input-loader.d.ts +4 -0
  18. package/dist/core/input-loader.d.ts.map +1 -0
  19. package/dist/core/input-loader.js +78 -0
  20. package/dist/core/input-loader.js.map +1 -0
  21. package/dist/core/js-parser.d.ts +6 -2
  22. package/dist/core/js-parser.d.ts.map +1 -1
  23. package/dist/core/js-parser.js +329 -72
  24. package/dist/core/js-parser.js.map +1 -1
  25. package/dist/core/parser.d.ts.map +1 -1
  26. package/dist/core/parser.js +11 -1
  27. package/dist/core/parser.js.map +1 -1
  28. package/dist/core/recording-intelligence.d.ts.map +1 -1
  29. package/dist/core/recording-intelligence.js +31 -5
  30. package/dist/core/recording-intelligence.js.map +1 -1
  31. package/dist/index.js +2 -2
  32. package/dist/index.js.map +1 -1
  33. package/dist/types/recording.d.ts +50 -2
  34. package/dist/types/recording.d.ts.map +1 -1
  35. package/dist/types/recording.js +3 -1
  36. package/dist/types/recording.js.map +1 -1
  37. package/package.json +12 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Taro
2
2
 
3
- Install Taro into Claude Code, OpenCode, Gemini CLI, or Codex, then generate React Testing Library tests from Chrome Recorder recordings.
3
+ Install Taro into Claude Code, OpenCode, Gemini CLI, or Codex, then generate React Testing Library tests from Testing Library Recorder recordings.
4
4
 
5
5
  Taro ships as an installer-first package. The package entrypoint bootstraps runtime-native commands or skills into your agent environment, and the generated runtime surface still routes back to `taro generate` when you want Recorder-to-RTL output.
6
6
 
@@ -94,14 +94,11 @@ After installation, use `taro generate` directly or call the runtime-native inst
94
94
 
95
95
  - Node.js 18 or later
96
96
  - A React project using `@testing-library/react`
97
- - Chrome DevTools Recorder (built into Chrome no extension needed for JSON exports)
97
+ - Chrome DevTools Recorder with the Testing Library Recorder extension installed
98
98
 
99
99
  ### Record a user flow
100
100
 
101
- Open Chrome DevTools → Recorder panel → click "Start new recording" → perform your user flow → click "End recording". Then either:
102
-
103
- - Export as JSON and save as `recording.json`
104
- - Export via Testing Library Recorder extension and save as `recording.js`
101
+ Open Chrome DevTools → Recorder panel → click "Start new recording" → perform your user flow → click "End recording". Then export via the Testing Library Recorder extension and save as `recording.js`.
105
102
 
106
103
  ### Generate the test
107
104
 
@@ -124,13 +121,13 @@ On subsequent runs in the same project, Taro reads `.taro/conventions.json` to m
124
121
 
125
122
  ### `taro generate <file>`
126
123
 
127
- Generates a React Testing Library test from a Chrome Recorder export.
124
+ Generates a React Testing Library test from a Testing Library Recorder export.
128
125
 
129
126
  **Arguments:**
130
127
 
131
128
  | Argument | Description |
132
129
  |----------|-------------|
133
- | `<file>` | Path to the recording file. Accepts Chrome Recorder JSON exports (`.json`) or Testing Library Recorder JS files (`.js`). |
130
+ | `<file>` | Path to the recording file. Accepts Testing Library Recorder JS files (`.js`). |
134
131
 
135
132
  **Options:**
136
133
 
@@ -146,50 +143,48 @@ Generates a React Testing Library test from a Chrome Recorder export.
146
143
 
147
144
  ```bash
148
145
  # Generate and write a test next to the recording
149
- taro generate ./recordings/checkout-flow.json
146
+ taro generate ./recordings/checkout-flow.js
150
147
 
151
148
  # Preview without writing (dry run)
152
- taro generate --dry-run ./recordings/checkout-flow.json
149
+ taro generate --dry-run ./recordings/checkout-flow.js
153
150
 
154
151
  # Write to a specific path
155
- taro generate --output src/__tests__/checkout.test.tsx ./recordings/checkout-flow.json
152
+ taro generate --output src/__tests__/checkout.test.tsx ./recordings/checkout-flow.js
156
153
 
157
154
  # Overwrite an existing test
158
- taro generate --force ./recordings/checkout-flow.json
155
+ taro generate --force ./recordings/checkout-flow.js
159
156
  ```
160
157
 
161
158
  **Output file naming:**
162
- If `--output` is not provided, Taro derives the output path from the input file: `{input-dir}/{input-basename}.test.tsx`. For example, `./recordings/login.json` → `./recordings/login.test.tsx`.
159
+ If `--output` is not provided, Taro derives the output path from the input file: `{input-dir}/{input-basename}.test.tsx`. For example, `./recordings/login.js` → `./recordings/login.test.tsx`.
163
160
 
164
161
  **Supported input formats:**
165
- - Chrome Recorder JSON (`.json`) — exported directly from Chrome DevTools Recorder
166
162
  - Testing Library Recorder JS (`.js`) — exported via the Testing Library Recorder Chrome extension; detected by `.js` extension or `@jest-environment-options` header
167
163
 
168
164
  ## Worked Example
169
165
 
170
- ### Input: Chrome Recorder export (`login-flow.json`)
171
-
172
- Here is a typical Chrome Recorder JSON export capturing a login flow.
173
-
174
- ```json
175
- {
176
- "title": "login flow",
177
- "steps": [
178
- { "type": "navigate", "url": "http://localhost:3000/login" },
179
- { "type": "click", "selectors": [["aria/Email address"]] },
180
- { "type": "change", "value": "user@example.com", "selectors": [["#email"]] },
181
- { "type": "click", "selectors": [["aria/Password"]] },
182
- { "type": "change", "value": "secret123", "selectors": [["#password"]] },
183
- { "type": "click", "selectors": [["aria/Sign in[role=\"button\"]"]] },
184
- { "type": "waitForElement", "selectors": [["aria/Welcome back"]] }
185
- ]
186
- }
166
+ ### Input: Testing Library Recorder export (`login-flow.js`)
167
+
168
+ Here is a typical Testing Library Recorder export capturing a login flow.
169
+
170
+ ```js
171
+ import { screen } from '@testing-library/dom'
172
+ import userEvent from '@testing-library/user-event'
173
+
174
+ test('login flow', async () => {
175
+ await userEvent.click(screen.getByRole('textbox', { name: 'Email address' }))
176
+ await userEvent.type(screen.getByRole('textbox', { name: 'Email address' }), 'user@example.com')
177
+ await userEvent.click(screen.getByRole('textbox', { name: 'Password' }))
178
+ await userEvent.type(screen.getByRole('textbox', { name: 'Password' }), 'secret123')
179
+ await userEvent.click(screen.getByRole('button', { name: 'Sign in' }))
180
+ await userEvent.click(screen.getByText('Welcome back'))
181
+ })
187
182
  ```
188
183
 
189
184
  ### Command
190
185
 
191
186
  ```bash
192
- taro generate ./login-flow.json
187
+ taro generate ./login-flow.js
193
188
  ```
194
189
 
195
190
  ### Terminal output
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: "@tayo-dev/rtl:generate"
3
- description: "Generate RTL tests from Chrome Recorder exports with Taro"
3
+ description: "Generate RTL tests from Recorder exports with Taro"
4
4
  ---
5
5
 
6
6
  <objective>
7
- Generate a React Testing Library test from a Chrome Recorder export.
7
+ Generate a React Testing Library test from a Recorder export.
8
8
  </objective>
9
9
 
10
10
  <process>
@@ -5,7 +5,7 @@ description: "Generate React Testing Library tests from Recorder exports with Ta
5
5
 
6
6
  # Tayo Generate
7
7
 
8
- Use `$@tayo-dev/rtl-generate` when the user wants to turn a Chrome Recorder export into a React Testing Library test.
8
+ Use `$@tayo-dev/rtl-generate` when the user wants to turn a Recorder export into a React Testing Library test.
9
9
 
10
10
  ## Inputs
11
11
 
@@ -1,8 +1,8 @@
1
- description = "Generate RTL tests from Chrome Recorder exports with Taro"
1
+ description = "Generate RTL tests from Recorder exports with Taro"
2
2
  prompt = """
3
3
  You are the installed /@tayo-dev/rtl:generate command for @tayo-dev/rtl.
4
4
 
5
- Generate a React Testing Library test from a Chrome Recorder export.
5
+ Generate a React Testing Library test from a Recorder export.
6
6
  1. Confirm the recording path before running anything destructive.
7
7
  2. Run `taro generate <recording-file>` by default.
8
8
  3. Add `--dry-run`, `--output <path>`, or `--force` only when the user asks for them or the context requires them.
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: Generate RTL tests from Chrome Recorder exports with Taro
2
+ description: Generate RTL tests from Recorder exports with Taro
3
3
  ---
4
4
 
5
5
  You are the installed `/@tayo-dev/rtl-generate` command for `@tayo-dev/rtl`.
6
6
 
7
- Generate a React Testing Library test from a Chrome Recorder export.
7
+ Generate a React Testing Library test from a Recorder export.
8
8
  1. Confirm the recording path before running anything destructive.
9
9
  2. Run `taro generate <recording-file>` by default.
10
10
  3. Add `--dry-run`, `--output <path>`, or `--force` only when the user asks for them or the context requires them.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Generate command
3
3
  * Full pipeline: parse → validate → generate → write
4
- * Converts Chrome Recorder exports into React Testing Library test files.
4
+ * Converts Recorder exports into React Testing Library test files.
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  export interface GenerateOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwCnC,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAiQD,wBAAgB,qBAAqB,IAAI,OAAO,CA4P/C"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyCnC,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAsUD,wBAAgB,qBAAqB,IAAI,OAAO,CA0H/C"}
@@ -1,18 +1,15 @@
1
1
  /**
2
2
  * Generate command
3
3
  * Full pipeline: parse → validate → generate → write
4
- * Converts Chrome Recorder exports into React Testing Library test files.
4
+ * Converts Recorder exports into React Testing Library test files.
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  import { access, mkdir, readFile, writeFile } from 'node:fs/promises';
8
8
  import { basename, dirname, join, resolve } from 'node:path';
9
9
  import { cwd } from 'node:process';
10
10
  import pc from 'picocolors';
11
- import { validateRecording, formatValidationErrors } from '../../core/validator.js';
12
- import { parseRecording } from '../../core/parser.js';
13
11
  import { generateTest } from '../../core/generator.js';
14
12
  import { writeTestFile } from '../../core/writer.js';
15
- import { parseJsRecording } from '../../core/js-parser.js';
16
13
  import { captureVisualState, inspectElements, buildQuery, selectMatcher, emitQry03Warning, } from '../../core/resolver.js';
17
14
  import { scoreGeneratedTest } from '../../core/scorer.js';
18
15
  import { verifySyntax } from '../../core/verifier.js';
@@ -20,9 +17,11 @@ import { analyzeSingleTestFile, mergeConventions, readConventions, scanConventio
20
17
  import { analyzeRecording, findVisualCaptureCandidates, } from '../../core/recording-intelligence.js';
21
18
  import { analyzeMocks } from '../../core/mock-intelligence.js';
22
19
  import { generateTestFromGroups, emitQuerySummary } from '../../core/generator.js';
20
+ import { loadInput } from '../../core/input-loader.js';
21
+ import { normalizeJsBaseline } from '../../core/baseline-normalizer.js';
23
22
  function deriveOutputPath(inputPath) {
24
23
  const dir = dirname(inputPath);
25
- const name = basename(inputPath, '.js').replace(/\.(json)$/, '');
24
+ const name = basename(inputPath).replace(/\.(json|[cm]?[jt]sx?)$/, '');
26
25
  return join(dir, `${name}.test.tsx`);
27
26
  }
28
27
  function logScore(scoreResult) {
@@ -77,6 +76,17 @@ function toItGroups(analyzedRecording, fallbackTitle) {
77
76
  },
78
77
  ];
79
78
  }
79
+ function queryDescriptorToResult(descriptor) {
80
+ return {
81
+ query: descriptor.raw ?? descriptor.target ?? descriptor.method,
82
+ quality: descriptor.quality ?? 'fragile',
83
+ method: descriptor.method,
84
+ line: descriptor.line,
85
+ };
86
+ }
87
+ function getPrimarySelector(recording) {
88
+ return recording.baseline?.selectors[0]?.selector;
89
+ }
80
90
  function summarizeVisualState(visualState) {
81
91
  if (!visualState) {
82
92
  return;
@@ -124,7 +134,49 @@ function summarizeMockAnalysis(mockAnalysis) {
124
134
  }
125
135
  }
126
136
  function findRecordingUrl(analyzedRecording) {
127
- return analyzedRecording.steps.find((step) => step.action === 'navigate')?.target;
137
+ return analyzedRecording.url ?? analyzedRecording.steps.find((step) => step.action === 'navigate')?.target;
138
+ }
139
+ async function resolveJsQueryResults(recording) {
140
+ const baseline = recording.baseline;
141
+ if (!baseline) {
142
+ return [];
143
+ }
144
+ const queryResults = baseline.queries.map(queryDescriptorToResult);
145
+ if (baseline.selectors.length > 0 && recording.url) {
146
+ console.log(pc.dim('[taro]') +
147
+ ` Resolving ${baseline.selectors.length} selector(s) via Playwright...`);
148
+ const selectors = baseline.selectors.map((descriptor) => descriptor.selector);
149
+ const elementMap = await inspectElements(recording.url, selectors);
150
+ for (const descriptor of baseline.selectors) {
151
+ const info = elementMap.get(descriptor.selector) ?? null;
152
+ if (!info) {
153
+ const fallbackResult = buildQuery({
154
+ tagName: 'div',
155
+ role: null,
156
+ ariaLabel: null,
157
+ ariaLabelledBy: null,
158
+ innerText: '',
159
+ value: undefined,
160
+ type: undefined,
161
+ placeholder: null,
162
+ isPresent: false,
163
+ }, descriptor.selector);
164
+ queryResults.push({ ...fallbackResult, line: descriptor.line });
165
+ continue;
166
+ }
167
+ const result = buildQuery(info, descriptor.selector);
168
+ if (result.quality === 'fragile') {
169
+ emitQry03Warning(descriptor.selector);
170
+ }
171
+ const matcher = selectMatcher(info, 'assert');
172
+ queryResults.push({ ...result, matcher, line: descriptor.line });
173
+ }
174
+ }
175
+ else if (baseline.selectors.length > 0 && !recording.url) {
176
+ console.warn(pc.yellow('[taro]') +
177
+ ' QRY-02: No @jest-environment-options URL found — cannot resolve document.querySelector selectors. Falling back to getByTestId.');
178
+ }
179
+ return queryResults;
128
180
  }
129
181
  async function maybeCaptureVisualState(params) {
130
182
  const { analyzedRecording, projectRoot, selector, url } = params;
@@ -203,8 +255,8 @@ async function finalizeGeneratedOutput(params) {
203
255
  export function createGenerateCommand() {
204
256
  const generate = new Command('generate');
205
257
  generate
206
- .description('Generate RTL test from Chrome Recorder export')
207
- .argument('<file>', 'Path to the Chrome Recorder JSON export file')
258
+ .description('Generate RTL test from Recorder export')
259
+ .argument('<file>', 'Path to the recorder export file')
208
260
  .option('-o, --output <path>', 'Output file path for the generated test')
209
261
  .option('-d, --dry-run', 'Preview the generated test without writing to disk', false)
210
262
  .option('-f, --force', 'Overwrite existing test file', false)
@@ -219,170 +271,57 @@ export function createGenerateCommand() {
219
271
  console.error(pc.red('Error:') + ` File not found or not accessible: ${pc.bold(filePath)}`);
220
272
  process.exit(1);
221
273
  }
222
- // 2. Read raw JSON
223
- let rawContent;
274
+ let parsedInput;
224
275
  try {
225
- rawContent = await readFile(filePath, 'utf-8');
276
+ parsedInput = await loadInput(filePath);
226
277
  }
227
278
  catch (err) {
228
- console.error(pc.red('Error:') + ` Failed to read file: ${pc.bold(filePath)}\n${String(err)}`);
279
+ console.error(pc.red('Error:') + ` Failed to parse recording: ${pc.bold(filePath)}\n${String(err)}`);
229
280
  process.exit(1);
230
281
  }
231
- // Detect JS format
232
- const isJsFormat = filePath.endsWith('.js') || rawContent.includes('@jest-environment-options');
233
- if (isJsFormat) {
234
- // Step 1: Context scan (CTX-01–05)
235
- let conventions = await readConventions(projectRoot);
282
+ const normalizedRecording = parsedInput.source === 'js' ? normalizeJsBaseline(parsedInput) : parsedInput.recording;
283
+ let conventions = undefined;
284
+ if (parsedInput.source === 'js') {
285
+ conventions = await readConventions(projectRoot);
236
286
  if (!conventions) {
237
287
  console.log(pc.dim('[taro]') + ' Scanning project conventions...');
238
288
  conventions = await scanConventions(projectRoot);
239
289
  }
240
- // Step 2: Parse JS file via Babel AST (QRY-01, TEST-01)
241
- let jsResult;
242
- try {
243
- jsResult = await parseJsRecording(rawContent);
244
- }
245
- catch (err) {
246
- console.error(pc.red('Error:') + ` Failed to parse JS recording: ${String(err)}`);
247
- process.exit(1);
248
- }
249
- console.log(pc.green('Parsed:') +
250
- ` ${pc.bold(jsResult.title)} — ${jsResult.steps.length} steps, ${jsResult.itGroups.length} test group(s)`);
251
- const analyzedRecording = analyzeRecording({
252
- title: jsResult.title,
253
- steps: jsResult.steps,
254
- rawStepCount: jsResult.steps.length,
255
- });
256
- summarizeCleanup(analyzedRecording);
257
- const visualState = await maybeCaptureVisualState({
258
- analyzedRecording,
259
- projectRoot,
260
- selector: jsResult.querySelectorCalls[0]?.selector,
261
- url: jsResult.environmentUrl,
262
- });
263
- summarizeVisualState(visualState);
264
- const mockAnalysis = await maybeAnalyzeMocks(projectRoot);
265
- summarizeMockAnalysis(mockAnalysis);
266
- // Step 3: Resolve document.querySelector selectors via Playwright (QRY-02, QRY-03)
267
- const queryResults = [];
268
- if (jsResult.querySelectorCalls.length > 0 && jsResult.environmentUrl) {
269
- console.log(pc.dim('[taro]') +
270
- ` Resolving ${jsResult.querySelectorCalls.length} selector(s) via Playwright...`);
271
- const selectors = jsResult.querySelectorCalls.map((c) => c.selector);
272
- const elementMap = await inspectElements(jsResult.environmentUrl, selectors);
273
- for (const call of jsResult.querySelectorCalls) {
274
- const info = elementMap.get(call.selector) ?? null;
275
- if (!info) {
276
- // App not running or element not found — emit QRY-02 warning (handled inside inspectElements)
277
- // Use getByTestId fallback
278
- const fallbackResult = buildQuery({ tagName: 'div', role: null, ariaLabel: null, ariaLabelledBy: null,
279
- innerText: '', value: undefined, type: undefined, placeholder: null, isPresent: false }, call.selector);
280
- queryResults.push({ ...fallbackResult, line: call.line });
281
- }
282
- else {
283
- const result = buildQuery(info, call.selector);
284
- if (result.quality === 'fragile')
285
- emitQry03Warning(call.selector);
286
- const matcher = selectMatcher(info, 'assert');
287
- queryResults.push({ ...result, matcher, line: call.line });
288
- }
289
- }
290
- }
291
- else if (jsResult.querySelectorCalls.length > 0 && !jsResult.environmentUrl) {
292
- console.warn(pc.yellow('[taro]') +
293
- ' QRY-02: No @jest-environment-options URL found — cannot resolve document.querySelector selectors. Falling back to getByTestId.');
294
- }
295
- // Step 4: Generate test code with multi-it() blocks (TEST-01, TEST-03)
296
- const outputPath = options.output ?? deriveOutputPath(filePath);
297
- const generated = generateTestFromGroups(jsResult.title, toItGroups(analyzedRecording, jsResult.title), {
298
- outputPath,
299
- dryRun: options.dryRun,
300
- conventions,
301
- queryResults,
302
- });
303
- // Step 5: Emit query quality summary (QRY-01)
304
- emitQuerySummary(queryResults);
305
- // Pre-write audit: compute score before writing
306
- const scoreResult = scoreGeneratedTest(generated.code, queryResults);
307
- logScore(scoreResult);
308
- emitScoreHints(scoreResult, queryResults);
309
- // Step 6: Write or preview
310
- if (options.dryRun) {
311
- console.log(pc.yellow('\nDry run — test preview:\n'));
312
- console.log(pc.dim('─'.repeat(60)));
313
- console.log(generated.code);
314
- console.log(pc.dim('─'.repeat(60)));
315
- console.log(pc.dim(`\n[taro] Score: ${scoreResult.total}/100 (${scoreResult.grade})`));
316
- console.log(pc.yellow(`\nWould write to: ${pc.bold(outputPath)}`));
317
- return;
318
- }
319
- try {
320
- const result = await writeTestFile(generated.code, outputPath, {
321
- force: options.force,
322
- createDir: true,
323
- });
324
- await finalizeGeneratedOutput({
325
- code: generated.code,
326
- outputPath: result.filePath,
327
- projectRoot,
328
- recordingFile: filePath,
329
- scoreResult,
330
- });
331
- const action = result.overwritten ? pc.yellow('Updated') : pc.green('Created');
332
- console.log(`${action}: ${pc.bold(result.filePath)}`);
333
- }
334
- catch (err) {
335
- console.error(pc.red('Error:') + ` ${String(err)}`);
336
- process.exit(1);
337
- }
338
- return; // Exit action for JS path — do not fall through to JSON pipeline
339
- }
340
- // 3. Parse JSON
341
- let parsedJson;
342
- try {
343
- parsedJson = JSON.parse(rawContent);
344
- }
345
- catch {
346
- console.error(pc.red('Error:') +
347
- ` Invalid JSON in file: ${pc.bold(filePath)}\nEnsure the file is a valid Chrome Recorder export.`);
348
- process.exit(1);
349
- }
350
- // 4. Validate schema
351
- const validation = validateRecording(parsedJson);
352
- if (!validation.valid) {
353
- console.error(pc.red('Error:') +
354
- ` Invalid Chrome Recorder format in ${pc.bold(filePath)}\n` +
355
- formatValidationErrors(validation.errors));
356
- process.exit(1);
357
- }
358
- // 5. Normalize steps
359
- let normalizedRecording;
360
- try {
361
- normalizedRecording = await parseRecording(filePath);
362
- }
363
- catch (err) {
364
- console.error(pc.red('Error:') + ` Failed to parse recording: ${String(err)}`);
365
- process.exit(1);
366
290
  }
367
291
  console.log(pc.green('Parsed:') +
368
- ` ${pc.bold(normalizedRecording.title)} — ${normalizedRecording.steps.length} steps`);
292
+ ` ${pc.bold(normalizedRecording.title)} — ${normalizedRecording.steps.length} steps` +
293
+ (parsedInput.source === 'js'
294
+ ? `, ${normalizedRecording.baseline?.itGroups.length ?? 0} test group(s)`
295
+ : ''));
369
296
  const analyzedRecording = analyzeRecording(normalizedRecording);
370
297
  summarizeCleanup(analyzedRecording);
371
298
  const visualState = await maybeCaptureVisualState({
372
299
  analyzedRecording,
373
300
  projectRoot,
301
+ selector: getPrimarySelector(normalizedRecording),
374
302
  url: findRecordingUrl(analyzedRecording),
375
303
  });
376
304
  summarizeVisualState(visualState);
377
305
  const mockAnalysis = await maybeAnalyzeMocks(projectRoot);
378
306
  summarizeMockAnalysis(mockAnalysis);
379
- // 6. Generate test code
307
+ const queryResults = parsedInput.source === 'js' ? await resolveJsQueryResults(normalizedRecording) : [];
380
308
  const outputPath = options.output ?? deriveOutputPath(filePath);
381
- const generated = generateTest(analyzedRecording, { outputPath, dryRun: options.dryRun });
382
- const scoreResult = scoreGeneratedTest(generated.code);
309
+ const generated = parsedInput.source === 'js'
310
+ ? generateTestFromGroups(normalizedRecording.title, toItGroups(analyzedRecording, normalizedRecording.title), {
311
+ outputPath,
312
+ dryRun: options.dryRun,
313
+ conventions,
314
+ queryResults,
315
+ })
316
+ : generateTest(analyzedRecording, { outputPath, dryRun: options.dryRun });
317
+ if (parsedInput.source === 'js') {
318
+ emitQuerySummary(queryResults);
319
+ }
320
+ const scoreResult = parsedInput.source === 'js'
321
+ ? scoreGeneratedTest(generated.code, queryResults)
322
+ : scoreGeneratedTest(generated.code);
383
323
  logScore(scoreResult);
384
- emitScoreHints(scoreResult);
385
- // 7. Write or preview
324
+ emitScoreHints(scoreResult, queryResults);
386
325
  if (options.dryRun) {
387
326
  console.log(pc.yellow('\nDry run — test preview:\n'));
388
327
  console.log(pc.dim('─'.repeat(60)));
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NormalizedRecording, ParsedJsInput } from '../types/recording.js';
2
+ export declare function normalizeJsBaseline(input: ParsedJsInput): NormalizedRecording;
3
+ //# sourceMappingURL=baseline-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline-normalizer.d.ts","sourceRoot":"","sources":["../../src/core/baseline-normalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,mBAAmB,EAEnB,aAAa,EAId,MAAM,uBAAuB,CAAA;AAuE9B,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAc7E"}
@@ -0,0 +1,65 @@
1
+ function groupByStepId(entries) {
2
+ const grouped = new Map();
3
+ for (const entry of entries) {
4
+ const current = grouped.get(entry.stepId) ?? [];
5
+ current.push(entry);
6
+ grouped.set(entry.stepId, current);
7
+ }
8
+ return grouped;
9
+ }
10
+ function createEvidenceMaps(baseline) {
11
+ return {
12
+ assertions: groupByStepId(baseline.assertions),
13
+ queries: groupByStepId(baseline.queries),
14
+ selectors: groupByStepId(baseline.selectors),
15
+ };
16
+ }
17
+ function isSyncAssertion(assertion) {
18
+ return assertion?.kind === 'location' || assertion?.kind === 'document-title';
19
+ }
20
+ function mergeStepEvidence(step, evidenceMaps) {
21
+ const stepId = step.id;
22
+ if (!stepId) {
23
+ return step;
24
+ }
25
+ const queryEvidence = evidenceMaps.queries.get(stepId)?.[0];
26
+ const assertionEvidence = evidenceMaps.assertions.get(stepId)?.[0];
27
+ const selectorEvidence = evidenceMaps.selectors.get(stepId);
28
+ return {
29
+ ...step,
30
+ metadata: {
31
+ ...step.metadata,
32
+ ...(queryEvidence ? { query: queryEvidence } : {}),
33
+ ...(assertionEvidence ? { assertion: assertionEvidence } : {}),
34
+ ...(selectorEvidence && selectorEvidence.length > 0
35
+ ? {
36
+ selector: selectorEvidence[0],
37
+ selectors: selectorEvidence,
38
+ }
39
+ : {}),
40
+ ...(isSyncAssertion(assertionEvidence) ? { sync: true } : {}),
41
+ },
42
+ };
43
+ }
44
+ function normalizeBaselineGroups(baseline, steps) {
45
+ const stepMap = new Map(steps.map((step) => [step.id, step]));
46
+ return baseline.itGroups.map((group) => ({
47
+ ...group,
48
+ steps: group.steps.map((step) => stepMap.get(step.id) ?? step),
49
+ }));
50
+ }
51
+ export function normalizeJsBaseline(input) {
52
+ const evidenceMaps = createEvidenceMaps(input.baseline);
53
+ const steps = input.recording.steps.map((step) => mergeStepEvidence(step, evidenceMaps));
54
+ const baseline = {
55
+ ...input.baseline,
56
+ itGroups: normalizeBaselineGroups(input.baseline, steps),
57
+ };
58
+ return {
59
+ ...input.recording,
60
+ url: input.recording.url ?? input.baseline.environmentUrl,
61
+ baseline,
62
+ steps,
63
+ };
64
+ }
65
+ //# sourceMappingURL=baseline-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline-normalizer.js","sourceRoot":"","sources":["../../src/core/baseline-normalizer.ts"],"names":[],"mappings":"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"}