Pourquoi un debugger dédié ?
Déboguer une séquence JSON avec des print() dans le code Python sous-jacent est fastidieux et non reproductible. Le Debugger V3 d'AutomationSequence V8 apporte une expérience de débogage visuelle directement dans l'interface de séquence : breakpoints, inspection des variables en temps réel, évaluation d'expressions et reprise à partir d'une action précise.
Un breakpoint dans AutomationSequence V8 est identique à un breakpoint dans un IDE Python — il suspend l'exécution à un point précis et expose l'état complet de la séquence (variables, contexte, historique des actions précédentes).
Interface du Debugger V3
Le Debugger V3 s'active via le bouton 🐛 dans la toolbar ou par Ctrl+Shift+D. Il ajoute trois panneaux à l'interface principale :
- Gouttière de breakpoints — à gauche de chaque action, un cercle cliquable pour poser/retirer un breakpoint.
- Variable Inspector — panneau latéral droit affichant toutes les variables courantes avec leur type et valeur.
- Console d'évaluation — zone de saisie pour évaluer des expressions Python dans le contexte de la séquence suspendue.
Breakpoints simples
# Dans la séquence JSON — breakpoint déclaratif
{
"type": "oracle_query",
"query": "SELECT * FROM sejours WHERE mois = :m",
"bind": {"m": "{{date_YYYYMM}}"},
"output_var": "sejours",
"_breakpoint": true // ← pose un breakpoint sur cette action
}
Quand la séquence atteint ce breakpoint, elle se suspend. La toolbar affiche les contrôles de débogage : ▶ Continuer, ⏭ Passer à l'action suivante, ⏹ Arrêter.
Breakpoints conditionnels
Un breakpoint conditionnel ne suspend l'exécution que si l'expression est vraie — utile pour déboguer un problème qui n'apparaît que pour certaines valeurs :
{
"type": "file_write_csv",
"data": "{{sejours}}",
"_breakpoint": {
"condition": "len(sejours) == 0",
"message": "Aucun séjour pour ce mois — vérifier la requête"
}
}
// Se suspend uniquement si la requête renvoie 0 lignes
Les conditions peuvent utiliser n'importe quelle variable de la séquence et n'importe quelle expression Python :
# Exemples de conditions de breakpoint
"len({{data}}) > 1000" # plus de 1000 lignes
"'ERROR' in str({{last_result}})" # résultat contient ERROR
"{{elapsed_ms}} > 5000" # action trop lente
"{{retry_count}} >= 2" # deuxième retry ou plus
Variable Inspector
Quand la séquence est suspendue, le Variable Inspector affiche toutes les variables avec leur type, taille et valeur (tronquée pour les grands datasets) :
# Affichage du Variable Inspector (panneau V3)
┌─────────────────────────────────────────────────────┐
│ VARIABLES [Filtrer] │
├──────────────────┬───────┬─────────────────────────┤
│ Nom │ Type │ Valeur │
├──────────────────┼───────┼─────────────────────────┤
│ date_YYYYMM │ str │ "202610" │
│ sejours │ list │ [1420 éléments] │
│ oracle_conn │ conn │ <cx_Oracle.Connection> │
│ last_exit_code │ int │ 0 │
│ elapsed_ms │ float │ 142.3 │
└──────────────────┴───────┴─────────────────────────┘
Watch List
La Watch List permet de suivre des expressions spécifiques qui se recalculent à chaque étape :
# Expressions ajoutées à la Watch List
len(sejours) # → 1420
sejours[0]['service'] if sejours else None # → 'Cardiologie'
sum(s['duree'] for s in sejours) # → 8742
Démarrer depuis l'action N
Une des fonctionnalités les plus utiles : reprendre l'exécution depuis une action spécifique en chargeant un état de contexte sauvegardé :
# Sauvegarder l'état du contexte à l'action 5
# Clic droit sur l'action → "Sauvegarder le contexte ici"
# → fichier context_action5.asctx (chiffré)
# Reprendre depuis l'action 5 sans tout réexécuter
automation-sequence run ma_sequence.json --start-from 5 --load-context context_action5.asctx
Particulièrement utile pour les séquences longues (30+ actions) où les premières actions font des appels réseau ou des requêtes lourdes : on sauvegarde le contexte après ces étapes coûteuses et on débogue les étapes suivantes sans les réexécuter.
Conclusion
Le Debugger V3 transforme le débogage de séquences complexes : breakpoints conditionnels pour les cas edge, Variable Inspector pour l'inspection d'état, Watch List pour le suivi d'expressions, et reprise depuis l'action N pour économiser du temps sur les séquences longues. La courbe d'apprentissage est nulle si vous avez déjà utilisé un debugger IDE classique.