Documentation / Conception / Guides pratiques / Tester un workflow avec des cas enregistrés

Tester un workflow avec des cas enregistrés

Dans l’éditeur, ouvrez Jeux de test, puis Ajouter un cas. Donnez-lui un nom, renseignez l’événement et les données simulées par port. Le format des données d’un port est celui du sandbox déclaré par son plugin.

Indiquez si l’événement doit déclencher le workflow. Le moteur vérifie son type, le contrat du déclencheur et son filtre. Un événement mal formé fait échouer le cas, même si le filtre devait l’écarter.

Pour un événement retenu, choisissez le statut attendu et les résultats à vérifier. Une assertion comporte un chemin dans le rapport et une opération :

Opération Vérification
equals Égalité complète avec value, objets et listes compris
contains Texte contenu, élément de liste correspondant ou sous-objet
exists Propriété présente, y compris avec la valeur null
absent Propriété absente

Exemples de chemins : nodes.calcul.0.outputs.value, effects.length, effects.0.payload, validations.0.decision, waits.0.outcome. Les indices désignent une observation ou un élément de liste. Les chemins n’exécutent aucune expression.

Appliquer au jeu de test ajoute les modifications du cas au workflow courant. Lancer les tests vérifie ce graphe en arrière-plan. Chaque résultat peut être ouvert pour lire les erreurs et le rapport complet. Après une modification du graphe ou des cas, relancez les tests : le rapport précédent décrit l’instantané testé.

Enregistrez le brouillon pour conserver les cas. Ils sont dans tests.cases du YAML, suivent ses versions et sont restaurés avec lui. Exemple pour un workflow dont le nœud reponse émet l’entier 42 :

tests:
  cases:
    - id: reponse-nominale
      name: Réponse nominale
      event:
        type: workflow.called
        inputs: {}
      expect:
        routed: true
        status: completed
        assertions:
          - path: nodes.reponse.0.outputs.value
            op: equals
            value: 42

Scénarios et isolation

Les propriétés facultatives d’un cas sont seeds (par port), memory (graines de mémoire), validations (décision par identifiant de nœud : accepted, rejected, timeout), signals (charge utile de reprise par nœud d’attente, ou timeout) et at (horloge moteur ISO 8601).

Sans at, l’horloge moteur reprend event.occurredAt si c’est une date valide, sinon le 1er janvier 2026 à minuit UTC. Les attentes sont traversées et enregistrées. L’horloge des comportements propres aux plugins dépend de leur implémentation.

Chaque cas recrée ses ports sandbox et sa mémoire. Aucun dossier ni mémoire de production n’est chargé. Les écritures sont capturées dans effects ; les agents renvoient des valeurs d’exemple, sans appel à un modèle réel. Un port sans sandbox fait échouer les nœuds qui en dépendent. Les lectures terminologiques peuvent consulter le serveur configuré.

Chaque cas dispose de trente secondes pour répondre ; un dépassement est un échec du cas. Une suite accepte jusqu’à cinquante cas, chacun avec un identifiant unique. Une suite vide ne constitue pas une réussite. Les assertions d’un cas dont routed vaut false ne sont pas exécutées, puisque le workflow ne démarre pas.

Voir aussi la simulation ponctuelle et l’assistant IA.

Pour un workflow à plusieurs déclencheurs, sélectionnez l’entrée de chaque cas dans le champ Déclencheur (trigger: <identifiant> dans le YAML). Le filtre, le contrat d’événement et la branche simulée correspondent tous à cette entrée. Un identifiant absent ou inconnu fait échouer le cas.

97 documents1 sectionssource : /docs · généré au build