retestkit 1.10.0 → 1.11.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 +59 -38
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +140 -169
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/templates/mcp/retest-crawl.md +1 -1
- package/dist/prompts/templates/mcp/retest-describe.md +1 -1
- package/dist/prompts/templates/mcp/retest-discover-flows.md +1 -1
- package/dist/prompts/templates/mcp/retest-discover.md +2 -3
- package/dist/prompts/templates/mcp/retest-generate-tests.md +1 -1
- package/dist/prompts/templates/mcp/retest-summarize.md +1 -1
- package/dist/prompts/templates/mcp/retest-workflow.md +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +7 -9
- package/dist/server.js.map +1 -1
- package/dist/setup/templates/claude-code.d.ts.map +1 -1
- package/dist/setup/templates/claude-code.js +4 -6
- package/dist/setup/templates/claude-code.js.map +1 -1
- package/dist/setup/templates/cline-roo.d.ts.map +1 -1
- package/dist/setup/templates/cline-roo.js +8 -12
- package/dist/setup/templates/cline-roo.js.map +1 -1
- package/dist/setup/templates/core-prompt.d.ts +3 -4
- package/dist/setup/templates/core-prompt.d.ts.map +1 -1
- package/dist/setup/templates/core-prompt.js +8 -11
- package/dist/setup/templates/core-prompt.js.map +1 -1
- package/dist/setup/templates/cursor.d.ts.map +1 -1
- package/dist/setup/templates/cursor.js +4 -6
- package/dist/setup/templates/cursor.js.map +1 -1
- package/dist/setup/templates/gemini-cli.d.ts.map +1 -1
- package/dist/setup/templates/gemini-cli.js +6 -8
- package/dist/setup/templates/gemini-cli.js.map +1 -1
- package/dist/setup/templates/universal.d.ts.map +1 -1
- package/dist/setup/templates/universal.js +9 -12
- package/dist/setup/templates/universal.js.map +1 -1
- package/dist/setup/templates/vscode-copilot.d.ts.map +1 -1
- package/dist/setup/templates/vscode-copilot.js +6 -8
- package/dist/setup/templates/vscode-copilot.js.map +1 -1
- package/dist/tools/retest/crawl.js +3 -3
- package/dist/tools/retest/crawl.js.map +1 -1
- package/dist/tools/retest/describe.d.ts +1 -2
- package/dist/tools/retest/describe.d.ts.map +1 -1
- package/dist/tools/retest/describe.js +1 -3
- package/dist/tools/retest/describe.js.map +1 -1
- package/dist/tools/retest/generate-tests.js +2 -2
- package/dist/tools/retest/generate-tests.js.map +1 -1
- package/dist/tools/retest/index.d.ts +1 -3
- package/dist/tools/retest/index.d.ts.map +1 -1
- package/dist/tools/retest/index.js +1 -4
- package/dist/tools/retest/index.js.map +1 -1
- package/dist/tools/retest/plan.js +1 -1
- package/dist/tools/retest/plan.js.map +1 -1
- package/dist/tools/retest/run-plan.js +1 -1
- package/dist/tools/retest/run-plan.js.map +1 -1
- package/dist/tools/retest/run-test-case.js +1 -1
- package/dist/tools/retest/run-test-case.js.map +1 -1
- package/dist/tools/retest/summarize.js +2 -2
- package/dist/tools/retest/summarize.js.map +1 -1
- package/dist/tools/retest/{update-tests.d.ts → update.d.ts} +2 -2
- package/dist/tools/retest/update.d.ts.map +1 -0
- package/dist/tools/retest/{update-tests.js → update.js} +4 -4
- package/dist/tools/retest/update.js.map +1 -0
- package/dist/workspace/types.d.ts +2 -2
- package/dist/workspace/types.d.ts.map +1 -1
- package/package.json +8 -5
- package/dist/prompts/templates/mcp/retest-full-workflow.md +0 -12
- package/dist/tools/retest/discover-features.d.ts +0 -30
- package/dist/tools/retest/discover-features.d.ts.map +0 -1
- package/dist/tools/retest/discover-features.js +0 -343
- package/dist/tools/retest/discover-features.js.map +0 -1
- package/dist/tools/retest/discover-flows.d.ts +0 -29
- package/dist/tools/retest/discover-flows.d.ts.map +0 -1
- package/dist/tools/retest/discover-flows.js +0 -341
- package/dist/tools/retest/discover-flows.js.map +0 -1
- package/dist/tools/retest/update-tests.d.ts.map +0 -1
- package/dist/tools/retest/update-tests.js.map +0 -1
package/README.md
CHANGED
|
@@ -40,6 +40,41 @@ npm install
|
|
|
40
40
|
npm run build
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
+
## Testing
|
|
44
|
+
|
|
45
|
+
The project includes multiple test tiers:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Unit tests (fast, uses mocks)
|
|
49
|
+
npm test
|
|
50
|
+
|
|
51
|
+
# Integration tests (MCP protocol, mock Playwright)
|
|
52
|
+
npm run test:integration
|
|
53
|
+
|
|
54
|
+
# E2E tests (real browser, real external sites)
|
|
55
|
+
npm run test:e2e
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### E2E Testing
|
|
59
|
+
|
|
60
|
+
E2E tests exercise complete workflows with real Playwright MCP against external test sites (demo.playwright.dev/todomvc). They validate:
|
|
61
|
+
|
|
62
|
+
- **Init + Cover workflow**: Shortcut setup, workspace creation, crawl → describe → generate
|
|
63
|
+
- **Retest workflow**: Plan → run → summarize cycle
|
|
64
|
+
- **Error handling**: Budget limits, domain security, input validation
|
|
65
|
+
|
|
66
|
+
**Requirements for E2E tests:**
|
|
67
|
+
- Node.js 22+
|
|
68
|
+
- Network access to demo.playwright.dev
|
|
69
|
+
- Playwright browsers (installed automatically via @playwright/mcp)
|
|
70
|
+
|
|
71
|
+
**Run E2E tests:**
|
|
72
|
+
```bash
|
|
73
|
+
npm run test:e2e
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
E2E tests have extended timeouts (5 minutes per test) and run serially to avoid resource contention. They create isolated temporary workspaces that are cleaned up after each test.
|
|
77
|
+
|
|
43
78
|
## Configuration
|
|
44
79
|
|
|
45
80
|
Configuration is done via environment variables:
|
|
@@ -81,7 +116,7 @@ Initialize a new web testing analysis workspace.
|
|
|
81
116
|
|
|
82
117
|
**Output:** `analysisId` (e.g., `2025-01-15_10-30`), `workspacePath`
|
|
83
118
|
|
|
84
|
-
### `
|
|
119
|
+
### `retest_crawl`
|
|
85
120
|
|
|
86
121
|
Perform goal-directed crawling of a web application.
|
|
87
122
|
|
|
@@ -107,15 +142,16 @@ Perform goal-directed crawling of a web application.
|
|
|
107
142
|
|
|
108
143
|
**Output:** `crawlId` (e.g., `2025-01-15_10-30-45`), `crawlPath`, page artifacts
|
|
109
144
|
|
|
110
|
-
### `
|
|
145
|
+
### `retest_describe`
|
|
111
146
|
|
|
112
|
-
Discover application features and
|
|
147
|
+
Discover application features, modules, and user flows from crawl data.
|
|
113
148
|
|
|
114
149
|
**Input:**
|
|
115
150
|
```json
|
|
116
151
|
{
|
|
117
152
|
"analysisId": "2025-01-15_10-30",
|
|
118
|
-
"crawlId": "2025-01-15_10-30-45"
|
|
153
|
+
"crawlId": "2025-01-15_10-30-45",
|
|
154
|
+
"discoverFlows": true
|
|
119
155
|
}
|
|
120
156
|
```
|
|
121
157
|
|
|
@@ -123,25 +159,10 @@ Discover application features and modules from crawl data.
|
|
|
123
159
|
- Application purpose and type
|
|
124
160
|
- Discovered features with descriptions
|
|
125
161
|
- Entities and entry points per feature
|
|
162
|
+
- User flows within each feature
|
|
126
163
|
- Security and accessibility observations
|
|
127
164
|
|
|
128
|
-
### `
|
|
129
|
-
|
|
130
|
-
Discover user flows within a specific feature.
|
|
131
|
-
|
|
132
|
-
**Input:**
|
|
133
|
-
```json
|
|
134
|
-
{
|
|
135
|
-
"analysisId": "2025-01-15_10-30",
|
|
136
|
-
"featureSlug": "checkout"
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Output:** `flowsUri`, `flowsFilePath` containing:
|
|
141
|
-
- User flows with steps
|
|
142
|
-
- Entry points and suggested assertions
|
|
143
|
-
|
|
144
|
-
### `retest_generate_tests`
|
|
165
|
+
### `retest_generate`
|
|
145
166
|
|
|
146
167
|
Generate test cases from application analysis.
|
|
147
168
|
|
|
@@ -242,12 +263,16 @@ Legacy UUID-format IDs are still supported for backwards compatibility.
|
|
|
242
263
|
|
|
243
264
|
The server provides prompts for guided workflows:
|
|
244
265
|
|
|
245
|
-
- **
|
|
246
|
-
- **
|
|
247
|
-
- **
|
|
248
|
-
- **
|
|
249
|
-
- **
|
|
250
|
-
- **
|
|
266
|
+
- **cover** - Expand test coverage by crawling, describing, and generating tests
|
|
267
|
+
- **crawl** - Start or continue crawling
|
|
268
|
+
- **describe** - Discover features and flows (unified discovery)
|
|
269
|
+
- **discover** - Discover features, or flows for a specific feature
|
|
270
|
+
- **generate** - Generate test cases
|
|
271
|
+
- **init** - Initialize a new analysis or set up shortcuts
|
|
272
|
+
- **kit** - Complete testing workflow (plan, run, summarize, update)
|
|
273
|
+
- **plan** - Create a test plan based on changes
|
|
274
|
+
- **run** - Execute a test case
|
|
275
|
+
- **summarize** - Generate test result summary with suggestions
|
|
251
276
|
|
|
252
277
|
## Example Workflow
|
|
253
278
|
|
|
@@ -257,22 +282,18 @@ The server provides prompts for guided workflows:
|
|
|
257
282
|
→ Returns analysisId
|
|
258
283
|
|
|
259
284
|
2. Crawl the application:
|
|
260
|
-
|
|
285
|
+
retest_crawl({ analysisId, goal: "Explore product catalog and checkout" })
|
|
261
286
|
→ Returns crawlId, artifacts
|
|
262
287
|
|
|
263
|
-
3.
|
|
264
|
-
|
|
265
|
-
→ Returns discovered features
|
|
266
|
-
|
|
267
|
-
4. Discover flows for a feature:
|
|
268
|
-
retest_discover_flows({ analysisId, featureSlug: "checkout" })
|
|
269
|
-
→ Returns user flows
|
|
288
|
+
3. Describe features and flows:
|
|
289
|
+
retest_describe({ analysisId, crawlId, discoverFlows: true })
|
|
290
|
+
→ Returns discovered features and flows
|
|
270
291
|
|
|
271
|
-
|
|
272
|
-
|
|
292
|
+
4. Generate test cases:
|
|
293
|
+
retest_generate({ analysisId })
|
|
273
294
|
→ Returns test cases
|
|
274
295
|
|
|
275
|
-
|
|
296
|
+
5. Run tests:
|
|
276
297
|
retest_run_test({ analysisId, testCaseId })
|
|
277
298
|
→ Returns test results with evidence
|
|
278
299
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiBzD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACvD,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACzC,CAAC,CAAC,CAAC;CACL;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,aAAa,GAC9B,SAAS,EAAE,CAwYb"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -1,80 +1,48 @@
|
|
|
1
1
|
import { loadTemplate, interpolate } from "./loader.js";
|
|
2
|
-
// Load templates once at module initialization
|
|
3
|
-
const
|
|
2
|
+
// Load templates once at module initialization (alphabetically ordered)
|
|
3
|
+
const retestCoverTemplate = loadTemplate("mcp", "retest-cover");
|
|
4
4
|
const retestCrawlTemplate = loadTemplate("mcp", "retest-crawl");
|
|
5
|
+
const retestDescribeTemplate = loadTemplate("mcp", "retest-describe");
|
|
5
6
|
const retestDiscoverTemplate = loadTemplate("mcp", "retest-discover");
|
|
6
7
|
const retestDiscoverFlowsTemplate = loadTemplate("mcp", "retest-discover-flows");
|
|
7
8
|
const retestGenerateTestsTemplate = loadTemplate("mcp", "retest-generate-tests");
|
|
9
|
+
const retestPlanTemplate = loadTemplate("mcp", "retest-plan");
|
|
8
10
|
const retestRunTestTemplate = loadTemplate("mcp", "retest-run-test");
|
|
9
|
-
const retestFullWorkflowTemplate = loadTemplate("mcp", "retest-full-workflow");
|
|
10
11
|
const retestSetupTemplate = loadTemplate("mcp", "retest-setup");
|
|
11
|
-
const
|
|
12
|
-
const retestCoverTemplate = loadTemplate("mcp", "retest-cover");
|
|
13
|
-
const retestDescribeTemplate = loadTemplate("mcp", "retest-describe");
|
|
14
|
-
const retestPlanTemplate = loadTemplate("mcp", "retest-plan");
|
|
12
|
+
const retestStartTemplate = loadTemplate("mcp", "retest-start");
|
|
15
13
|
const retestSummarizeTemplate = loadTemplate("mcp", "retest-summarize");
|
|
14
|
+
const retestWorkflowTemplate = loadTemplate("mcp", "retest-workflow");
|
|
16
15
|
export function createRetestPrompts(getContext) {
|
|
16
|
+
// Prompts are alphabetically ordered by name:
|
|
17
|
+
// cover, crawl, describe, discover, generate, init, kit, plan, run, summarize
|
|
17
18
|
return [
|
|
18
19
|
{
|
|
19
|
-
name: "
|
|
20
|
-
description: "
|
|
20
|
+
name: "cover",
|
|
21
|
+
description: "Expand test coverage by crawling, describing, and generating tests for a flow.",
|
|
21
22
|
arguments: [
|
|
22
23
|
{
|
|
23
|
-
name: "
|
|
24
|
-
description: "The
|
|
25
|
-
required:
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
name: "focus",
|
|
29
|
-
description: "Optional focus area for analysis (e.g., 'checkout flow', 'user registration')",
|
|
30
|
-
required: false,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: "agent",
|
|
34
|
-
description: 'For setup mode: Agent selection ("auto", "all", or specific agent ID)',
|
|
35
|
-
required: false,
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: "scope",
|
|
39
|
-
description: 'For setup mode: Installation scope ("workspace", "user", or "both")',
|
|
40
|
-
required: false,
|
|
24
|
+
name: "analysisId",
|
|
25
|
+
description: "The ID of the analysis workspace",
|
|
26
|
+
required: true,
|
|
41
27
|
},
|
|
42
28
|
{
|
|
43
|
-
name: "
|
|
44
|
-
description: "
|
|
45
|
-
required:
|
|
29
|
+
name: "flowFocus",
|
|
30
|
+
description: "Focus area for coverage (e.g., 'checkout flow', 'user registration')",
|
|
31
|
+
required: true,
|
|
46
32
|
},
|
|
47
33
|
],
|
|
48
34
|
async getMessages(args) {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
type: "text",
|
|
58
|
-
text: interpolate(retestStartTemplate, { url, focus }),
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
];
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
// Shortcut setup mode
|
|
65
|
-
const agent = args.agent || "auto";
|
|
66
|
-
const scope = args.scope || "workspace";
|
|
67
|
-
const dryRun = args.dryRun === "true" ? "true" : "false";
|
|
68
|
-
return [
|
|
69
|
-
{
|
|
70
|
-
role: "user",
|
|
71
|
-
content: {
|
|
72
|
-
type: "text",
|
|
73
|
-
text: interpolate(retestSetupTemplate, { agent, scope, dryRun }),
|
|
74
|
-
},
|
|
35
|
+
const analysisId = args.analysisId || "[analysisId]";
|
|
36
|
+
const flowFocus = args.flowFocus || "main functionality";
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
role: "user",
|
|
40
|
+
content: {
|
|
41
|
+
type: "text",
|
|
42
|
+
text: interpolate(retestCoverTemplate, { analysisId, flowFocus }),
|
|
75
43
|
},
|
|
76
|
-
|
|
77
|
-
|
|
44
|
+
},
|
|
45
|
+
];
|
|
78
46
|
},
|
|
79
47
|
},
|
|
80
48
|
{
|
|
@@ -112,6 +80,29 @@ export function createRetestPrompts(getContext) {
|
|
|
112
80
|
];
|
|
113
81
|
},
|
|
114
82
|
},
|
|
83
|
+
{
|
|
84
|
+
name: "describe",
|
|
85
|
+
description: "Discover features and user flows from crawl data (unified discovery).",
|
|
86
|
+
arguments: [
|
|
87
|
+
{
|
|
88
|
+
name: "analysisId",
|
|
89
|
+
description: "The ID of the analysis workspace",
|
|
90
|
+
required: true,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
async getMessages(args) {
|
|
94
|
+
const analysisId = args.analysisId || "[analysisId]";
|
|
95
|
+
return [
|
|
96
|
+
{
|
|
97
|
+
role: "user",
|
|
98
|
+
content: {
|
|
99
|
+
type: "text",
|
|
100
|
+
text: interpolate(retestDescribeTemplate, { analysisId }),
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
},
|
|
105
|
+
},
|
|
115
106
|
{
|
|
116
107
|
name: "discover",
|
|
117
108
|
description: "Discover features and flows in a web application based on crawl data.",
|
|
@@ -184,81 +175,113 @@ export function createRetestPrompts(getContext) {
|
|
|
184
175
|
},
|
|
185
176
|
},
|
|
186
177
|
{
|
|
187
|
-
name: "
|
|
188
|
-
description: "
|
|
178
|
+
name: "init",
|
|
179
|
+
description: "Initialize retest. With URL: creates analysis workspace for testing. Without URL: sets up /retest shortcuts for your AI coding agent.",
|
|
189
180
|
arguments: [
|
|
190
181
|
{
|
|
191
|
-
name: "
|
|
192
|
-
description: "The
|
|
193
|
-
required:
|
|
182
|
+
name: "url",
|
|
183
|
+
description: "The URL of the web application to test. If omitted, runs shortcut setup instead.",
|
|
184
|
+
required: false,
|
|
194
185
|
},
|
|
195
186
|
{
|
|
196
|
-
name: "
|
|
197
|
-
description: "
|
|
198
|
-
required:
|
|
187
|
+
name: "focus",
|
|
188
|
+
description: "Optional focus area for analysis (e.g., 'checkout flow', 'user registration')",
|
|
189
|
+
required: false,
|
|
199
190
|
},
|
|
200
|
-
],
|
|
201
|
-
async getMessages(args) {
|
|
202
|
-
const analysisId = args.analysisId || "[analysisId]";
|
|
203
|
-
const testCaseId = args.testCaseId || "[testCaseId]";
|
|
204
|
-
return [
|
|
205
|
-
{
|
|
206
|
-
role: "user",
|
|
207
|
-
content: {
|
|
208
|
-
type: "text",
|
|
209
|
-
text: interpolate(retestRunTestTemplate, { analysisId, testCaseId }),
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
];
|
|
213
|
-
},
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
name: "cover",
|
|
217
|
-
description: "Expand test coverage by crawling, describing, and generating tests for a flow.",
|
|
218
|
-
arguments: [
|
|
219
191
|
{
|
|
220
|
-
name: "
|
|
221
|
-
description:
|
|
222
|
-
required:
|
|
192
|
+
name: "agent",
|
|
193
|
+
description: 'For setup mode: Agent selection ("auto", "all", or specific agent ID)',
|
|
194
|
+
required: false,
|
|
223
195
|
},
|
|
224
196
|
{
|
|
225
|
-
name: "
|
|
226
|
-
description:
|
|
227
|
-
required:
|
|
197
|
+
name: "scope",
|
|
198
|
+
description: 'For setup mode: Installation scope ("workspace", "user", or "both")',
|
|
199
|
+
required: false,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
name: "dryRun",
|
|
203
|
+
description: "For setup mode: Preview actions without writing files (true/false)",
|
|
204
|
+
required: false,
|
|
228
205
|
},
|
|
229
206
|
],
|
|
230
207
|
async getMessages(args) {
|
|
231
|
-
const
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
{
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
208
|
+
const url = args.url;
|
|
209
|
+
if (url) {
|
|
210
|
+
// Analysis workspace mode
|
|
211
|
+
const focus = args.focus ? `\nFocus area: ${args.focus}` : "";
|
|
212
|
+
return [
|
|
213
|
+
{
|
|
214
|
+
role: "user",
|
|
215
|
+
content: {
|
|
216
|
+
type: "text",
|
|
217
|
+
text: interpolate(retestStartTemplate, { url, focus }),
|
|
218
|
+
},
|
|
239
219
|
},
|
|
240
|
-
|
|
241
|
-
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// Shortcut setup mode
|
|
224
|
+
const agent = args.agent || "auto";
|
|
225
|
+
const scope = args.scope || "workspace";
|
|
226
|
+
const dryRun = args.dryRun === "true" ? "true" : "false";
|
|
227
|
+
return [
|
|
228
|
+
{
|
|
229
|
+
role: "user",
|
|
230
|
+
content: {
|
|
231
|
+
type: "text",
|
|
232
|
+
text: interpolate(retestSetupTemplate, { agent, scope, dryRun }),
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
];
|
|
236
|
+
}
|
|
242
237
|
},
|
|
243
238
|
},
|
|
244
239
|
{
|
|
245
|
-
name: "
|
|
246
|
-
description: "
|
|
240
|
+
name: "kit",
|
|
241
|
+
description: "Run the kit workflow after code changes: ask what changed, plan tests, run, summarize, and update.",
|
|
247
242
|
arguments: [
|
|
248
243
|
{
|
|
249
244
|
name: "analysisId",
|
|
250
|
-
description: "The ID of the analysis workspace",
|
|
245
|
+
description: "The ID of the analysis workspace (required)",
|
|
251
246
|
required: true,
|
|
252
247
|
},
|
|
248
|
+
{
|
|
249
|
+
name: "changeDescription",
|
|
250
|
+
description: "Optional: Pre-provided description of changes (skips Step 1)",
|
|
251
|
+
required: false,
|
|
252
|
+
},
|
|
253
253
|
],
|
|
254
254
|
async getMessages(args) {
|
|
255
255
|
const analysisId = args.analysisId || "[analysisId]";
|
|
256
|
+
// If changeDescription is provided, modify the prompt to skip Step 1
|
|
257
|
+
if (args.changeDescription) {
|
|
258
|
+
return [
|
|
259
|
+
{
|
|
260
|
+
role: "user",
|
|
261
|
+
content: {
|
|
262
|
+
type: "text",
|
|
263
|
+
text: `Run the kit workflow for analysis: ${analysisId}
|
|
264
|
+
|
|
265
|
+
Changes to test: ${args.changeDescription}
|
|
266
|
+
|
|
267
|
+
Skip Step 1 (asking what changed) and proceed directly to:
|
|
268
|
+
|
|
269
|
+
## Step 2: Create Test Plan
|
|
270
|
+
Call \`retest_plan\` with:
|
|
271
|
+
- analysisId: "${analysisId}"
|
|
272
|
+
- changeDescription: "${args.changeDescription}"
|
|
273
|
+
|
|
274
|
+
Then continue with Steps 3-6 as described in the kit workflow.`,
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
];
|
|
278
|
+
}
|
|
256
279
|
return [
|
|
257
280
|
{
|
|
258
281
|
role: "user",
|
|
259
282
|
content: {
|
|
260
283
|
type: "text",
|
|
261
|
-
text: interpolate(
|
|
284
|
+
text: interpolate(retestWorkflowTemplate, { analysisId }),
|
|
262
285
|
},
|
|
263
286
|
},
|
|
264
287
|
];
|
|
@@ -294,104 +317,52 @@ export function createRetestPrompts(getContext) {
|
|
|
294
317
|
},
|
|
295
318
|
},
|
|
296
319
|
{
|
|
297
|
-
name: "
|
|
298
|
-
description: "
|
|
320
|
+
name: "run",
|
|
321
|
+
description: "Run a specific test case against the web application.",
|
|
299
322
|
arguments: [
|
|
300
323
|
{
|
|
301
324
|
name: "analysisId",
|
|
302
325
|
description: "The ID of the analysis workspace",
|
|
303
326
|
required: true,
|
|
304
327
|
},
|
|
305
|
-
],
|
|
306
|
-
async getMessages(args) {
|
|
307
|
-
const analysisId = args.analysisId || "[analysisId]";
|
|
308
|
-
return [
|
|
309
|
-
{
|
|
310
|
-
role: "user",
|
|
311
|
-
content: {
|
|
312
|
-
type: "text",
|
|
313
|
-
text: interpolate(retestSummarizeTemplate, { analysisId }),
|
|
314
|
-
},
|
|
315
|
-
},
|
|
316
|
-
];
|
|
317
|
-
},
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
name: "retest",
|
|
321
|
-
description: "Run the retest workflow after code changes: ask what changed, plan tests, run, summarize, and update.",
|
|
322
|
-
arguments: [
|
|
323
328
|
{
|
|
324
|
-
name: "
|
|
325
|
-
description: "The ID of the
|
|
329
|
+
name: "testCaseId",
|
|
330
|
+
description: "The ID of the test case to run",
|
|
326
331
|
required: true,
|
|
327
332
|
},
|
|
328
|
-
{
|
|
329
|
-
name: "changeDescription",
|
|
330
|
-
description: "Optional: Pre-provided description of changes (skips Step 1)",
|
|
331
|
-
required: false,
|
|
332
|
-
},
|
|
333
333
|
],
|
|
334
334
|
async getMessages(args) {
|
|
335
335
|
const analysisId = args.analysisId || "[analysisId]";
|
|
336
|
-
|
|
337
|
-
if (args.changeDescription) {
|
|
338
|
-
return [
|
|
339
|
-
{
|
|
340
|
-
role: "user",
|
|
341
|
-
content: {
|
|
342
|
-
type: "text",
|
|
343
|
-
text: `Run the retest workflow for analysis: ${analysisId}
|
|
344
|
-
|
|
345
|
-
Changes to test: ${args.changeDescription}
|
|
346
|
-
|
|
347
|
-
Skip Step 1 (asking what changed) and proceed directly to:
|
|
348
|
-
|
|
349
|
-
## Step 2: Create Test Plan
|
|
350
|
-
Call \`retest_plan\` with:
|
|
351
|
-
- analysisId: "${analysisId}"
|
|
352
|
-
- changeDescription: "${args.changeDescription}"
|
|
353
|
-
|
|
354
|
-
Then continue with Steps 3-6 as described in the retest workflow.`,
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
];
|
|
358
|
-
}
|
|
336
|
+
const testCaseId = args.testCaseId || "[testCaseId]";
|
|
359
337
|
return [
|
|
360
338
|
{
|
|
361
339
|
role: "user",
|
|
362
340
|
content: {
|
|
363
341
|
type: "text",
|
|
364
|
-
text: interpolate(
|
|
342
|
+
text: interpolate(retestRunTestTemplate, { analysisId, testCaseId }),
|
|
365
343
|
},
|
|
366
344
|
},
|
|
367
345
|
];
|
|
368
346
|
},
|
|
369
347
|
},
|
|
370
|
-
// Legacy prompt for backward compatibility
|
|
371
348
|
{
|
|
372
|
-
name: "
|
|
373
|
-
description: "
|
|
349
|
+
name: "summarize",
|
|
350
|
+
description: "Generate a summary report from test results with suggestions.",
|
|
374
351
|
arguments: [
|
|
375
352
|
{
|
|
376
|
-
name: "
|
|
377
|
-
description: "The
|
|
353
|
+
name: "analysisId",
|
|
354
|
+
description: "The ID of the analysis workspace",
|
|
378
355
|
required: true,
|
|
379
356
|
},
|
|
380
|
-
{
|
|
381
|
-
name: "focus",
|
|
382
|
-
description: "Focus area for testing",
|
|
383
|
-
required: false,
|
|
384
|
-
},
|
|
385
357
|
],
|
|
386
358
|
async getMessages(args) {
|
|
387
|
-
const
|
|
388
|
-
const focus = args.focus || "main functionality";
|
|
359
|
+
const analysisId = args.analysisId || "[analysisId]";
|
|
389
360
|
return [
|
|
390
361
|
{
|
|
391
362
|
role: "user",
|
|
392
363
|
content: {
|
|
393
364
|
type: "text",
|
|
394
|
-
text: interpolate(
|
|
365
|
+
text: interpolate(retestSummarizeTemplate, { analysisId }),
|
|
395
366
|
},
|
|
396
367
|
},
|
|
397
368
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,4 @@ Analysis ID: ${analysisId}
|
|
|
4
4
|
Goal: ${goal}
|
|
5
5
|
Strategy: ${strategy}
|
|
6
6
|
|
|
7
|
-
Use
|
|
7
|
+
Use retest_crawl to explore the application. Report progress and let me know if you encounter any obstacles (cookie banners, modals, authentication).
|
|
@@ -7,7 +7,7 @@ Call `retest_describe` to perform unified discovery:
|
|
|
7
7
|
- Lists entities, entry points, and step sequences
|
|
8
8
|
- Notes security and accessibility observations
|
|
9
9
|
|
|
10
|
-
This
|
|
10
|
+
This performs unified discovery of features and flows in a single pass.
|
|
11
11
|
|
|
12
12
|
Parameters:
|
|
13
13
|
- analysisId: "${analysisId}"
|
|
@@ -3,7 +3,7 @@ Please discover user flows for the "${featureSlug}" feature.
|
|
|
3
3
|
Analysis ID: ${analysisId}
|
|
4
4
|
Feature: ${featureSlug}
|
|
5
5
|
|
|
6
|
-
Use
|
|
6
|
+
Use retest_describe with featureSlug to identify user flows within this feature, including:
|
|
7
7
|
- User journeys and goals
|
|
8
8
|
- Entry points and step sequences
|
|
9
9
|
- Assertions that should hold
|