Guides
Dépannage
Diagnostiquez les connexions refusées, les emails manquants, les expirations de délai et les lectures croisées entre tests.Les symptômes d’abord : chaque section liste les vérifications dans l’ordre qui résout le plus souvent le problème. Tous les exemples supposent les ports par défaut ; substituez les vôtres si vous les avez changés.
Connexion refusée
Le SDK ou curl n’atteint pas l’API HTTP. Soit le serveur ne tourne pas, soit il a démarré sur un
--api-port personnalisé alors que le client pointe encore vers la valeur par défaut. Confirmez
avec :
curl http://localhost:8025/healthSi vous avez changé --api-port, passez un baseUrl correspondant à InboxTapClient.
Port déjà utilisé
Le démarrage échoue quand un autre processus — souvent un InboxTap oublié — occupe déjà 1025 ou
8025. Trouvez-le avec lsof -i :1025, puis arrêtez-le, ou démarrez InboxTap ailleurs avec
--smtp-port et --api-port. Quand les ports changent, mettez à jour à la fois les réglages SMTP
de l’application et le baseUrl du client. Le serveur programmatique contourne entièrement le
problème avec smtpPort: 0 et apiPort: 0.
Aucun email n'arrive
Vérifiez que l’application testée envoie vers l’hôte et le port qu’InboxTap a liés — un hôte SMTP
de production resté dans un fichier d’environnement est la cause habituelle. L’autre cause
fréquente est un système d’envoi configuré pour l’authentification ou TLS : InboxTap rejette volontairement
AUTH et STARTTLS, configurez donc du SMTP simple non authentifié (pour Nodemailer,
secure: false et pas de bloc auth). Voyez ce qui est réellement arrivé avec une liste non
filtrée :
curl http://localhost:8025/api/emailsLes attentes expirent
Augmentez timeoutMs quand le parcours testé est réellement lent, mais restez à 60000 ou
moins : le serveur plafonne une attente à 60 secondes et rejette les valeurs supérieures avec un
400. L’ordre n’est pas le problème — les méthodes d’attente balaient les messages déjà capturés
avant d’interroger le serveur, il est donc sûr de déclencher l’email d’abord et d’attendre
ensuite. Si l’attente expire encore, vérifiez le filtre : un subject chaîne correspond comme
sous-chaîne insensible à la casse, une expression régulière correspond à son motif, et un filtre
to doit correspondre exactement à l’adresse destinataire.
Les tests lisent les messages des autres
Appelez createInbox() dans chaque test pour que chacun attende sur une adresse destinataire
unique. Une adresse partagée codée en dur fait que les processus parallèles consomment les messages
des autres, et aucun vidage ne corrige cette course. inbox.clear() ne supprime que les messages
de cette boîte, donc le nettoyage par test ne perturbe jamais un processus parallèle.
Les messages disparaissent
Le stockage est une FIFO bornée qui conserve les maxMessages plus récents (par défaut 100).
Une suite parallèle chargée peut évincer un message entre l’envoi et l’assertion. Attendez la
valeur immédiatement avec une méthode d’attente au lieu de lister plus tard, ou augmentez la limite
avec --max-messages.
Message rejeté car trop volumineux
InboxTap répond SMTP 552 pour tout message dépassant maxMessageSize (par défaut 5242880
octets). Les grosses images intégrées sont généralement en cause. Augmentez la limite avec
--max-message-size, ou allégez l’email — les pièces jointes sont de toute façon hors périmètre
pour la v1.4.1.