Aller au contenu
Facteur
/ Intégrations

Le canal, c'est votre framework de test

Sur ce marché, on n'intègre pas une API : on installe un paquet dans son framework. Quatre paquets sont écrits, pour Node, Playwright, Cypress et le premier test. Aucun n'est encore publié sur npm, et cette page montre ce qui marche dès aujourd'hui sans eux.

Aujourd'hui

Une API HTTP, et rien à installer

L'attente se fait côté serveur et l'extraction à la réception : un test appelle la recherche de messages sans rien installer. Voici un parcours de vérification par e-mail complet, en Playwright, sans un seul paquet de Facteur.

inscription.spec.ts TypeScript
import { expect, test } from '@playwright/test';

const INBOX = 'j3k9x2mq';

// Reste ouverte jusqu'à l'arrivée du message, trente secondes au plus.
async function waitForMail(sentTo: string) {
  const search = new URLSearchParams({ inbox: INBOX, sentTo, 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();
  if (!messages[0]) throw new Error('Rien n\'est arrivé pour ' + sentTo);
  return messages[0];
}

test('le lien de vérification active le compte', async ({ page }) => {
  const tag = 'run-' + Date.now();

  // Lancée avant le clic : elle répond dès que le message arrive.
  const arriving = waitForMail('signup+' + tag);

  await page.goto('/signup');
  await page.getByLabel('Email').fill('signup+' + tag + '@' + INBOX + '.inbox.facteur.eu');
  await page.getByRole('button', { name: 'Créer mon compte' }).click();

  const message = await arriving;

  // Le status avant tout champ tiré du corps du message.
  expect(message.status).toBe('parsed');
  await page.goto(message.links[0]);

  await expect(page.getByText('Compte vérifié')).toBeVisible();
});
Le même appel est dans les guides du portail des développeurs, qui le jouent contre le service.
Ce que montre l'exemple

Quatre lignes qui comptent

01

La requête part avant le clic

Elle attend, et répond à l'instant où le message arrive, pas à l'échéance. Lancée après, elle courrait après un message peut-être déjà là.

02

Le sous-adressage sépare les tests

Tout ce qui suit le « + » est à vous. C'est ce qui permet à deux tests de partager une inbox sans se voler leurs messages.

03

On lit status avant tout champ dérivé

Un message accepté existe un instant avant d'être lu : il n'a alors ni sujet, ni code, ni liens. Par défaut, la recherche ne rend que les messages déjà lus, à l'état parsed.

04

La clé se lit dans l'environnement

Jamais écrite dans le test, jamais passée en argument : FACTEUR_API_KEY. Les paquets reprennent la même convention.

Ce que nous préparons

Quatre paquets écrits, aucun publié

Chaque paquet est dans le dépôt de Facteur, avec ses tests. Aucun n'est encore publié sur npm : la publication suivra la mise en service de l'API.

Paquet Nom sur npm État
Une bibliothèque Node minimale Ouvrir une inbox, attendre un message, le lire avec ce qui en a été extrait, télécharger une pièce jointe. Aucune dépendance à l'exécution. @facteur-eu/sdk Écrit, pas encore publié
Un plugin Playwright, pas encore publié Une adresse dérivée du test lui-même : deux tests en parallèle ne lisent jamais le même courrier, et un test rejoué ne relit pas celui de sa première tentative. L'attente s'arrête dans le budget du test, et le message reçu est attaché au rapport. playwright-facteur Écrit, pas encore publié
Un plugin Cypress, pas encore publié Une adresse par test et une commande qui attend le message. La clé reste dans Node, hors du navigateur. cypress-facteur Écrit, pas encore publié
Un initialiseur npm create Deux questions, puis un premier test Playwright ou Cypress qui attend un e-mail et lit son code. create-facteur Écrit, pas encore publié
  • La publication suivra la mise en service de l'API : un paquet installé avant viserait un service qui ne répond pas encore.

  • Les quatre noms existent déjà sur npm, avec des versions qui visent une ancienne API de Facteur. Ne les installez pas : elles ne marchent pas avec le service d'aujourd'hui.

  • En attendant, les guides du portail des développeurs appellent l'API en HTTP. Ils continueront de marcher le jour où les paquets seront publiés.

Rien à installer pour un premier test

Une clé en lecture seule, une inbox, et l'exemple ci-dessus. L'offre gratuite ne demande pas de carte bancaire.