Skip to content
Facteur
FRGet started

Migration

Change provider without rewriting your tests

The real cost of switching testing tools is not the subscription: it is the day spent rewriting assertions that already worked. Here three lines per file change, and the shape of the test stays yours.

Before, with MailosaurTypeScript
// The Mailosaur client, and the code dug out of the body.
const mailosaur = new MailosaurClient(
  process.env.MAILOSAUR_API_KEY,
);

const message = await mailosaur.messages.get(
  serverId,
  { sentTo: address },
);

expect(message.html.codes[0].value).toBe('265279');
After, with FacteurTypeScript
// Three lines change. The shape of the test does not.
import { Facteur } from '@facteur-eu/sdk';

const facteur = new Facteur({ apiKey: process.env.FACTEUR_API_KEY });

const message = await facteur.messages.waitFor({
  sentTo: address,
});

expect(message.otp).toBe('265279');

What makes a team move

Volume stops being counted per day

Their plans include a volume of emails per day: a suite that runs hard on release night hits the daily ceiling even when the month is quiet. Here the volume is monthly, and overage is bought as packs valid for a year.

SMS lands in the same tool

There, SMS is a module billed on top. Here, the text message arrives in the same inbox and is read with the same call as the email.

Per-inbox quotas, with their alerts

A ceiling per inbox and an alert threshold: a runaway test stops on its own quota instead of consuming the whole organisation’s capacity. It is the one step of the migration the old tool did not allow.

The code arrives already extracted

Our library returns the one-time code, the links and the codes as fields of the message: what your tests fished out with a regular expression is already done on reception, so the assertion gets shorter.

How to do it

Five steps, none irreversible

The first test moves in ten minutes, and it tells you whether the whole suite will move.

  1. 1

    Create an account and an inbox

    The free plan is enough to validate the migration. Note the inbox identifier: it plays the role of the “server ID”.

  2. 2

    Move a single test

    Install our library, replace the client and the call that waits for the message, then run that test: if it passes, your suite will pass. That is the moment of truth and it costs ten minutes.

  3. 3

    Run the full suite in parallel

    Keep the old provider alongside for a week, long enough to compare pass rates. We are not asking you to cancel before you are convinced.

  4. 4

    Set your quotas and alerts

    This is the step the old tool did not allow. A limit per inbox, alert thresholds, and the team’s Slack channel.

  5. 5

    Take the other files at your own pace

    File by file, from the flakiest to the calmest. Nothing says finish this week: the two tools live side by side as long as you want.

Mapping

API endpoint conversion table

Where each of your current calls lands, if you call the API directly rather than through a library. The rows marked “coming” are not open yet: we would rather say so here than let you find out mid-migration.

At MailosaurAt FacteurNote
GET /api/serversGET /v1/inboxesA Mailosaur “server” is an “inbox” here. The vocabulary changes, the semantics do not.
POST /api/messages/searchPOST /v1/messages/searchSame criteria, the same ALL / ANY matching logic, with the blocking wait on top.
GET /api/messages/:idGET /v1/messages/:idCompatible response structure, enriched with otp, links, codes and extract.
GET /api/files/attachments/:idGET /v1/attachments/:idIdentical binary download.
GET /api/files/email/:idGET /v1/messages/:id/emlcoming.eml export.
GET /api/analysis/deliverability/:idGET /v1/messages/:id/analysiscomingSPF, DKIM, DMARC and spam score. Neither the endpoint nor the plan that will carry it is settled.
POST /api/devices/otpPOST /v1/authenticator/otpcomingTOTP code generation from a shared secret.
GET /api/usage/limitsGET /v1/usagecomingEnriched: breakdown per inbox, remaining credits and expiry date.

What has no equivalent here

Rendering previews across mail clients, the visual editor and automatic rules have no equivalent here, and will not: it is not the same product. If your suite depends on them, write to us at hello@facteur.eu: we will tell you honestly whether migrating makes sense today or not.

Frequently asked

Do the tests have to be rewritten to migrate?

No rewrite, but three lines per file: our library’s import, the client construction, and the call that waits for the message. The assertion often gets shorter, because the one-time code arrives already pulled out into a field. The shape of your tests does not move.

What happens to the messages already received at Mailosaur?

They stay there. They are test data: they regenerate on your suite’s next run, and that is what makes the migration light: there is nothing to export, and no DNS to switch.

Is Facteur more cost-effective than Mailosaur?

Yes. Mailosaur enforces strict daily caps that block test suites during release surges. Facteur offers smoothed monthly volume with 1-year rollover capacity packs, including SMS testing and unlimited inboxes from the Team plan at a significantly lower cost.

Why migrate from Mailosaur to Facteur today?

Because the move is measured in files, not weeks: three lines per test, and you can try it on one before deciding. You gain SMS reception in the same tool, a message ceiling per inbox with its alert, and hosting in France.

Try the migration on a single file

The free plan asks for no card. Two lines to change, and you will know.