Ce skill orchestre la phase Testeur QA en 5 phases : analyse des user stories existantes, transformation en tests YAML exécutables, audit pré-déploiement via reverse-prompt (6 angles d'attaque), exécution parallèle avec Agent Teams (1 browser-qa-agent par story), et rapport agrégé avec screenshots. Le lead coordonne les agents QA, ne teste jamais directement. Use when l'utilisateur veut tester l'application, lancer les tests QA, exécuter les user stories, ou auditer le code avant déploiement.
Orchestrer la phase de test QA en créant une équipe d'agents browser-qa-agent qui exécutent les user stories en parallèle via Playwright CLI. Le lead coordonne les agents, transforme les stories en tests exécutables, et ne teste jamais directement.
Annoncer au démarrage :
<HARD-GATE> Ne pas transformer les stories sans validation explicite du périmètre. </HARD-GATE> <HARD-GATE> Ne pas lancer l'exécution sans validation des tests YAML générés. </HARD-GATE> <HARD-GATE> Ne pas terminer sans validation explicite du rapport final. </HARD-GATE>Je lance le pipeline Testeur QA en 5 phases :
Phase Action Livrable 1 Analyse Inventaire des flux testables 2 Transformation Tests YAML exécutables 3 Reverse Prompt Audit 6 angles d'attaque 4 Exécution 1 agent QA par story (parallèle) 5 Rapport Synthèse pass/fail + screenshots Protocole : Agent Teams avec browser-qa-agent Fan-Out (stories parallèles → rapport agrégé)
Vérifier qu'au moins ces documents existent :
docs/ (générées par le Chef de Projet)docs/features.json (tracker de features avec critères d'acceptation)docs/architecture-api.mdSi des documents manquent, proposer via AskUserQuestion :
references/template-test-story.yaml — Format YAML cible pour les tests exécutables (structure stories, exemples de workflows)Lire le template avant de transformer les user stories.
Localiser les documents sources :
docs/ (format markdown)docs/features.json pour les critères d'acceptationdocs/architecture-api.md pour les endpoints testablesDESIGN.md si présent (flux UI à valider)Inventorier les flux testables :
Estimer le périmètre :
Valider via AskUserQuestion :
Lire references/template-test-story.yaml pour le format cible
Pour chaque user story, générer un fichier YAML :
name : nom descriptif de la storyurl : URL de test dérivée de l'architecture APIworkflow : étapes séquentielles en format impératifFormat des étapes :
Navigate to <url>
Verify <assertion visible>
Fill in <field> with "<value>"
Click <element>
Verify <résultat attendu>
Sauvegarder les fichiers YAML dans ai_review/user_stories/
auth.yaml, contrat.yaml, remboursements.yaml)Ajouter les edge cases depuis les user stories originales comme stories supplémentaires dans les fichiers YAML
Valider via AskUserQuestion :
Invoquer le skill reverse-prompt via le tool Skill :
Skill("reverse-prompt")
Le skill reverse-prompt analyse le code sous 6 angles :
Collecter le rapport d'audit
Valider via AskUserQuestion :
Proposer via AskUserQuestion :
Si headed est choisi, ajouter --headed aux instructions Playwright de chaque agent QA dans leur prompt (étape 5 ci-dessous).
Générer le RUN_DIR :
RUN_DIR="screenshots/browser-qa/$(date +%Y%m%d_%H%M%S)_$(uuidgen | tr '[:upper:]' '[:lower:]' | head -c 6)"
mkdir -p "$RUN_DIR"
Découvrir les stories :
ai_review/user_stories/*.yamlstoriesCréer l'équipe :
Teammate.spawnTeam("qa-team", description="Équipe QA — validation parallèle des user stories")
Créer les tâches :
TaskCreate par story YAMLSpawner les agents — lancer TOUS les agents dans un seul message pour parallélisme maximal :
Pour chaque story :
Task(
subagent_type="browser-qa-agent",
team_name="qa-team",
name="qa-<story-slug>",
prompt="""
Exécuter cette user story et rapporter les résultats :
**Story:** {story.name}
**URL:** {story.url}
**Vision:** false
**Workflow:**
{story.workflow}
Instructions:
- Suivre chaque step du workflow séquentiellement
- Prendre un screenshot après chaque step significatif
- Sauvegarder TOUS les screenshots dans : {SCREENSHOT_PATH}
- Rapporter chaque step comme PASS ou FAIL
- Format final obligatoire :
RESULT: {PASS|FAIL} | Steps: {passed}/{total}
"""
)
Collecter les résultats :
Shutdown :
SendMessage(type="shutdown_request", recipient="qa-<story-slug>")
# Pour chaque agent
Teammate.cleanup()
Compiler et présenter le rapport final :
# Rapport QA — Testeur
**Projet** : [nom du projet]
**Date** : [date et heure]
**Équipe** : qa-team ({N} agents parallèles)
## Résumé
**Stories:** {total} total | {passed} passed | {failed} failed
**Status:** ALL PASSED | PARTIAL FAILURE | ALL FAILED
## Résultats
| # | Story | Source File | Status | Steps |
| --- | ------------ | ----------- | ------ | ---------------- |
| 1 | {story name} | {filename} | PASS | {passed}/{total} |
| 2 | {story name} | {filename} | FAIL | {passed}/{total} |
## Échecs
(Section incluse uniquement en cas d'échecs)
### Story : {nom de la story échouée}
**Source :** {filename}
**Rapport de l'agent :**
{rapport complet de l'agent pour cette story}
## Audit Reverse Prompt
**Findings critiques :** {nombre}
**Findings hauts :** {nombre}
(Résumé des findings les plus importants)
## Screenshots
Tous les screenshots sauvegardés dans : `{RUN_DIR}/`
## Prochaine étape
[Action choisie par l'utilisateur]
Valider via AskUserQuestion :
Après validation du rapport, proposer via AskUserQuestion :
Si commit accepté :
git add des fichiers produits : ai_review/, screenshots/, docs/ (si reverse-prompt)git commit -m "test: rapports QA, audit reverse-prompt, tests E2E"git push si option choisieTeammate.spawnTeam + Task avec team_name pour la coordination