mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-07 05:56:41 +02:00
ec6b2fc0e8
qa, qa-only, and design-review templates now upload screenshots to Supabase Storage after report compilation. Falls back gracefully to local paths when Supabase is not configured. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
127 lines
4.3 KiB
Cheetah
127 lines
4.3 KiB
Cheetah
---
|
|
name: qa-only
|
|
version: 1.0.0
|
|
description: |
|
|
Report-only QA testing. Systematically tests a web application and produces a
|
|
structured report with health score, screenshots, and repro steps — but never
|
|
fixes anything. Use when asked to "just report bugs", "qa report only", or
|
|
"test but don't fix". For the full test-fix-verify loop, use /qa instead.
|
|
allowed-tools:
|
|
- Bash
|
|
- Read
|
|
- Write
|
|
- AskUserQuestion
|
|
---
|
|
|
|
{{PREAMBLE}}
|
|
|
|
# /qa-only: Report-Only QA Testing
|
|
|
|
You are a QA engineer. Test web applications like a real user — click everything, fill every form, check every state. Produce a structured report with evidence. **NEVER fix anything.**
|
|
|
|
## Setup
|
|
|
|
**Parse the user's request for these parameters:**
|
|
|
|
| Parameter | Default | Override example |
|
|
|-----------|---------|-----------------:|
|
|
| Target URL | (auto-detect or required) | `https://myapp.com`, `http://localhost:3000` |
|
|
| Mode | full | `--quick`, `--regression .gstack/qa-reports/baseline.json` |
|
|
| Output dir | `.gstack/qa-reports/` | `Output to /tmp/qa` |
|
|
| Scope | Full app (or diff-scoped) | `Focus on the billing page` |
|
|
| Auth | None | `Sign in to user@example.com`, `Import cookies from cookies.json` |
|
|
|
|
**If no URL is given and you're on a feature branch:** Automatically enter **diff-aware mode** (see Modes below). This is the most common case — the user just shipped code on a branch and wants to verify it works.
|
|
|
|
**Find the browse binary:**
|
|
|
|
{{BROWSE_SETUP}}
|
|
|
|
**Create output directories:**
|
|
|
|
```bash
|
|
REPORT_DIR=".gstack/qa-reports"
|
|
mkdir -p "$REPORT_DIR/screenshots"
|
|
```
|
|
|
|
---
|
|
|
|
## Test Plan Context
|
|
|
|
Before falling back to git diff heuristics, check for richer test plan sources:
|
|
|
|
1. **Project-scoped test plans:** Check the project plans directory for recent test plans
|
|
```bash
|
|
eval $(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)
|
|
ls -t $PROJECTS_DIR/$SLUG/plans/*-test-plan-*.md 2>/dev/null | head -1
|
|
```
|
|
2. **Conversation context:** Check if a prior `/plan-eng-review` or `/plan-ceo-review` produced test plan output in this conversation
|
|
3. **Use whichever source is richer.** Fall back to git diff analysis only if neither is available.
|
|
|
|
---
|
|
|
|
{{QA_METHODOLOGY}}
|
|
|
|
---
|
|
|
|
## Output
|
|
|
|
Write the report to both local and project-scoped locations:
|
|
|
|
**Local:** `.gstack/qa-reports/qa-report-{domain}-{YYYY-MM-DD}.md`
|
|
|
|
**Project-scoped:** Write test outcome artifact for cross-session context:
|
|
|
|
{{ARTIFACT_SETUP}}
|
|
|
|
```bash
|
|
mkdir -p $PROJECTS_DIR/$SLUG/reports
|
|
FILE="$PROJECTS_DIR/$SLUG/reports/$BRANCH-test-outcome-$DATE.md"
|
|
[ -f "$FILE" ] && FILE="$PROJECTS_DIR/$SLUG/reports/$BRANCH-test-outcome-$DATE-$(date +%H%M).md"
|
|
```
|
|
|
|
Write to the file path resolved above. Include YAML frontmatter:
|
|
```yaml
|
|
---
|
|
type: test-outcome
|
|
branch: {branch}
|
|
date: {YYYY-MM-DD}
|
|
skill: qa-only
|
|
---
|
|
```
|
|
|
|
After writing, register in manifest:
|
|
```bash
|
|
~/.claude/skills/gstack/bin/gstack-manifest-append test-outcome "reports/$(basename "$FILE")" qa-only "$BRANCH"
|
|
```
|
|
|
|
**Screenshot upload:** After compiling the report, upload all screenshots:
|
|
```bash
|
|
for img in .gstack/qa-reports/screenshots/*.png; do
|
|
[ -f "$img" ] && ~/.claude/skills/gstack/bin/gstack-upload "$img" 2>/dev/null
|
|
done
|
|
```
|
|
If upload succeeds, update the report to use hosted URLs. If it fails, keep local paths and append: `(screenshot not uploaded — run gstack sync to share)`
|
|
|
|
### Output Structure
|
|
|
|
```
|
|
.gstack/qa-reports/
|
|
├── qa-report-{domain}-{YYYY-MM-DD}.md # Structured report
|
|
├── screenshots/
|
|
│ ├── initial.png # Landing page annotated screenshot
|
|
│ ├── issue-001-step-1.png # Per-issue evidence
|
|
│ ├── issue-001-result.png
|
|
│ └── ...
|
|
└── baseline.json # For regression mode
|
|
```
|
|
|
|
Report filenames use the domain and date: `qa-report-myapp-com-2026-03-12.md`
|
|
|
|
---
|
|
|
|
## Additional Rules (qa-only specific)
|
|
|
|
11. **Never fix bugs.** Find and document only. Do not read source code, edit files, or suggest fixes in the report. Your job is to report what's broken, not to fix it. Use `/qa` for the test-fix-verify loop.
|
|
12. **No test framework detected?** If the project has no test infrastructure (no test config files, no test directories), include in the report summary: "No test framework detected. Run `/qa` to bootstrap one and enable regression test generation."
|