# Tester un code à usage unique et la double authentification dans Playwright

> Un test Playwright qui reçoit le code envoyé par email, et qui calcule celui d’une application d’authentification. Les deux moitiés d’un parcours 2FA.
> https://facteur.eu/tester-un-code-otp-avec-playwright

## Le code arrive par email, ou il se calcule

Un parcours à double authentification bloque une suite de tests à deux endroits : le code envoyé par email, que le test ne peut pas lire, et celui de l’application d’authentification, qu’il ne peut pas générer. Les deux se règlent, et pas de la même façon.

## Le code reçu par email

Même mécanique que pour une inscription : la requête part avant le clic et répond à l’arrivée du message.

### Un critère qui vise le code, pas le texte

Demander « le message qui porte un code » évite de retomber sur un email qui cite un ancien code dans son historique.

### Le code vit dans son propre champ

Six chiffres extraits à la réception. Votre test compare une valeur, il ne cherche pas un motif dans du HTML.

## Le code d’une application d’authentification

Celui-là, personne ne peut vous l’envoyer : il se calcule à partir du secret que votre écran d’activation affiche. Vingt lignes de Node, aucune dépendance, et le téléphone reste dans le tiroir.

## Ce que ça change pour une suite de tests

## L’application qui envoie le code

Les deux tests ci-dessus ont besoin d’une application qui envoie un code, et d’une autre qui affiche un secret partagé. La Belle Étoile fait les deux, ouverte à tout le monde : son inscription envoie un code à six chiffres à l’adresse de votre boîte de test, et son écran de double authentification affiche le secret que le second test transforme en chiffres. Aucun compte à créer, et elle n’écrit qu’à une adresse Facteur, ce qui l’empêche de servir de relais à qui que ce soit.

## Le greffon Playwright, si vous le voulez

Il s’installe en une ligne : npm i -D playwright-facteur. Le test ci-dessus n’attend rien de lui, il appelle l’API directement, et il continuera de fonctionner tel quel.
