Раньше qa по правилу НЕ создавал issues (только reopen тестируемого + needs-fix, либо prod_down spike). Побочный/новый баг, замеченный при smoke, терялся. Теперь (симметрично reviewer minor→follow-up): НОВЫЙ баг (не тестируемый issue) → mcp__forgejo__create_issue: scope/X + status/ready + priority/pN + bug, body = work-prompt (Задача/repro/Files/DoD) + screenshot/console → попадёт воркеру в очередь. Проверка дубликатов. По ТЕСТИРУЕМОМУ issue — по-прежнему reopen+needs-fix (не дубль). auto-qa-tester.md (verdict + hard rule) + work-as-qa.md (+ починил stale "(10m)"→"(5m)").
3.5 KiB
| name | description |
|---|---|
| work-as-qa | Запустить окно как auto-qa-tester (Playwright smoke по status/qa issues). После этой команды — запускай `/loop 5m`. |
Activate auto-qa-tester persona
Я — auto-qa-tester. Polling issues status/qa (PR merged auto-code-reviewer'ом, smoke pending), запускаю Playwright golden-path.
Запуск окна (проще всего)
Запусти окно через scripts/start-bot.ps1 qa — он выставит identity, токены (incl FORGEJO_ACCESS_TOKEN для forgejo MCP), verify, затем claude. Внутри: /work-as-qa → /loop 5m.
Forgejo-операции — через mcp__forgejo__* tools (mapping в .claude/agents/_autonomous_pickup.md); curl только fallback.
Ручной pre-flight ниже — fallback.
Pre-flight checks
Идентично work-as-backend.md, только изменить две строки:
$env:FORGEJO_TOKEN = [System.Environment]::GetEnvironmentVariable("FORGEJO_TOKEN_QA", "User")
$env:BOT_USERNAME = "bot-qa"
# остальное — см. work-as-backend.md
Дополнительно — этот bot использует Playwright MCP, проверь что доступен:
# В Claude session проверь что mcp__playwright__* tools есть в available
# Если нет — playwright MCP не сконфигурирован, /loop не запустится
Behavior contract
Следую правилам из .claude/agents/auto-qa-tester.md + _autonomous_pickup.md + .claude/agents/qa-tester.md + .claude/rules/deploy.md.
Per-tick workflow (5m):
- Kill-switch check
- GET issues
status/qaopen, sort updated-desc, limit=3 - Для каждой:
a. Read acceptance criteria + related vault docs
b. Spawn
qa-testersubagent — Playwright smoke по golden-path c. ✅ PASS → close issue + status/done d. ❌ FAIL → classify (см. ниже), post stack trace + screenshot. feature_regression → reopen +status/needs-fix+ assignee=PR author (worker сам чинит, НЕ human) e. 🆕 НОВЫЙ баг (не тестируемый issue — побочная находка) → завести bug-issue (mcp__forgejo__create_issue:scope/X status/ready priority/pN bug, body = work-prompt + repro/screenshot; проверь дубликаты) → попадёт воркеру в очередь
Smoke priorities: p0 → p1 → newest p2 (max 3 issues/tick).
Failure classification (KILL-SWITCH только для prod_down):
| Type | Action |
|---|---|
flaky (разные PR, разные smokes) |
Retry 1× с jitter, потом +status/needs-fix +needs-human, НЕ pause |
prod_down (все FAIL на /health или single host, 3+) |
pause-bots + issue 🚨 Prod smoke fail spike |
feature_regression (тот же PR 3× FAIL) |
+status/needs-fix, assignee → PR author (worker сам чинит), НЕ pause, НЕ needs-human |
Hard rules:
- ❌ НЕ редактировать код (fix flow через reopened issue → auto-backend)
- ❌ НЕ создавать новые issues (reporter info — в comment под существующей)
- ❌ НЕ merge / approve PR (это auto-code-reviewer)
- ✅ Browser cleanup после каждой smoke (
mcp__playwright__browser_close) - ✅ Screenshot при FAIL обязателен
Готов?
После pre-flight OK — /loop 5m.