Changez de fournisseur sans réécrire vos tests
Le coût réel d'un changement d'outil de test n'est pas l'abonnement : c'est la journée passée à réécrire des assertions qui marchaient. Ici, quelques lignes par fichier changent, et la forme du test reste la vôtre.
Le même test, avec Mailosaur puis avec Facteur
Les deux attendent le message. L'identifiant de l'inbox remplace le serverId, et le code se lit dans un champ du message.
// Le client Mailosaur, et le code cherché dans le corps.
const MailosaurClient = require('mailosaur');
const mailosaur = new MailosaurClient(process.env.MAILOSAUR_API_KEY);
// Attend le premier message qui correspond, 10 secondes par défaut.
const message = await mailosaur.messages.get(serverId, {
sentTo: address,
});
const code = message.html.codes[0].value;
// Aucun paquet Facteur à installer : un appel HTTP qui attend.
const search = new URLSearchParams({
inbox: 'j3k9x2mq',
sentTo: address,
wait: '30000',
});
const response = await fetch('https://api.facteur.eu/v1/messages?' + search, {
headers: { authorization: 'Bearer ' + process.env.FACTEUR_API_KEY },
});
const { messages } = await response.json();
// Le code est déjà extrait, dans un champ à part.
const code = messages[0].otp;
Quatre différences, chacune vérifiable
Ce qui est écrit ici sur Mailosaur vient des sources en bas de page.
Le volume ne se compte pas par jour
Les offres Personal et Core de Mailosaur annoncent leur volume sur la base d'une limite par jour. Chez Facteur, le volume inclus se compte sur la période de facturation ; seul le dépassement est borné par jour.
Le SMS prévu dans le même outil
Chez Mailosaur, le SMS est affiché à part sur l'offre Core. Chez Facteur, une inbox SMS se lit avec le même appel qu'une inbox e-mail, mais le raccordement à l'opérateur n'est pas encore en service.
Un plafond par inbox, avec ses alertes
Sur les offres payantes, un plafond par inbox et des seuils d'alerte par e-mail : un test parti en boucle s'arrête sur son propre plafond au lieu de consommer le volume de toute l'organisation.
Le code arrive déjà extrait
Le champ otp porte le code le plus probable, codes tous ceux trouvés, links les liens. Ce que vos tests lisaient dans html.codes devient un champ au premier niveau du message.
Cinq étapes, aucune irréversible
-
Étape 01
Créez un compte et une inbox
L'offre gratuite suffit pour valider la migration. Notez l'identifiant de l'inbox : il joue le rôle du serverId.
-
Étape 02
Basculez un seul test
Remplacez le client et l'appel qui attend le message par la recherche de Facteur, puis lancez ce test : s'il passe, votre suite passera.
-
Étape 03
Faites tourner la suite en double
Gardez Mailosaur en parallèle une semaine, le temps de comparer les taux de réussite. Rien ne vous demande de résilier avant d'être convaincu.
-
Étape 04
Posez vos plafonds et vos alertes
Un plafond par inbox et des seuils d'alerte, sur les offres payantes. Les alertes partent par e-mail, dans un salon Slack ou Discord, ou en incident dans PagerDuty ou OpsGenie.
-
Étape 05
Reprenez les autres fichiers à votre rythme
Fichier par fichier, du plus instable au plus calme. Les deux outils cohabitent aussi longtemps que vous le voulez.
Table de conversion des appels de l'API
Où atterrit chacun de vos appels, si vous appelez l'API directement. Les lignes sans équivalent le disent : mieux vaut le lire ici que le découvrir en migrant.
| Chez Mailosaur | Chez Facteur | À savoir |
|---|---|---|
| GET /api/servers source | GET /v1/inboxes | Un server de Mailosaur s'appelle une inbox. Chacune a un identifiant de huit caractères et son propre domaine. |
| POST /api/messages/search source | GET /v1/messages | Les critères sont des paramètres de l'adresse : sentTo, subject, otp, hasOtp et d'autres. match=any les joint par un « ou », et wait fait attendre la recherche, cinq minutes au plus. |
| GET /api/messages/:id source | GET /v1/messages/{messageId} | Le message complet : otp, codes, links, le corps en texte et en HTML, les en-têtes. |
| GET /api/files/attachments/:id source | GET /v1/attachments/{attachmentId} | Le contenu de la pièce jointe. |
| GET /api/files/email/:id source | Pas de route | L'API publique ne sert pas la source brute d'un message. |
| GET /api/analysis/deliverability/:id source | Pas de route | Ni SPF, ni DKIM, ni DMARC, ni note de spam. |
| POST /api/devices/otp source | Pas de route | Le code d'une application d'authentification se calcule dans le test, en vingt lignes de Node : le guide OTP les donne. |
| GET /api/usage/limits source | GET /v1/capacity | Les crédits de l'organisation : le volume de l'offre, les packs, ce qui reste de chacun et sa date d'échéance. |
-
Les aperçus de rendu dans plusieurs clients de messagerie et l'éditeur visuel n'ont pas d'équivalent chez Facteur, et n'en auront pas : ce n'est pas le même produit.
-
Le guide de migration du portail des développeurs reprend ces appels avec leurs détails : l'en-tête d'authentification, la forme des refus, les états d'un message.
Ce que Mailosaur publie
Chaque ligne est une information que Mailosaur publie. Elle porte l'adresse de la page où nous l'avons lue et la date de lecture. Ce que nous n'avons pas pu vérifier n'y figure pas. Ces pages changent : relisez la source avant de décider.
-
01
La page des tarifs affiche trois offres : Personal à partir de 20 $ par mois et Core à partir de 50 $ par mois, en facturation annuelle, et Enterprise sur devis.
-
02
L'offre Personal annonce 15 000 e-mails reçus par mois, sur la base d'une limite de 500 par jour. L'offre Core annonce 75 000 e-mails reçus par mois, sur la base d'une limite de 2 500 par jour.
-
03
L'offre Personal comprend une boîte de réception, avec un nombre illimité d'adresses e-mail. L'offre Core en comprend plusieurs.
-
04
Sur l'offre Core, la page affiche « SMS et authentification » à partir de 37,50 $ par mois, et les aperçus d'e-mails à partir de 25 $ par mois.
-
05
Le client Node s'installe avec npm install mailosaur et se construit avec new MailosaurClient(clé). Sa méthode messages.get(serverId, { sentTo }) attend le premier e-mail qui correspond, 10 secondes par défaut, un délai que l'option timeout allonge.
-
06
Les codes trouvés dans un message sont dans les tableaux html.codes et text.codes, chacun avec une propriété value.
-
07
La référence de l'API documente GET /api/servers, POST /api/messages/search, GET /api/messages/:id, GET /api/files/attachments/:id, GET /api/files/email/:id (le fichier .eml), GET /api/analysis/deliverability/:id, POST /api/devices/otp et GET /api/usage/limits.
Questions fréquentes
Faut-il réécrire les tests pour migrer ?
Non. Le client et l'appel qui attend le message changent ; l'assertion raccourcit souvent, parce que le code arrive déjà extrait dans un champ. La structure de vos tests ne bouge pas.
Que deviennent les messages déjà reçus chez Mailosaur ?
Ils restent chez Mailosaur. Ce sont des données de test : elles se régénèrent au prochain passage de votre suite. Il n'y a rien à exporter et pas de bascule DNS à planifier.
Une limite par jour, qu'est-ce que ça change ?
Une suite qui tourne fort le soir d'une livraison peut toucher une limite quotidienne même quand le mois est calme. Chez Facteur, le volume inclus est celui de la période ; au-delà, des packs ou un dépassement à l'usage, borné par jour sous votre plafond de dépense. Les prix sont sur la page Tarifs.
Pourquoi essayer dès aujourd'hui ?
Parce que la bascule se mesure en fichiers : vous la tentez sur un seul test avant de décider, et les deux outils cohabitent le temps qu'il faut.
Testez la migration sur un seul fichier
L'offre gratuite ne demande pas de carte bancaire. Un fichier, quelques lignes, et vous saurez.