@tayo-dev/rtl 1.3.0-alpha.0 → 1.3.1
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 +37 -4
- package/assets/codex/@tayo-dev/rtl-generate/SKILL.md +5 -4
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +283 -42
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/core/boundary-intelligence.d.ts +10 -0
- package/dist/core/boundary-intelligence.d.ts.map +1 -0
- package/dist/core/boundary-intelligence.js +254 -0
- package/dist/core/boundary-intelligence.js.map +1 -0
- package/dist/core/generator.d.ts +5 -1
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +158 -13
- package/dist/core/generator.js.map +1 -1
- package/dist/core/resolver.d.ts +27 -2
- package/dist/core/resolver.d.ts.map +1 -1
- package/dist/core/resolver.js +128 -19
- package/dist/core/resolver.js.map +1 -1
- package/dist/core/scanner.d.ts +8 -0
- package/dist/core/scanner.d.ts.map +1 -1
- package/dist/core/scanner.js +38 -0
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/scorer.d.ts.map +1 -1
- package/dist/core/scorer.js +103 -8
- package/dist/core/scorer.js.map +1 -1
- package/dist/core/suite-planner.d.ts +30 -0
- package/dist/core/suite-planner.d.ts.map +1 -0
- package/dist/core/suite-planner.js +182 -0
- package/dist/core/suite-planner.js.map +1 -0
- package/dist/templates/test-template.d.ts +22 -2
- package/dist/templates/test-template.d.ts.map +1 -1
- package/dist/templates/test-template.js +37 -6
- package/dist/templates/test-template.js.map +1 -1
- package/dist/types/recording.d.ts +44 -0
- package/dist/types/recording.d.ts.map +1 -1
- package/dist/types/recording.js.map +1 -1
- package/dist/types/score.d.ts +23 -0
- package/dist/types/score.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
function buildFallbackGroups(analyzedRecording, fallbackTitle) {
|
|
2
|
+
if (analyzedRecording.intentGroups.length > 0) {
|
|
3
|
+
return analyzedRecording.intentGroups;
|
|
4
|
+
}
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
name: fallbackTitle || 'recorded flow',
|
|
8
|
+
steps: analyzedRecording.steps,
|
|
9
|
+
},
|
|
10
|
+
];
|
|
11
|
+
}
|
|
12
|
+
function sanitizeIdentifierPart(value) {
|
|
13
|
+
return value
|
|
14
|
+
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
15
|
+
.trim()
|
|
16
|
+
.split(/\s+/)
|
|
17
|
+
.map((part, index) => {
|
|
18
|
+
const normalized = part.toLowerCase();
|
|
19
|
+
return index === 0
|
|
20
|
+
? normalized
|
|
21
|
+
: normalized.charAt(0).toUpperCase() + normalized.slice(1);
|
|
22
|
+
})
|
|
23
|
+
.join('');
|
|
24
|
+
}
|
|
25
|
+
function toHelperName(groupName, index) {
|
|
26
|
+
const normalized = sanitizeIdentifierPart(groupName);
|
|
27
|
+
return normalized ? `plan${normalized.charAt(0).toUpperCase()}${normalized.slice(1)}` : `planScenario${index + 1}`;
|
|
28
|
+
}
|
|
29
|
+
function inferScenarioGoal(groupName) {
|
|
30
|
+
if (/validation|error|required|missing/i.test(groupName)) {
|
|
31
|
+
return 'validation';
|
|
32
|
+
}
|
|
33
|
+
if (/review|summary|confirm/i.test(groupName)) {
|
|
34
|
+
return 'review';
|
|
35
|
+
}
|
|
36
|
+
if (/save|submit|pending|success|failure|mutation/i.test(groupName)) {
|
|
37
|
+
return 'mutation-state';
|
|
38
|
+
}
|
|
39
|
+
return 'flow';
|
|
40
|
+
}
|
|
41
|
+
function hasMutationSignals(mockAnalysis) {
|
|
42
|
+
if (!mockAnalysis) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return (mockAnalysis.mutationLifecycles.length > 0 ||
|
|
46
|
+
mockAnalysis.repeatedTargets.length > 0);
|
|
47
|
+
}
|
|
48
|
+
function findRepeatedMockTarget(mockAnalysis) {
|
|
49
|
+
return mockAnalysis?.recommendations[0]?.target ?? null;
|
|
50
|
+
}
|
|
51
|
+
function isWizardFlow(recording) {
|
|
52
|
+
const actionableSteps = recording.steps.filter((step) => ['click', 'fill', 'select'].includes(step.action));
|
|
53
|
+
const milestoneClicks = recording.steps.filter((step) => {
|
|
54
|
+
if (step.action !== 'click' || !step.target) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return /^(continue|save|submit)$/i.test(step.target) || /(review|dialog)/i.test(step.target);
|
|
58
|
+
});
|
|
59
|
+
const hasFormInput = recording.steps.some((step) => step.action === 'fill' || step.action === 'select');
|
|
60
|
+
const hasReviewLanguage = recording.steps.some((step) => /(review|invoice|details)/i.test(step.target ?? ''));
|
|
61
|
+
return actionableSteps.length >= 6 && hasFormInput && (milestoneClicks.length >= 2 || hasReviewLanguage);
|
|
62
|
+
}
|
|
63
|
+
function assessStateSafety(params) {
|
|
64
|
+
const { recording, analyzedRecording, mockAnalysis } = params;
|
|
65
|
+
const wizardFlow = isWizardFlow(recording);
|
|
66
|
+
if (wizardFlow && hasMutationSignals(mockAnalysis)) {
|
|
67
|
+
return {
|
|
68
|
+
status: 'single-flow-required',
|
|
69
|
+
reason: 'This flow spans multiple wizard steps and repo evidence shows mutation-driven state, so downstream tests should share one coordinated flow unless setup recreation is proven.',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (wizardFlow) {
|
|
73
|
+
return {
|
|
74
|
+
status: 'unknown',
|
|
75
|
+
reason: 'This flow looks stateful, but repo evidence is not strong enough yet to prove whether multi-test recreation is safe.',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (analyzedRecording.intentGroups.length > 1) {
|
|
79
|
+
return {
|
|
80
|
+
status: 'safe-multi-it',
|
|
81
|
+
reason: 'Intent groups are already separated into user-visible milestones and no mutation-heavy wizard state was detected.',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
status: 'safe-multi-it',
|
|
86
|
+
reason: 'No mutation-heavy wizard state was detected, so scenario splitting is safe when it improves readability.',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function assessRenderBoundary(params) {
|
|
90
|
+
const { recording, mockAnalysis } = params;
|
|
91
|
+
const signals = [];
|
|
92
|
+
const wizardFlow = isWizardFlow(recording);
|
|
93
|
+
const mutationSignals = hasMutationSignals(mockAnalysis);
|
|
94
|
+
if (wizardFlow) {
|
|
95
|
+
signals.push('multi-step wizard flow');
|
|
96
|
+
}
|
|
97
|
+
if (mockAnalysis?.mutationLifecycles.length) {
|
|
98
|
+
signals.push('existing tests model mutation lifecycle states');
|
|
99
|
+
}
|
|
100
|
+
if (mockAnalysis?.repeatedTargets.length) {
|
|
101
|
+
signals.push('repo already shares repeated mock targets');
|
|
102
|
+
}
|
|
103
|
+
if (wizardFlow && mutationSignals) {
|
|
104
|
+
return {
|
|
105
|
+
kind: 'module',
|
|
106
|
+
confidence: 'medium',
|
|
107
|
+
resolvedTarget: null,
|
|
108
|
+
reason: 'This flow spans multiple user-visible steps and repo evidence shows data/mutation setup around it, so Taro should prefer a container/module boundary rather than a leaf component test.',
|
|
109
|
+
signals,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (wizardFlow) {
|
|
113
|
+
return {
|
|
114
|
+
kind: 'unknown',
|
|
115
|
+
confidence: 'low',
|
|
116
|
+
resolvedTarget: null,
|
|
117
|
+
reason: 'This flow behaves like a stateful wizard, but Taro cannot resolve the owning render target from repo context yet.',
|
|
118
|
+
signals,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
kind: 'component',
|
|
123
|
+
confidence: 'low',
|
|
124
|
+
resolvedTarget: null,
|
|
125
|
+
reason: 'No stateful flow or repo-level mutation signals were detected, so a focused component boundary is acceptable.',
|
|
126
|
+
signals,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export function planJsSuite(params) {
|
|
130
|
+
const { recording, analyzedRecording, mockAnalysis, fallbackTitle } = params;
|
|
131
|
+
const renderBoundary = assessRenderBoundary({ recording, mockAnalysis });
|
|
132
|
+
const stateSafety = assessStateSafety({ recording, analyzedRecording, mockAnalysis });
|
|
133
|
+
const warnings = [];
|
|
134
|
+
if (renderBoundary.kind === 'module') {
|
|
135
|
+
warnings.push('Prefer a repo-local module/container render boundary for this flow instead of targeting a leaf form component directly.');
|
|
136
|
+
}
|
|
137
|
+
if (renderBoundary.kind !== 'component' && !renderBoundary.resolvedTarget) {
|
|
138
|
+
warnings.push('Taro could not resolve the exact render target from repo context; generated output should be treated as a boundary draft.');
|
|
139
|
+
}
|
|
140
|
+
const repeatedTarget = findRepeatedMockTarget(mockAnalysis);
|
|
141
|
+
if (repeatedTarget) {
|
|
142
|
+
warnings.push(`Reuse shared mocks for repeated targets such as "${repeatedTarget}" instead of re-mocking internal query hooks inline.`);
|
|
143
|
+
}
|
|
144
|
+
const baseGroups = renderBoundary.kind === 'module'
|
|
145
|
+
? [
|
|
146
|
+
{
|
|
147
|
+
name: fallbackTitle || 'complete recorded flow',
|
|
148
|
+
steps: analyzedRecording.steps,
|
|
149
|
+
},
|
|
150
|
+
]
|
|
151
|
+
: buildFallbackGroups(analyzedRecording, fallbackTitle);
|
|
152
|
+
const helpers = analyzedRecording.intentGroups.map((group, index) => ({
|
|
153
|
+
name: toHelperName(group.name, index),
|
|
154
|
+
sourceGroup: group.name,
|
|
155
|
+
purpose: `Navigate the UI through "${group.name}" without hiding assertions.`,
|
|
156
|
+
steps: group.steps,
|
|
157
|
+
assertionPolicy: 'sync-only',
|
|
158
|
+
}));
|
|
159
|
+
const scenarios = baseGroups.map((group, index) => ({
|
|
160
|
+
name: group.name,
|
|
161
|
+
goal: inferScenarioGoal(group.name),
|
|
162
|
+
steps: group.steps,
|
|
163
|
+
helperRefs: stateSafety.status === 'safe-multi-it'
|
|
164
|
+
? helpers
|
|
165
|
+
.filter((helper) => helper.steps.some((step) => group.steps.includes(step)))
|
|
166
|
+
.map((helper) => helper.name)
|
|
167
|
+
: [],
|
|
168
|
+
requiresFreshRender: true,
|
|
169
|
+
}));
|
|
170
|
+
if (stateSafety.status !== 'safe-multi-it' && baseGroups.length > 1) {
|
|
171
|
+
warnings.push('Keep this flow in a single end-to-end scenario until Taro can prove that downstream state can be recreated safely per test.');
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
itGroups: baseGroups,
|
|
175
|
+
scenarios,
|
|
176
|
+
helpers,
|
|
177
|
+
stateSafety,
|
|
178
|
+
renderBoundary,
|
|
179
|
+
warnings,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=suite-planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suite-planner.js","sourceRoot":"","sources":["../../src/core/suite-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,24 @@
|
|
|
3
3
|
* Functions return string fragments for composing test files.
|
|
4
4
|
*/
|
|
5
5
|
import type { NormalizedAction } from '../types/recording.js';
|
|
6
|
-
export
|
|
6
|
+
export interface RenderTargetImport {
|
|
7
|
+
symbol: string;
|
|
8
|
+
importPath: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ImportBlockOptions {
|
|
11
|
+
renderTarget?: RenderTargetImport | null;
|
|
12
|
+
needsWithin?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function importBlock(hasUserEvents: boolean, importStyle?: 'esm' | 'cjs', options?: ImportBlockOptions): string;
|
|
7
15
|
export interface StepTemplateOptions {
|
|
8
16
|
action: NormalizedAction;
|
|
9
17
|
query: string;
|
|
10
18
|
value?: string;
|
|
11
19
|
matcher?: string;
|
|
20
|
+
checkpoint?: {
|
|
21
|
+
reason: string;
|
|
22
|
+
selector: string;
|
|
23
|
+
};
|
|
12
24
|
}
|
|
13
25
|
export declare function stepTemplate(opts: StepTemplateOptions): string;
|
|
14
26
|
export declare function describeBlock(name: string, bodyLines: string[], hasUserEvents: boolean): string;
|
|
@@ -17,5 +29,13 @@ export interface ItBlockTemplate {
|
|
|
17
29
|
stepLines: string[];
|
|
18
30
|
hasUserEvents: boolean;
|
|
19
31
|
}
|
|
20
|
-
export
|
|
32
|
+
export interface HelperBlockTemplate {
|
|
33
|
+
name: string;
|
|
34
|
+
stepLines: string[];
|
|
35
|
+
}
|
|
36
|
+
export declare function helperBlock(block: HelperBlockTemplate): string;
|
|
37
|
+
export declare function describeBlockMultiIt(name: string, itBlocks: ItBlockTemplate[], options?: {
|
|
38
|
+
renderExpression?: string;
|
|
39
|
+
helpers?: HelperBlockTemplate[];
|
|
40
|
+
}): string;
|
|
21
41
|
//# sourceMappingURL=test-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-template.d.ts","sourceRoot":"","sources":["../../src/templates/test-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,
|
|
1
|
+
{"version":3,"file":"test-template.d.ts","sourceRoot":"","sources":["../../src/templates/test-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,WAAW,CACzB,aAAa,EAAE,OAAO,EACtB,WAAW,GAAE,KAAK,GAAG,KAAa,EAClC,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAiCR;AAcD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAMD,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA0C9D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,OAAO,GACrB,MAAM,CAYR;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAO9D;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAC3B,GACL,MAAM,CAmBR"}
|
|
@@ -2,25 +2,35 @@
|
|
|
2
2
|
* Code templates for RTL test structure.
|
|
3
3
|
* Functions return string fragments for composing test files.
|
|
4
4
|
*/
|
|
5
|
-
export function importBlock(hasUserEvents, importStyle = 'esm') {
|
|
5
|
+
export function importBlock(hasUserEvents, importStyle = 'esm', options = {}) {
|
|
6
|
+
const testingLibraryMembers = ['render', 'screen'];
|
|
7
|
+
if (options.needsWithin) {
|
|
8
|
+
testingLibraryMembers.push('within');
|
|
9
|
+
}
|
|
6
10
|
if (importStyle === 'cjs') {
|
|
7
11
|
const lines = [
|
|
8
|
-
|
|
12
|
+
`const { ${testingLibraryMembers.join(', ')} } = require('@testing-library/react')`,
|
|
9
13
|
"require('@testing-library/jest-dom')",
|
|
10
14
|
];
|
|
11
15
|
if (hasUserEvents) {
|
|
12
16
|
lines.push("const userEvent = require('@testing-library/user-event')");
|
|
13
17
|
}
|
|
18
|
+
if (options.renderTarget) {
|
|
19
|
+
lines.push(`const ${options.renderTarget.symbol} = require('${options.renderTarget.importPath}').default`);
|
|
20
|
+
}
|
|
14
21
|
return lines.join('\n');
|
|
15
22
|
}
|
|
16
23
|
// ESM (default)
|
|
17
24
|
const lines = [
|
|
18
|
-
|
|
25
|
+
`import { ${testingLibraryMembers.join(', ')} } from '@testing-library/react'`,
|
|
19
26
|
"import '@testing-library/jest-dom'",
|
|
20
27
|
];
|
|
21
28
|
if (hasUserEvents) {
|
|
22
29
|
lines.push("import userEvent from '@testing-library/user-event'");
|
|
23
30
|
}
|
|
31
|
+
if (options.renderTarget) {
|
|
32
|
+
lines.push(`import ${options.renderTarget.symbol} from '${options.renderTarget.importPath}'`);
|
|
33
|
+
}
|
|
24
34
|
return lines.join('\n');
|
|
25
35
|
}
|
|
26
36
|
function escapeSingleQuote(s) {
|
|
@@ -33,9 +43,20 @@ function indentLines(text, spaces) {
|
|
|
33
43
|
.map((line) => (line.trim() ? pad + line : ''))
|
|
34
44
|
.join('\n');
|
|
35
45
|
}
|
|
46
|
+
function sanitizeCommentText(value) {
|
|
47
|
+
return value.replace(/\s+/g, ' ').trim();
|
|
48
|
+
}
|
|
36
49
|
export function stepTemplate(opts) {
|
|
37
50
|
const { action, query, value = '' } = opts;
|
|
38
51
|
const escapedValue = escapeSingleQuote(value);
|
|
52
|
+
if (opts.checkpoint) {
|
|
53
|
+
return [
|
|
54
|
+
`// taro-query-checkpoint: ${action} step requires manual RTL query recovery`,
|
|
55
|
+
`// selector: ${sanitizeCommentText(opts.checkpoint.selector)}`,
|
|
56
|
+
`// reason: ${sanitizeCommentText(opts.checkpoint.reason)}`,
|
|
57
|
+
'// TODO: replace this checkpoint with a trustworthy RTL query before keeping the generated test',
|
|
58
|
+
].join('\n');
|
|
59
|
+
}
|
|
39
60
|
switch (action) {
|
|
40
61
|
case 'click':
|
|
41
62
|
return `await user.click(${query})`;
|
|
@@ -72,8 +93,18 @@ export function describeBlock(name, bodyLines, hasUserEvents) {
|
|
|
72
93
|
`})`,
|
|
73
94
|
].join('\n');
|
|
74
95
|
}
|
|
75
|
-
export function
|
|
96
|
+
export function helperBlock(block) {
|
|
97
|
+
const indented = indentLines(block.stepLines.join('\n'), 2);
|
|
98
|
+
return [
|
|
99
|
+
`const ${block.name} = async (user: ReturnType<typeof userEvent.setup>) => {`,
|
|
100
|
+
indented,
|
|
101
|
+
`}`,
|
|
102
|
+
].join('\n');
|
|
103
|
+
}
|
|
104
|
+
export function describeBlockMultiIt(name, itBlocks, options = {}) {
|
|
76
105
|
const escapedName = escapeSingleQuote(name);
|
|
106
|
+
const renderExpression = options.renderExpression ?? '<App />';
|
|
107
|
+
const helperBlocks = (options.helpers ?? []).map((block) => helperBlock(block));
|
|
77
108
|
const blocks = itBlocks.map((block) => {
|
|
78
109
|
const setup = block.hasUserEvents
|
|
79
110
|
? ` const user = userEvent.setup()\n`
|
|
@@ -81,12 +112,12 @@ export function describeBlockMultiIt(name, itBlocks) {
|
|
|
81
112
|
const indented = indentLines(block.stepLines.join('\n'), 4);
|
|
82
113
|
return [
|
|
83
114
|
` it('${escapeSingleQuote(block.name)}', async () => {`,
|
|
84
|
-
` render(
|
|
115
|
+
` render(${renderExpression})`,
|
|
85
116
|
setup,
|
|
86
117
|
indented,
|
|
87
118
|
` })`,
|
|
88
119
|
].join('\n');
|
|
89
120
|
});
|
|
90
|
-
return [`describe('${escapedName}', () => {`, ...blocks, `})`].join('\n');
|
|
121
|
+
return [`describe('${escapedName}', () => {`, ...helperBlocks, ...blocks, `})`].join('\n\n');
|
|
91
122
|
}
|
|
92
123
|
//# sourceMappingURL=test-template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-template.js","sourceRoot":"","sources":["../../src/templates/test-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"test-template.js","sourceRoot":"","sources":["../../src/templates/test-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,10 +161,53 @@ export interface QueryResult {
|
|
|
161
161
|
matcher?: string;
|
|
162
162
|
line?: number;
|
|
163
163
|
}
|
|
164
|
+
export type SelectorResolutionStatus = 'resolved' | 'unresolved';
|
|
165
|
+
export type SelectorResolutionOutcome = 'accessible-query' | 'preserved-query' | 'no-url' | 'inspection-failed' | 'selector-not-found' | 'selector-inaccessible';
|
|
166
|
+
interface BaseSelectorResolutionResult {
|
|
167
|
+
stepId: StepId;
|
|
168
|
+
selector: SelectorDescriptor;
|
|
169
|
+
url?: string;
|
|
170
|
+
warnings: string[];
|
|
171
|
+
}
|
|
172
|
+
export interface ResolvedSelectorResolutionResult extends BaseSelectorResolutionResult {
|
|
173
|
+
status: 'resolved';
|
|
174
|
+
outcome: 'accessible-query' | 'preserved-query';
|
|
175
|
+
source: 'baseline' | 'live-dom';
|
|
176
|
+
query: QueryDescriptor;
|
|
177
|
+
inspectedElement?: ElementInfo;
|
|
178
|
+
}
|
|
179
|
+
export interface UnresolvedSelectorResolutionResult extends BaseSelectorResolutionResult {
|
|
180
|
+
status: 'unresolved';
|
|
181
|
+
outcome: 'no-url' | 'inspection-failed' | 'selector-not-found' | 'selector-inaccessible';
|
|
182
|
+
reason: string;
|
|
183
|
+
inspectionError?: string;
|
|
184
|
+
}
|
|
185
|
+
export type SelectorResolutionResult = ResolvedSelectorResolutionResult | UnresolvedSelectorResolutionResult;
|
|
164
186
|
export interface ItGroup {
|
|
165
187
|
name: string;
|
|
166
188
|
steps: NormalizedStep[];
|
|
167
189
|
}
|
|
190
|
+
export type JsHelperAssertionPolicy = 'sync-only';
|
|
191
|
+
export type JsStateSafetyStatus = 'safe-multi-it' | 'single-flow-required' | 'unknown';
|
|
192
|
+
export type JsScenarioGoal = 'flow' | 'validation' | 'review' | 'mutation-state';
|
|
193
|
+
export interface JsHelperPlan {
|
|
194
|
+
name: string;
|
|
195
|
+
sourceGroup: string;
|
|
196
|
+
purpose: string;
|
|
197
|
+
steps: NormalizedStep[];
|
|
198
|
+
assertionPolicy: JsHelperAssertionPolicy;
|
|
199
|
+
}
|
|
200
|
+
export interface JsScenarioPlan {
|
|
201
|
+
name: string;
|
|
202
|
+
goal: JsScenarioGoal;
|
|
203
|
+
steps: NormalizedStep[];
|
|
204
|
+
helperRefs: string[];
|
|
205
|
+
requiresFreshRender: boolean;
|
|
206
|
+
}
|
|
207
|
+
export interface JsStateSafetyAssessment {
|
|
208
|
+
status: JsStateSafetyStatus;
|
|
209
|
+
reason: string;
|
|
210
|
+
}
|
|
168
211
|
export interface GeneratedItBlock {
|
|
169
212
|
name: string;
|
|
170
213
|
stepLines: string[];
|
|
@@ -188,4 +231,5 @@ export interface ParsedJsInput {
|
|
|
188
231
|
}
|
|
189
232
|
export type ParsedInput = ParsedJsonInput | ParsedJsInput;
|
|
190
233
|
export declare function createStepId(source: RecordingSource, index: number): StepId;
|
|
234
|
+
export {};
|
|
191
235
|
//# sourceMappingURL=recording.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/types/recording.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/types/recording.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording.js","sourceRoot":"","sources":["../../src/types/recording.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"recording.js","sourceRoot":"","sources":["../../src/types/recording.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwSH,MAAM,UAAU,YAAY,CAAC,MAAuB,EAAE,KAAa;IACjE,OAAO,GAAG,MAAM,SAAS,KAAK,GAAG,CAAC,EAAE,CAAA;AACtC,CAAC"}
|
package/dist/types/score.d.ts
CHANGED
|
@@ -2,11 +2,34 @@ export interface ScoreDimensions {
|
|
|
2
2
|
queryQuality: number;
|
|
3
3
|
assertionSpecificity: number;
|
|
4
4
|
testStructure: number;
|
|
5
|
+
boundaryIsolation: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ScoreSignals {
|
|
8
|
+
queryCheckpointCount: number;
|
|
9
|
+
roleQueryCount: number;
|
|
10
|
+
testIdQueryCount: number;
|
|
11
|
+
strongAssertionCount: number;
|
|
12
|
+
weakAssertionCount: number;
|
|
13
|
+
boundaryWarningCount: number;
|
|
14
|
+
boundaryIssueCount: number;
|
|
15
|
+
placeholderRenderTarget: boolean;
|
|
16
|
+
multipleTestBlocks: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ScoreReason {
|
|
19
|
+
code: string;
|
|
20
|
+
dimension: keyof ScoreDimensions;
|
|
21
|
+
impact: 'positive' | 'negative';
|
|
22
|
+
weight: number;
|
|
23
|
+
message: string;
|
|
5
24
|
}
|
|
6
25
|
export interface ScoreResult {
|
|
7
26
|
total: number;
|
|
8
27
|
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
9
28
|
dimensions: ScoreDimensions;
|
|
29
|
+
signals: ScoreSignals;
|
|
30
|
+
reasons: ScoreReason[];
|
|
31
|
+
blockers: string[];
|
|
32
|
+
requiresReview: boolean;
|
|
10
33
|
}
|
|
11
34
|
export interface HistoryEntry {
|
|
12
35
|
timestamp: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/types/score.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/types/score.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,OAAO,CAAA;IAChC,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,eAAe,CAAA;IAChC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAA;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IAClC,UAAU,EAAE,eAAe,CAAA;IAC3B,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,eAAe,CAAA;CAC5B"}
|