Prototype V1 · automatisation web

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.

Fonctionnement

Une phrase entre. Une preuve sort.

mission.py

Plan JSON

Étapes + résultats attendus. Une phrase non comprise est refusée, pas devinée.

testgen.py

Tests pytest

Un test par résultat attendu, valeurs écrites en clair.

sandbox.py

Bac à sable

Sous-processus, sans clés API, 120 s max, réseau localhost.

executor.py

Chromium

Playwright exécute, enregistre les sélecteurs et les captures.

repair.py

Réparation

Nouveaux sélecteurs depuis l'instantané HTML de l'échec.

↺ boucle bornée : ≤ 5 tentatives, 3 par défaut
junit.xml = seule source de vérité des résultats
Scénario réel du dépôt · « remplir Nom avec Alice Martin… vérifier « formule Pro » »
127.0.0.1 / devis.html
Envoyer la demande
Garde-fous

Il répare le comment. Jamais le quoi.

01

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 ».

02

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.

03

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.

04

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.

Essayez

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 ».
Ce qu'il ne fait pas (encore)

Un fantôme honnête.

01

L'isolation n'est pas un conteneur

Sous-processus aujourd'hui ; un conteneur Docker est prévu, non vérifié sur ce poste.

02

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.

03

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.

Python · Playwright · pytest · SQLite

Une automatisation qui sait quand elle a échoué.