Aller au contenu
Facteur

Tapez au moins deux caractères.

Récupérer le code, les liens et les en-têtes d'un message

Chaque message reçu arrive avec son code à usage unique, ses liens et ses en-têtes déjà extraits, sans rien configurer.

Un test n'a presque jamais besoin du corps d'un email. Il a besoin d'une chose dans le corps : un code à six chiffres, un lien de confirmation, un jeton. Nous l'extrayons à la réception, et vous la lisez dans un champ. Il n'y a rien à configurer.

Les champs que vous obtenez

Champ Ce qu'il porte
otp Le code à usage unique que nous jugeons le plus probable, ou rien
codes Tous les nombres de 4 à 8 chiffres isolés dans le message, le meilleur candidat en premier
links Chaque lien du message, déséchappé, dans l'ordre d'apparition, la partie HTML d'abord
headers Les en-têtes, en minuscules, dans la lecture d'un seul message
textBody / htmlBody Les deux versions du corps, telles qu'envoyées, dans la lecture d'un seul message

Suivre un lien sans le déséchapper vous-même

Un lien écrit dans du HTML porte des entités : & là où l'URL a un &. Un test qui suit un lien encore échappé demande au serveur une URL dont le second paramètre s'appelle amp;next. Il reçoit alors une page qui n'est pas celle qu'il attendait, et aucune erreur ne le signale.

Les liens que l'API renvoie sont déséchappés. Vous pouvez passer message.links[0] directement à page.goto() ou à cy.visit().

Quand otp est vide et codes est rempli

otp est le code qui suit de plus près un mot qui annonce un code (« code », « vérification », « confirmation », « one-time »...), dans les soixante caractères qui le précèdent. Sans mot annonceur, otp n'est renseigné que s'il n'y a qu'un seul candidat.

Quand le message contient plusieurs nombres et aucun mot annonceur, par exemple un numéro de commande et un autre numéro à six chiffres, nous laissons otp vide et nous mettons les candidats dans codes. Deviner lequel est le bon donnerait un test qui passe jusqu'au jour où le numéro de commande change de longueur.

Dans ce cas, désignez la valeur dans un vrai message et laissez la plateforme écrire le motif : c'est le sujet de Pointeurs.

Corréler un message avec l'exécution qui l'a déclenché

Posez un en-tête dans l'email que votre application envoie (X-Test-Id, X-Correlation-Id), et retrouvez-le tel quel :

const message = await api(`/v1/messages/${id}`);
const mine = message.headers['x-test-id'] === executionId;

Lisez la clé en minuscules, toujours. Un en-tête est insensible à la casse sur le fil : comparer la clé telle que vous l'avez envoyée donne un test qui marche jusqu'au jour où votre bibliothèque d'envoi change de capitalisation.

Limites connues

  • Nous ne devinons pas votre format. Un identifiant maison ne ressemble à rien de connu. Utilisez un pointeur, voir Pointeurs.
  • Les codes sont des nombres de 4 à 8 chiffres. Un code qui contient des lettres n'apparaît pas dans codes.
  • Nous ne lisons pas le contenu des pièces jointes. Vous obtenez leur nom, leur taille et leur empreinte, voir Lire depuis vos tests.
  • Rien n'est extrait d'un message refusé. Quand une limite est atteinte, le message est enregistré avec le statut quota_exceeded et n'est pas analysé, voir Quotas et rétention.
  • L'extraction a lieu après l'acquittement SMTP. Un message existe donc pendant quelques millisecondes sans code ni liens. Lisez le champ status avant les champs extraits, voir Lire depuis vos tests.