Aller au contenu
Facteur
/ Migration

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.

Avant, après

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.

Avant, avec Mailosaur JavaScript
// 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;
Chaque appel de Mailosaur montré ici vient de sa documentation : la section Sources, plus bas, donne la page et la date de lecture.
Après, avec Facteur TypeScript
// 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;
Facteur ne publie encore aucune bibliothèque : le test appelle l'API en HTTP, et le code arrive déjà extrait dans le champ otp.
Ce qui pousse une équipe à changer

Quatre différences, chacune vérifiable

Ce qui est écrit ici sur Mailosaur vient des sources en bas de page.

01

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.

02

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.

03

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.

04

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.

Marche à suivre

Cinq étapes, aucune irréversible

  1. É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.

  2. É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.

  3. É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.

  4. É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.

  5. É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.

Correspondance

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.

Sources

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.

  1. 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.

    https://mailosaur.com/pricing ·

  2. 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.

    https://mailosaur.com/pricing ·

  3. 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.

    https://mailosaur.com/pricing ·

  4. 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.

    https://mailosaur.com/pricing ·

  5. 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.

    https://mailosaur.com/docs/email-testing/nodejs ·

  6. 06

    Les codes trouvés dans un message sont dans les tableaux html.codes et text.codes, chacun avec une propriété value.

    https://mailosaur.com/docs/test-cases/codes ·

  7. 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.

    https://mailosaur.com/docs/api ·

Questions

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.