PHANTOM
Une tâche web répétitive, décrite en français, devient une automatisation testée, qui détecte ses propres échecs, répare ce qui peut l'être et signale le reste.
Une phrase entre. Une preuve sort.
mission.pyPlan JSON
Étapes + résultats attendus. Une phrase non comprise est refusée, pas devinée.
testgen.pyTests pytest
Un test par résultat attendu, valeurs écrites en clair.
sandbox.pyBac à sable
Sous-processus, sans clés API, 120 s max, réseau localhost.
executor.pyChromium
Playwright exécute, enregistre les sélecteurs et les captures.
repair.pyRéparation
Nouveaux sélecteurs depuis l'instantané HTML de l'échec.
Il répare le comment. Jamais le quoi.
Rien de réussi sans exécution
Statut calculé depuis junit.xml. Si l'automatisation échoue, les attendus finissent « non vérifiables », jamais « réussis ».
Réparation limitée
Seuls les sélecteurs changent : actions, valeurs et attendus sont figés, vérifié par le code. Une correction qui fait baisser le score est rejetée.
Actions destructives
Supprimer, payer, virement, delete, buy… détectées à l'analyse et à l'exécution, sur le texte réel de l'élément avant chaque clic.
Bac à sable
Environnement réduit, délai de 120 s, requêtes hors localhost bloquées, test généré ne contenant que des littéraux.
Sans votre accord, rien n'est exécuté.
La vérification se refait au moment du clic : une réparation qui viserait le mauvais bouton serait arrêtée elle aussi.
Ouvrir /devis.html, puis cliquer sur « Supprimer mon compte ».
Un fantôme honnête.
L'isolation n'est pas un conteneur
Sous-processus aujourd'hui ; un conteneur Docker est prévu, non vérifié sur ce poste.
Réparation heuristique, sans IA
Par similarité de libellés. Prochaine étape : demander un sélecteur à Claude quand l'heuristique échoue, avec les mêmes règles.
Missions lues par motifs de phrases
Une analyse par LLM avec validation stricte du plan JSON est envisagée, avec repli sur les motifs.
39 tests, tous passants (TODO.md, 2026-10-22)
34 unitaires + 5 bout en bout avec un vrai Chromium.