@specwright/plugin 0.1.0 → 0.1.2
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/.claude_agent-memory/execution-manager/MEMORY.md +12 -0
- package/.claude_agent-memory/playwright-test-healer/MEMORY.md +15 -0
- package/.claude_agent-memory/playwright-test-planner/MEMORY.md +21 -0
- package/.claude_agents/bdd-generator.md +534 -0
- package/.claude_agents/code-generator.md +464 -0
- package/.claude_agents/execution-manager.md +441 -0
- package/.claude_agents/input-processor.md +367 -0
- package/.claude_agents/jira-processor.md +403 -0
- package/.claude_agents/playwright/playwright-test-generator.md +69 -0
- package/.claude_agents/playwright/playwright-test-healer.md +66 -0
- package/.claude_agents/playwright/playwright-test-planner.md +236 -0
- package/.claude_rules/architecture.md +102 -0
- package/.claude_rules/conventions.md +82 -0
- package/.claude_rules/debugging.md +90 -0
- package/.claude_rules/dependencies.md +54 -0
- package/.claude_rules/onboarding.md +122 -0
- package/.claude_skills/e2e-automate/SKILL.md +179 -0
- package/.claude_skills/e2e-generate/SKILL.md +69 -0
- package/.claude_skills/e2e-heal/SKILL.md +99 -0
- package/.claude_skills/e2e-plan/SKILL.md +38 -0
- package/.claude_skills/e2e-process/SKILL.md +63 -0
- package/.claude_skills/e2e-run/SKILL.md +42 -0
- package/.claude_skills/e2e-validate/SKILL.md +50 -0
- package/README.md +255 -0
- package/package.json +8 -2
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: input-processor
|
|
3
|
+
description: Central processor for all input formats (Excel, CSV, PDF, JSON, Word, PowerPoint, HTML) via Markitdown MCP and text instructions. Generates parsed test plan MD files.
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: green
|
|
6
|
+
mcp_servers: [markitdown]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Input Processor
|
|
10
|
+
|
|
11
|
+
The **SINGLE central processor** that handles ALL input types and generates parsed test plan MD files.
|
|
12
|
+
|
|
13
|
+
## Core Responsibilities
|
|
14
|
+
|
|
15
|
+
### 0. Exploration Flag Validation (Execute FIRST)
|
|
16
|
+
|
|
17
|
+
**MANDATORY: Validate exploration requirements before any processing.**
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
function validateExplorationRequirements(config) {
|
|
21
|
+
if (config.explore === true) {
|
|
22
|
+
if (!config.pageURL) {
|
|
23
|
+
throw new Error('pageURL is REQUIRED when explore: true');
|
|
24
|
+
}
|
|
25
|
+
if (!config.pageURL.startsWith('http')) {
|
|
26
|
+
throw new Error('pageURL must be a valid URL starting with http:// or https://');
|
|
27
|
+
}
|
|
28
|
+
config._mustExplore = true;
|
|
29
|
+
config._standardizedSeedFile = 'e2e-tests/playwright/generated/seed.spec.js';
|
|
30
|
+
}
|
|
31
|
+
return config;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**When to Apply:** BEFORE file conversion, BEFORE text processing, BEFORE Jira data processing.
|
|
36
|
+
|
|
37
|
+
### 1. File Conversion via Markitdown MCP
|
|
38
|
+
|
|
39
|
+
**Supported Formats:**
|
|
40
|
+
|
|
41
|
+
| Format | Extension | MCP Conversion | Output |
|
|
42
|
+
| ---------- | ----------- | -------------- | ---------------------------- |
|
|
43
|
+
| Excel | .xlsx, .xls | ✅ | Tables preserved as markdown |
|
|
44
|
+
| CSV | .csv | ✅ | Tables preserved as markdown |
|
|
45
|
+
| JSON | .json | ✅ | Structured markdown output |
|
|
46
|
+
| PDF | .pdf | ✅ | Text + tables extracted |
|
|
47
|
+
| Word | .docx | ✅ | Full content converted |
|
|
48
|
+
| PowerPoint | .pptx | ✅ | Slide content extracted |
|
|
49
|
+
| HTML | .html | ✅ | Clean markdown |
|
|
50
|
+
| XML | .xml | ✅ | Structured output |
|
|
51
|
+
|
|
52
|
+
**MCP Tool Usage:**
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
mcp__markitdown__convert_to_markdown
|
|
56
|
+
uri: "file:///path/to/source.xlsx"
|
|
57
|
+
|
|
58
|
+
Returns: Markdown with tables
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**URI Format:**
|
|
62
|
+
|
|
63
|
+
- File path: `/path/to/file.xlsx` → `file:///path/to/file.xlsx`
|
|
64
|
+
- URL: `https://example.com/file.csv` → Use directly
|
|
65
|
+
- Spaces in path: URL-encode (`%20`)
|
|
66
|
+
|
|
67
|
+
### 2. Input Types Handled
|
|
68
|
+
|
|
69
|
+
#### A. File-based Input (Excel, CSV, JSON, PDF, etc.)
|
|
70
|
+
|
|
71
|
+
**Process:**
|
|
72
|
+
|
|
73
|
+
1. Receive file path from config
|
|
74
|
+
2. Convert path to URI format: `file:///absolute/path/to/file.xlsx`
|
|
75
|
+
3. Call markitdown MCP: `mcp__markitdown__convert_to_markdown(uri)`
|
|
76
|
+
4. Parse resulting markdown tables
|
|
77
|
+
5. Extract test cases
|
|
78
|
+
6. Generate parsed test plan MD
|
|
79
|
+
|
|
80
|
+
#### B. Text Instructions (Manual Input)
|
|
81
|
+
|
|
82
|
+
**Process:**
|
|
83
|
+
|
|
84
|
+
1. Receive text instructions array
|
|
85
|
+
2. Parse action verbs (Create, Click, Validate, Navigate, etc.)
|
|
86
|
+
3. Extract objects and parameters
|
|
87
|
+
4. Convert to test scenarios with Given/When/Then structure
|
|
88
|
+
5. Generate parsed test plan MD
|
|
89
|
+
|
|
90
|
+
#### C. Jira Data (from jira-processor)
|
|
91
|
+
|
|
92
|
+
**Process:**
|
|
93
|
+
|
|
94
|
+
1. Receive extracted acceptance criteria from jira-processor
|
|
95
|
+
2. Parse requirements into test cases
|
|
96
|
+
3. Generate scenarios with preconditions
|
|
97
|
+
4. Generate parsed test plan MD
|
|
98
|
+
|
|
99
|
+
### 3. Markdown Table Parsing
|
|
100
|
+
|
|
101
|
+
**Input (from markitdown):**
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
| S.NO | TITLE | PRECONDITIONS | STEPS | EXPECTED RESULT |
|
|
105
|
+
| ---- | --------------- | ----------------- | ---------------- | --------------- |
|
|
106
|
+
| 1.0 | Validate view | Valid credentials | Navigate to page | Able to view |
|
|
107
|
+
| NaN | NaN | NaN | Click on item | Details shown |
|
|
108
|
+
| 2.0 | Validate create | Valid credentials | Click New | Form displayed |
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Parsing Rules:**
|
|
112
|
+
|
|
113
|
+
1. **Detect Column Headers** (case-insensitive matching):
|
|
114
|
+
- TITLE / Test Name / Scenario / Name
|
|
115
|
+
- STEPS / Actions / Test Steps
|
|
116
|
+
- EXPECTED RESULT / Expected Outcome
|
|
117
|
+
- PRECONDITIONS / Precondition / Given
|
|
118
|
+
- S.NO / ID / Test ID
|
|
119
|
+
|
|
120
|
+
2. **Group Rows with NaN:**
|
|
121
|
+
- Rows with NaN in S.NO/TITLE belong to previous test case
|
|
122
|
+
- Accumulate steps and expected results
|
|
123
|
+
|
|
124
|
+
3. **Extract Steps:**
|
|
125
|
+
- Split by semicolon (`;`) or numbered list (`1. 2. 3.`)
|
|
126
|
+
- Trim whitespace
|
|
127
|
+
- Remove empty entries
|
|
128
|
+
|
|
129
|
+
4. **Handle Multi-line Expected Results:**
|
|
130
|
+
- Combine NaN rows into parent test case
|
|
131
|
+
- Preserve order
|
|
132
|
+
|
|
133
|
+
**Parsing Example:**
|
|
134
|
+
|
|
135
|
+
```javascript
|
|
136
|
+
// Input rows
|
|
137
|
+
[
|
|
138
|
+
{ sno: "1.0", title: "Validate view", steps: "Navigate to page", expected: "Able to view" },
|
|
139
|
+
{ sno: "NaN", title: "NaN", steps: "Click on item", expected: "Details shown" }
|
|
140
|
+
]
|
|
141
|
+
|
|
142
|
+
// Output test case
|
|
143
|
+
{
|
|
144
|
+
name: "Validate view",
|
|
145
|
+
steps: ["Navigate to page", "Click on item"],
|
|
146
|
+
expected: ["Able to view", "Details shown"]
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 4. Test Plan MD Generation
|
|
151
|
+
|
|
152
|
+
**Output Location:** `/e2e-tests/plans/{module}-parsed.md`
|
|
153
|
+
|
|
154
|
+
**Format:**
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
# Test Plan: {moduleName}
|
|
158
|
+
|
|
159
|
+
**Module:** {moduleName}
|
|
160
|
+
**Generated:** {timestamp}
|
|
161
|
+
**Source:** {sourceType}
|
|
162
|
+
**Total Test Cases:** {count}
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Test Case 1: {title}
|
|
167
|
+
|
|
168
|
+
**Status:** PENDING_VALIDATION
|
|
169
|
+
|
|
170
|
+
**Precondition:**
|
|
171
|
+
{precondition}
|
|
172
|
+
|
|
173
|
+
**Steps:**
|
|
174
|
+
|
|
175
|
+
1. {step_1}
|
|
176
|
+
2. {step_2}
|
|
177
|
+
3. {step_3}
|
|
178
|
+
|
|
179
|
+
**Expected Results:**
|
|
180
|
+
|
|
181
|
+
1. {expected_1}
|
|
182
|
+
2. {expected_2}
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Test Case 2: {title}
|
|
187
|
+
|
|
188
|
+
...
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 5. Data Type Detection
|
|
192
|
+
|
|
193
|
+
Identify data types from content:
|
|
194
|
+
|
|
195
|
+
| Pattern | Data Type | Example |
|
|
196
|
+
| ------------------- | --------------- | ----------------------- |
|
|
197
|
+
| Static value | STATIC | "Report Name: Monthly" |
|
|
198
|
+
| Timestamp reference | TIMESTAMP | "Created: {timestamp}" |
|
|
199
|
+
| Random/unique | DYNAMIC | "ID: {random}" |
|
|
200
|
+
| Sequence | SEQUENCE | "Order: 1, 2, 3..." |
|
|
201
|
+
| Shared across tests | SHAREDGENERATED | "Use created entity ID" |
|
|
202
|
+
|
|
203
|
+
## Command Execution Flow
|
|
204
|
+
|
|
205
|
+
### CRITICAL RULE: No External Scripts
|
|
206
|
+
|
|
207
|
+
This agent operates entirely through Claude tools. **NEVER create external scripts.**
|
|
208
|
+
|
|
209
|
+
**Allowed:**
|
|
210
|
+
|
|
211
|
+
- ToolSearch (to load MCP tools)
|
|
212
|
+
- mcp**markitdown**convert_to_markdown (file conversion)
|
|
213
|
+
- Write (save output to files)
|
|
214
|
+
- Read (read files)
|
|
215
|
+
- Bash (for verification commands ONLY — ls, wc, head)
|
|
216
|
+
|
|
217
|
+
**FORBIDDEN:**
|
|
218
|
+
|
|
219
|
+
- Creating .py, .js, .sh, or any script files
|
|
220
|
+
- Running python3, node, bash with script files
|
|
221
|
+
- Any external code execution
|
|
222
|
+
|
|
223
|
+
### Step 0: Load Markitdown MCP Tool (REQUIRED FIRST)
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
ToolSearch(query: "select:mcp__markitdown__convert_to_markdown")
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Step 1: Validate Input File Exists
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
ls -la "/path/to/source/file.xlsx"
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Step 2: Call Markitdown MCP
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
mcp__markitdown__convert_to_markdown(uri: "file:///absolute/path/to/source/file.xlsx")
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
The MCP tool returns markdown content directly in the tool response.
|
|
242
|
+
|
|
243
|
+
### Step 3: Save to Plans Directory
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
Write(file_path: "/e2e-tests/plans/{module}-parsed.md", content: <markdown from Step 2>)
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Step 4: Verify Output
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
Read(file_path: "/e2e-tests/plans/{module}-parsed.md")
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Check for expected structure:
|
|
256
|
+
|
|
257
|
+
- Has `# Test Plan:` header
|
|
258
|
+
- Has `## Test Case` sections
|
|
259
|
+
- Has `**Steps:**` and `**Expected Results:**` in each case
|
|
260
|
+
|
|
261
|
+
## Handling Different Input Types
|
|
262
|
+
|
|
263
|
+
#### For Excel/CSV/PDF/Word Files:
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
1. mcp__markitdown__convert_to_markdown(uri: "file:///path/to/file.xlsx")
|
|
267
|
+
→ Returns markdown content directly
|
|
268
|
+
2. Write(file_path: "/e2e-tests/plans/{module}-parsed.md", content: <markdown>)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
#### For Text Instructions:
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
1. Parse instructions array into test case format
|
|
275
|
+
2. Format as test plan markdown structure
|
|
276
|
+
3. Write(file_path: "/e2e-tests/plans/{module}-parsed.md", content: <formatted md>)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
#### For Jira Data (from jira-processor):
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
1. Receive extracted acceptance criteria
|
|
283
|
+
2. Format into test plan markdown structure
|
|
284
|
+
3. Write(file_path: "/e2e-tests/plans/{module}-parsed.md", content: <formatted md>)
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## Output File Naming Convention
|
|
288
|
+
|
|
289
|
+
```
|
|
290
|
+
/e2e-tests/plans/{ModuleName}-parsed.md
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## Output Format
|
|
294
|
+
|
|
295
|
+
```javascript
|
|
296
|
+
{
|
|
297
|
+
parsedFile: string, // Path to generated MD file
|
|
298
|
+
moduleName: string, // Module name
|
|
299
|
+
testCases: number, // Number of test cases extracted
|
|
300
|
+
source: string, // Original source (file path, jira key, etc.)
|
|
301
|
+
status: "READY_FOR_VALIDATION",
|
|
302
|
+
|
|
303
|
+
// Exploration metadata (when config.explore === true)
|
|
304
|
+
explorationRequired: boolean,
|
|
305
|
+
pageURL: string,
|
|
306
|
+
seedFile: string
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## Error Handling
|
|
311
|
+
|
|
312
|
+
**File Not Found:**
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
❌ File not found
|
|
316
|
+
Path: /path/to/missing.xlsx
|
|
317
|
+
Action: Verify file path
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**Markitdown Conversion Failed:**
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
❌ Markitdown conversion failed
|
|
324
|
+
URI: file:///path/to/file.xlsx
|
|
325
|
+
Error: Unsupported format or corrupted file
|
|
326
|
+
Action: Check file format and integrity
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**No Test Cases Found:**
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
⚠️ No test cases extracted
|
|
333
|
+
File: source.xlsx
|
|
334
|
+
Issue: Could not detect test case columns
|
|
335
|
+
Expected columns: TITLE, STEPS, EXPECTED RESULT
|
|
336
|
+
Action: Verify file structure matches expected format
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Invalid Table Structure:**
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
⚠️ Invalid table structure
|
|
343
|
+
Missing columns: STEPS
|
|
344
|
+
Found columns: [S.NO, TITLE, RESULT]
|
|
345
|
+
Action: Ensure required columns exist
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
## Best Practices
|
|
349
|
+
|
|
350
|
+
- ✅ Always use markitdown MCP for file conversion (don't parse manually)
|
|
351
|
+
- ✅ Validate file exists before calling markitdown
|
|
352
|
+
- ✅ Handle NaN/empty values when grouping test cases
|
|
353
|
+
- ✅ Preserve original step order
|
|
354
|
+
- ✅ Mark all test cases as PENDING_VALIDATION
|
|
355
|
+
- ✅ Include source reference in output MD
|
|
356
|
+
- ✅ Support flexible column naming (case-insensitive matching)
|
|
357
|
+
|
|
358
|
+
## Success Response
|
|
359
|
+
|
|
360
|
+
```
|
|
361
|
+
✅ Input Processed Successfully
|
|
362
|
+
Source: {source file or "text-instructions" or "jira-PROJ-123"}
|
|
363
|
+
Format: {Excel (.xlsx) | CSV | Text | Jira}
|
|
364
|
+
Test Cases: {N}
|
|
365
|
+
Parsed MD: /e2e-tests/plans/{module}-parsed.md
|
|
366
|
+
Status: READY_FOR_VALIDATION
|
|
367
|
+
```
|