# Migrer vers Facteur sans réécrire vos tests · Facteur

> Changer d'outil de test d'e-mails sans réécrire vos assertions : l'appel qui attend le message change, la forme du test reste. Cinq étapes, aucune irréversible.
> https://facteur.eu/fr/migrer

/ Migration

#  Vos tests gardent leur forme 

 Le coût d'un changement d'outil de test d'e-mails n'est pas l'abonnement : c'est la journée passée à réécrire des assertions qui marchaient. Ici, seules les lignes qui parlent à l'ancien service changent. Votre test attend toujours un message, et affirme toujours quelque chose sur son contenu.

 [ Créer un compte gratuit ](/fr/inscription) [ La marche à suivre ](#steps) 

 

 En bref

## Ce que la migration demande

 

- Quelques lignes par fichier : le client, et l'appel qui attend le message.
- Rien à exporter : des messages de test se régénèrent au prochain passage de la suite.
- Les deux outils en parallèle le temps de comparer, sans rien résilier.
 
 

 Avant, après

## Le même test, chez l'un puis chez l'autre

L'exemple part de Mailosaur. Depuis Mailtrap, MailSlurp, Mailisk ou Mailpit, la forme est la même : la page de chaque outil donne la correspondance.

 

       Avant, avec Mailosaur JavaScript 

 

```
<span class="hl-comment">// Le client Mailosaur, et le code cherché dans le corps.</span>
<span class="hl-keyword">const</span> MailosaurClient = <span class="hl-property">require</span>(<span class="hl-value">'mailosaur'</span>);
<span class="hl-keyword">const</span> mailosaur = <span class="hl-keyword">new</span> <span class="hl-type">MailosaurClient</span>(process.<span class="hl-property">env</span>.<span class="hl-property">MAILOSAUR_API_KEY</span>);

<span class="hl-comment">// Attend le premier message qui correspond, 10 secondes par défaut.</span>
<span class="hl-keyword">const</span> message = <span class="hl-keyword">await</span> mailosaur.<span class="hl-property">messages</span>.<span class="hl-property">get</span>(serverId, {
  <span class="hl-property">sentTo</span>: address,
});

<span class="hl-keyword">const</span> code = message.<span class="hl-property">html</span>.<span class="hl-property">codes</span>[0].<span class="hl-property">value</span>;
```

 Les appels de Mailosaur viennent de sa documentation : la page Migrer depuis Mailosaur donne les sources et leur date de lecture.        Après, avec Facteur TypeScript 

 

```
<span class="hl-comment">// Aucun paquet Facteur à installer : un appel HTTP qui attend.</span>
<span class="hl-keyword">const</span> search = <span class="hl-keyword">new</span> <span class="hl-type">URLSearchParams</span>({
  <span class="hl-property">inbox</span>: <span class="hl-value">'j3k9x2mq'</span>,
  <span class="hl-property">sentTo</span>: address,
  <span class="hl-property">wait</span>: <span class="hl-value">'30000'</span>,
});

<span class="hl-keyword">const</span> response = <span class="hl-keyword">await</span> <span class="hl-property">fetch</span>(<span class="hl-value">'https://api.facteur.eu/v1/messages?'</span> + search, {
  <span class="hl-property">headers</span>: { <span class="hl-property">authorization</span>: <span class="hl-value">'Bearer '</span> + process.<span class="hl-property">env</span>.<span class="hl-property">FACTEUR_API_KEY</span> },
});
<span class="hl-keyword">const</span> { messages } = <span class="hl-keyword">await</span> response.<span class="hl-property">json</span>();

<span class="hl-comment">// Le code est déjà extrait, dans un champ à part.</span>
<span class="hl-keyword">const</span> code = messages[0].<span class="hl-property">otp</span>;
```

 L'assertion raccourcit : le code arrive déjà extrait du message, dans le champ otp, là où il fallait le chercher dans le corps.  

 

 Deux façons

## En HTTP aujourd'hui, avec une bibliothèque plus tard

La bibliothèque fera gagner du confort, pas des capacités : tout ce qu'elle fait, un appel HTTP le fait aussi.

 

- L'appel direct : une requête GET sur /v1/messages avec un paramètre wait en millisecondes, cinq minutes au plus. La réponse arrive quand le message arrive.
- La bibliothèque @facteur-eu/sdk est écrite, avec un appel waitFor qui attend le message, mais elle n'est pas encore publiée sur npm. Elle le sera après la mise en service de l'API.
- Les versions déjà présentes sous ce nom sur npm visent une ancienne API de Facteur : ne les installez pas.
 
 [ Le guide de migration du portail ](https://developers.facteur.eu/fr/guides/migrate-from-mailosaur/) 

 

 Marche à suivre

## Cinq étapes, aucune irréversible

 

1. Étape 01
    
    ### Créez un compte et une inbox
    
    Une inbox est une boîte qui reçoit, que vos tests interrogent par son identifiant. L'offre gratuite suffit pour valider la migration, et ne demande pas de carte bancaire.
2. Étape 02
    
    ### Posez la clé d'API dans votre environnement
    
    Sous le nom FACTEUR\_API\_KEY, à côté de celle de votre outil actuel. Les deux cohabitent : rien ne vous demande de retirer l'ancienne avant d'être convaincu.
3. Étape 03
    
    ### Basculez un seul test
    
    Celui qui vous coûte le plus quand il est instable. Quelques lignes à changer, puis vous le lancez : s'il passe, votre suite passera.
4. Étape 04
    
    ### Faites tourner les deux suites en parallèle
    
    Une semaine, le temps de comparer les taux de réussite sur vos propres tests plutôt que sur une page de vente. C'est aussi ce qui rend le retour en arrière gratuit.
5. Étape 05
    
    ### Posez vos plafonds et vos alertes
    
    Sur les offres payantes, un plafond de messages par inbox, et des seuils qui préviennent par e-mail avant de l'atteindre : un test parti en boucle s'arrête sur sa propre limite au lieu de consommer le volume de toute l'équipe.
 
 

 

 Par outil

## Ce qui est propre à l'outil que vous quittez

Chaque page reprend ce que l'outil publie, sourcé et daté, et la correspondance de ses appels.

 

 [01

### Mailisk

Deux API qui attendent le message : l'adresse change, et le code arrive extrait.

 ](/fr/comparatifs/mailisk) [02

### Mailtrap

Passer d'un bac à sable qui intercepte à une inbox qui reçoit.

 ](/fr/comparatifs/mailtrap) [03

### MailSlurp

Ce que devient une boîte créée puis supprimée à chaque test.

 ](/fr/comparatifs/mailslurp) [04

### Mailpit

Quitter un service local : ce que vous retirez de la chaîne d'intégration.

 ](/fr/comparatifs/mailpit) [05

### Mailosaur

La correspondance des appels de l'API, un par un, et ceux qui n'ont pas d'équivalent.

 ](/fr/migrer-depuis-mailosaur)

 

 

 Limites connues

## Ce que votre outil fait peut-être, et Facteur pas encore

Écrit ici plutôt que découvert au milieu d'une migration. Si votre suite dépend de l'un de ces points, écrivez-nous : nous vous dirons si la migration a du sens aujourd'hui, ou pas.

 

- Le téléchargement du message brut au format .eml n'existe pas dans l'API publique.
- L'analyse de délivrabilité (SPF, DKIM, DMARC, note de spam) n'existe pas.
- Les aperçus de rendu dans plusieurs clients de messagerie et l'éditeur visuel de modèles n'ont pas d'équivalent, et n'en auront pas : ce n'est pas le même produit.
- Les inboxes SMS existent, mais le raccordement à l'opérateur n'est pas en service : aucun SMS réel n'arrive aujourd'hui.
 
 [ Nous écrire avant de migrer ](/fr/nous-ecrire) 

 

 Questions

## Questions fréquentes

 

   Combien de lignes changent, vraiment ? +− Celles qui parlent à l'ancien service : la construction du client et l'appel qui attend le message. L'assertion raccourcit souvent, parce que le code à usage unique arrive déjà extrait dans un champ du message. Ce qui ne change pas, c'est la structure du test.

    Faut-il tout basculer d'un coup ? +− Non, et c'est le seul conseil de cette page. Basculez un test, gardez les deux outils une semaine, comparez sur vos propres suites. Rien dans la migration n'est irréversible avant que vous ne résiliiez l'autre abonnement, et cette décision reste la vôtre.

    Que deviennent les messages déjà reçus chez l'autre service ? +− Ils restent chez lui, et c'est ce qui rend la migration légère : ce sont des messages de test, ils se régénèrent au prochain passage de votre suite. Il n'y a rien à exporter et aucune bascule DNS à planifier.

    Et si mon outil n'est pas dans la liste des cinq ? +− La marche à suivre de cette page ne dépend pas de l'outil que vous quittez : un client, un appel qui attend, une assertion. Écrivez-nous le nom de l'outil et nous vous dirons ce qui se transpose, avant que vous n'ouvriez un compte.

  

 

  

## Basculez un test, pas une suite

L'offre gratuite ne demande pas de carte bancaire. Un fichier, quelques lignes, et vous saurez.

 [ Créer un compte gratuit ](/fr/inscription) [ Voir les tarifs ](/fr/tarifs)
