Guide d'utilisation du Rejeu combiné
Version du document : 20260729
Versions de l'application prises en charge par ce document :
- iOS : >= 3.13
- Android : >= 1.2.0
Le Rejeu combiné (Combo Replay) permet d'orchestrer plusieurs requêtes HTTP/HTTPS en un seul « flux », exécutées automatiquement en série ou en parallèle selon leurs dépendances. Idéal pour les tests d'intégration d'API, les tests de régression et la validation par lot de différentes entrées pour une même API.

1. Aperçu des fonctionnalités
| Capacité | Description |
|---|---|
| Orchestration multi-requêtes | Sélectionner des requêtes depuis l'historique de capture et les combiner sur un canevas |
| Plusieurs nœuds pour une même API | Ajouter le même endpoint plusieurs fois, chaque nœud ayant ses propres paramètres prédéfinis |
| Dépendances | Contrôler l'ordre d'exécution (ex. : connexion avant les API métier) |
| Injection de dépendances | Transmettre automatiquement les tokens, etc. des réponses amont vers les requêtes aval |
| Injection d'expressions | Générer dynamiquement horodatages, UUID, ou utiliser des variables globales |
| Exécution manuelle | Rejouer en un clic et consulter le détail requête/réponse de chaque nœud |
| Tâches planifiées | Exécution automatique via Cron ou intervalle personnalisé |
2. Démarrage rapide
Étape 1 : Capturer d'abord
Les requêtes du Rejeu combiné proviennent de l'historique de capture. Commencez par capturer un lot de requêtes HTTP/HTTPS dans l'application (les requêtes WebSocket ne peuvent pas être ajoutées).
Étape 2 : Créer une règle
- Ouvrir la liste Rejeu combiné
- Appuyer sur + pour ajouter une règle de rejeu combiné
- Saisir un nom de règle (obligatoire ; par défaut, un nom du type
Combo Replay 260729) - Appuyer sur + en bas à droite pour ajouter des requêtes au canevas
- Sélectionner les requêtes nécessaires dans la liste

