@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.
- package/README.md +27 -32
- package/assets/claude/commands/@tayo-dev/rtl/generate.md +2 -2
- package/assets/codex/@tayo-dev/rtl-generate/SKILL.md +1 -1
- package/assets/gemini/commands/@tayo-dev/rtl/generate.toml +2 -2
- package/assets/opencode/commands/@tayo-dev/rtl-generate.md +2 -2
- package/dist/cli/commands/generate.d.ts +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +88 -149
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/core/baseline-normalizer.d.ts +3 -0
- package/dist/core/baseline-normalizer.d.ts.map +1 -0
- package/dist/core/baseline-normalizer.js +65 -0
- package/dist/core/baseline-normalizer.js.map +1 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +15 -0
- package/dist/core/generator.js.map +1 -1
- package/dist/core/input-loader.d.ts +4 -0
- package/dist/core/input-loader.d.ts.map +1 -0
- package/dist/core/input-loader.js +78 -0
- package/dist/core/input-loader.js.map +1 -0
- package/dist/core/js-parser.d.ts +6 -2
- package/dist/core/js-parser.d.ts.map +1 -1
- package/dist/core/js-parser.js +329 -72
- package/dist/core/js-parser.js.map +1 -1
- package/dist/core/parser.d.ts.map +1 -1
- package/dist/core/parser.js +11 -1
- package/dist/core/parser.js.map +1 -1
- package/dist/core/recording-intelligence.d.ts.map +1 -1
- package/dist/core/recording-intelligence.js +31 -5
- package/dist/core/recording-intelligence.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/recording.d.ts +50 -2
- package/dist/types/recording.d.ts.map +1 -1
- package/dist/types/recording.js +3 -1
- package/dist/types/recording.js.map +1 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
146
|
+
taro generate ./recordings/checkout-flow.js
|
|
150
147
|
|
|
151
148
|
# Preview without writing (dry run)
|
|
152
|
-
taro generate --dry-run ./recordings/checkout-flow.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
171
|
-
|
|
172
|
-
Here is a typical
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
{
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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
|
|
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
|
|
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
|
|
207
|
-
.argument('<file>', 'Path to the
|
|
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
|
-
|
|
223
|
-
let rawContent;
|
|
274
|
+
let parsedInput;
|
|
224
275
|
try {
|
|
225
|
-
|
|
276
|
+
parsedInput = await loadInput(filePath);
|
|
226
277
|
}
|
|
227
278
|
catch (err) {
|
|
228
|
-
console.error(pc.red('Error:') + ` Failed to
|
|
279
|
+
console.error(pc.red('Error:') + ` Failed to parse recording: ${pc.bold(filePath)}\n${String(err)}`);
|
|
229
280
|
process.exit(1);
|
|
230
281
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if (
|
|
234
|
-
|
|
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
|
-
|
|
307
|
+
const queryResults = parsedInput.source === 'js' ? await resolveJsQueryResults(normalizedRecording) : [];
|
|
380
308
|
const outputPath = options.output ?? deriveOutputPath(filePath);
|
|
381
|
-
const generated =
|
|
382
|
-
|
|
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 @@
|
|
|
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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"}
|