Étape 3 : Exécuter
- Enregistrer la règle (✓ en haut à droite de l'éditeur)
- Appuyer sur le nom de la règle dans la liste pour ouvrir la page d'exécution
- Appuyer sur Exécuter le rejeu
Une fois l'exécution terminée, les nœuds affichent leur statut succès/échec ; appuyez sur un nœud pour voir les détails.

3. Gestion des règles
3.1 Informations de la liste
Chaque carte de règle affiche :
- Nom de la règle
- Nombre de nœuds
- Aperçu des chemins (jusqu'à 3)
- Nombre de dépendances et de mappages de paramètres
- Dernière mise à jour
3.2 Créer / Modifier / Supprimer
| Action | Méthode |
|---|---|
| Créer | + dans la barre de navigation de la liste |
| Modifier | Glisser vers la gauche → Modifier |
| Supprimer | Glisser vers la gauche → Supprimer |
| Enregistrer | ✓ en haut à droite de l'éditeur |
Les règles sont stockées localement et seront perdues en cas de désinstallation de l'application ou de suppression des données.

4. Édition des règles combinées
4.1 Ajouter des requêtes
- Appuyer sur le bouton flottant + en bas à droite
- Recherche par URL / Method
- Filtrage par Session, Host, type, code de statut
La même API peut être ajoutée plusieurs fois : par exemple, ajouter 3 nœuds /api/order pour tester un cas normal, une valeur limite et des paramètres invalides.
4.2 Menu du nœud
Appuyer sur un nœud pour ouvrir le menu :
| Menu | Rôle |
|---|---|
| Définir une dépendance | Entrer en mode liaison, puis appuyer sur le nœud cible |
| Paramètres prédéfinis | Modifier Query / Header / Body (modifiable aussi sur la page d'exécution, mais les modifications y sont temporaires) |
| Injection de dépendances | Configurer le mappage réponse amont → requête aval |
| Supprimer | Supprimer le nœud et les dépendances/mappages associés |
Faire glisser les nœuds pour les repositionner ; appuyer sur une zone vide pour désélectionner ou quitter le mode liaison.

5. Paramètres prédéfinis
Utilisés lors de l'édition de la règle pour fixer les données de test de chaque nœud — particulièrement adaptés aux scénarios « même API, entrées différentes ».
5.1 Étapes
- Appuyer sur le nœud → Paramètres prédéfinis
- Modifier Paramètres de requête / En-têtes / Corps
- Une fois terminé, appuyer sur ✓ en haut à droite de la feuille pour enregistrer dans la règle
5.2 Différence avec « Modifier la requête » sur la page d'exécution
| Paramètres prédéfinis (éditeur) | Modifier la requête (page d'exécution) | |
|---|---|---|
| Accès | Menu du nœud → Paramètres prédéfinis | Appuyer sur le nœud sur la page d'exécution |
| Persistance | Enregistré dans la règle, persiste | Cette exécution uniquement, non réécrit |
| Usage | Cas de test fixes | Ajustements temporaires avant relance |
5.3 Exemple : plusieurs scénarios pour une même API
Nœud A : POST /api/login → body : identifiants valides
Nœud B : POST /api/login → body : mot de passe incorrect
Nœud C : POST /api/login → body : mot de passe vide
(3 nœuds sans dépendance → exécution parallèle)
5.4 Prise en charge de l'injection d'expressions
Voir : Section 8, Injection d'expressions

6. Dépendances
6.1 Signification
Une liaison A → B signifie : A dépend de B ; B s'exécute d'abord, A ensuite.
La flèche va du nœud aval (A) vers le nœud amont (B).
6.2 Créer une dépendance
- Appuyer sur le nœud aval → Définir une dépendance
- Un message bleu apparaît en haut : « Appuyez sur le nœud cible pour créer une dépendance »
- Appuyer sur le nœud amont
- Une ligne de liaison apparaît
6.3 Limites
- Impossible de créer deux fois la même dépendance
- Impossible de former une boucle
- Supprimer une liaison supprime aussi les mappages de paramètres associés
6.4 Ordre d'exécution
┌─ Nœud B ─┐
Nœud A ─┤ ├─ Parallèle (même couche)
└─ Nœud C ─┘
↓
Nœud D (s'exécute après le succès de A et C)
- Même couche (sans dépendance mutuelle) : exécution parallèle
- Couches différentes (avec dépendances) : exécution série, la couche suivante ne démarre qu'après le succès complet de la précédente
- Échec dans une couche : tous les nœuds suivants sont marqués ignorés
7. Injection de dépendances (Mappage de paramètres)
Permet de transmettre automatiquement token, userId, etc. depuis les réponses amont vers les requêtes aval.
7.1 Prérequis
Le nœud cible doit avoir au moins une dépendance amont, sinon le message « Aucun nœud amont, créez d'abord une dépendance » s'affiche.
7.2 Configuration
- Appuyer sur le nœud aval → Injection de dépendances
- Appuyer sur Ajouter un mappage et configurer :
| Champ | Description | Exemple |
|---|---|---|
| Nœud source | De quel amont extraire la réponse | Nœud de connexion |
| Extraire de la réponse amont | En-tête / chemin JSON du corps | data.token |
| Injecter dans la requête | En-tête / paramètre de requête / corps | En-tête Authorization |
| Préfixe optionnel | Chaîne ajoutée avant la valeur injectée | Bearer |
- Enregistrer le mappage

7.3 Scénario classique : connexion + requête avec token
[Connexion POST /login] ──→ [Profil GET /user/profile]
│ ↑
réponse : data.token Authorization = Bearer ${token injecté}
- Ajouter les deux requêtes
- Sur
GET /user/profile→ Définir une dépendance → appuyer surPOST /login - Sur
GET /user/profile→ Injection de dépendances :- Source : nœud de connexion, corps
data.token - Cible : en-tête
Authorization - Préfixe :
Bearer
- Source : nœud de connexion, corps
7.4 Ordre de traitement à l'exécution
Paramètres prédéfinis / modification de requête
↓
Injection d'expressions (${method.timestamp()}, etc.)
↓
Injection de dépendances (mappages)
↓
Envoi de la requête HTTP
8. Injection d'expressions
Écrire des expressions ${...} dans les en-têtes, paramètres de requête ou corps ; elles sont remplacées à l'exécution.
8.1 Méthodes intégrées
| Expression | Résultat |
|---|---|
${method.timestamp()} | Horodatage actuel (millisecondes) |
${method.uuid()} | UUID (minuscules) |
${method.date()} | Date, ex. 2026-07-29 |
${method.time()} | Heure, ex. 14:30:00 |
${method.datetime()} | Date et heure, ex. 2026-07-29 14:30:00 |
Exemple :
{
"requestId": "${method.uuid()}",
"timestamp": "${method.timestamp()}",
"date": "${method.date()}"
}
8.2 Variables globales
Les expressions ${token}, ${appId}, etc. (ne commençant pas par method.) sont des variables globales.
Configuration (page d'exécution) :
- Un nœud de la règle utilise une expression
${variableName} - Un bouton 🌐 apparaît à droite de la barre d'état
- Appuyer dessus et renseigner les valeurs
- Après enregistrement, persistées avec la règle (supprimées avec la règle)
Les paramètres prédéfinis et « Modifier la requête » supportent la syntaxe d'expressions ; le remplacement a lieu au moment où vous appuyez sur « Exécuter le rejeu ».
8.3 Exemple combiné
Header: X-Request-Id: ${method.uuid()}
Query: ts=${method.timestamp()}
Body: {"token": "${token}", "userId": "123"}
Renseignez token via 🌐 avant l'exécution.

9. Page d'exécution
9.1 Interface

9.2 Avant l'exécution
- Appuyer sur un nœud → Modifier la requête (cette exécution uniquement, non enregistré dans la règle)
- Si des expressions globales existent → appuyer sur 🌐 pour renseigner les valeurs
9.3 Après l'exécution
- Appuyer sur un nœud → Détails d'exécution (requête réellement envoyée, réponse, durée, erreurs)
- Réinitialiser dans la barre de navigation (rouge) : effacer tous les résultats et relancer
9.4 Statut des nœuds
| Statut | Signification |
|---|---|
| Cercle gris | En attente |
| Progression bleue | En cours |
| ✓ vert | Succès (HTTP 2xx) |
| ✗ rouge | Échec |
| − orange | Ignoré (échec amont) |
9.5 Critère de succès
Les codes HTTP 200–299 sont considérés comme succès ; les autres comme échec.
10. Guide des scénarios types
Scénario 1 : Tester en parallèle plusieurs entrées pour une même API
POST /api/order nœud1 body: {"type":"normal"}
POST /api/order nœud2 body: {"type":"edge"}
POST /api/order nœud3 body: {"type":"invalid"}
- Sans dépendance → les 3 nœuds s'exécutent en parallèle
- Définir des body différents via Paramètres prédéfinis par nœud
- Comparer les résultats après exécution
Scénario 2 : Chaîne de connexion
POST /login → GET /user → POST /order
│ ↑ ↑
└──── token injecté dans Authorization ─┘
- Dépendances :
GET /userdépend dePOST /login;POST /orderdépend deGET /user - Configurer le mappage du token sur
GET /useretPOST /order - Exécution série : connexion → profil utilisateur → commande
Scénario 3 : Paramètres dynamiques + token fixe
- Body :
{"ts":"${method.timestamp()}","id":"${method.uuid()}"} - Header :
Authorization: Bearer ${token} - Renseigner
tokenvia 🌐 avant l'exécution - Horodatage et UUID se mettent à jour à chaque exécution
11. FAQ
Q : J'ai ajouté des requêtes mais la page d'exécution est vide ?
R : Enregistrez la règle avec ✓ dans l'éditeur, puis ouvrez la page d'exécution depuis la liste.
Q : J'ai modifié les paramètres prédéfinis mais la page d'exécution n'a pas changé ?
R : Vérifiez que la règle a bien été enregistrée ; « Modifier la requête » n'affecte que l'exécution en cours.
Q : L'injection de dépendances ne fonctionne pas ?
R : Vérifiez : ① les dépendances existent ; ② le chemin JSON correspond à la réponse exemple ; ③ le nœud amont a réussi ; ④ l'injection d'expressions précède l'injection de dépendances.
Q : Les variables globales sont remplacées par du vide ?
R : Renseignez les valeurs via 🌐 sur la page d'exécution et enregistrez ; les variables non renseignées deviennent des chaînes vides.
Q : Pourquoi certains nœuds sont ignorés ?
R : En cas d'échec d'un nœud de la même couche ou amont, tous les nœuds des couches suivantes sont marqués ignorés.
Q : Peut-on ajouter des requêtes WebSocket ?
R : Non, seules les requêtes HTTP/HTTPS standard sont prises en charge.
12. Aide-mémoire
| Je veux… | Comment faire |
|---|---|
| Créer une règle | Liste + → nom → ajouter requêtes → ✓ |
| Tester une même API avec plusieurs entrées | Ajouter plusieurs fois la requête → Paramètres prédéfinis par nœud |
| Contrôler l'ordre | Définir une dépendance → appuyer sur le nœud amont |
| Transmettre automatiquement un token | Mappage via Injection de dépendances |
| Horodatage/UUID dynamiques | Écrire ${method.timestamp()}, etc. dans les paramètres |
| Partager token, etc. | Écrire ${token} → renseigner via 🌐 sur la page d'exécution |
| Modifier temporairement avant relance | Page d'exécution → nœud → Modifier la requête |
| Voir le détail d'une requête | Appuyer sur le nœud après exécution |
| Relancer | Réinitialiser → Exécuter le rejeu |