Comment les développeurs utilisent l'e-mail jetable pour les tests
Tester les fonctionnalités e-mail est fastidieux. Créer le compte Gmail #47, le vérifier, consulter la boîte de réception, capturer l'écran, recommencer pour chaque test.
L'e-mail jetable change la donne : générer l'adresse, tester le flux, fermer l'onglet. Zéro nettoyage, zéro travail manuel.
Le problème des tests
Workflow traditionnel de test d'e-mail :
1. Créer un utilisateur test avec [email protected]
2. Déclencher la réinitialisation du mot de passe
3. Ouvrir Gmail dans un autre onglet
4. Attendre l'e-mail
5. Le trouver parmi 200 autres e-mails de test
6. Test terminé
7. La boîte a maintenant 247 e-mails de test
Problèmes :
- Pollue votre boîte de réception
- Impossible de paralléliser (la même adresse est réutilisée)
- Gmail peut marquer vos e-mails de test comme spam
- Il faut nettoyer manuellement des centaines de comptes de test
Solution : API d'e-mail jetable
Avec tempy.email :
// Créer une boîte aux lettres
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
method: 'POST'
}).then(r => r.json());
// L'utiliser dans votre test
await yourApp.signup({ email: mailbox.email });
// Récupérer les e-mails
const emails = await fetch(
`https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());
console.log(emails[0].subject); // "Vérifiez votre e-mail"
// L'adresse expire automatiquement - zéro nettoyage
Cas d'utilisation réels
1. Tests d'intégration
def test_welcome_email():
# Générer une boîte temporaire
r = requests.post('https://tempy.email/api/v1/mailbox')
email = r.json()['email']
# Créer l'utilisateur
create_user(email=email)
# Vérifier la boîte de réception
time.sleep(2)
emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')
assert "Welcome" in emails.json()[0]['subject']
2. Tests E2E (Cypress/Playwright)
// Générer un e-mail unique par exécution de test
const mailbox = await cy.request('POST', 'https://tempy.email/api/v1/mailbox');
cy.visit('/signup');
cy.get('[name="email"]').type(mailbox.body.email);
cy.get('button').click();
// Attendre l'e-mail de vérification
cy.wait(2000);
cy.request(`https://tempy.email/api/v1/mailbox/${mailbox.body.email}/emails`)
.then((res) => {
const link = extractLink(res.body[0].bodyHtml);
cy.visit(link);
});
3. Tests de charge
Tester 1000 inscriptions en parallèle — chacune avec une adresse unique :
await Promise.all(
Array(1000).fill().map(async () => {
const m = await createMailbox();
await testSignup(m.email);
// Expire automatiquement, pas de nettoyage nécessaire
})
);
4. Vérification de templates d'e-mail
// Envoyer un e-mail de test
await sendEmail({
to: tempAddress,
template: 'order_confirmation',
data: { order: '12345', total: '$99' }
});
// Vérifier que le template s'est rendu correctement
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));
Référence API
Créer une boîte aux lettres :
POST https://tempy.email/api/v1/mailbox
→ { "email": "[email protected]", "expires_at": "..." }
Récupérer les e-mails :
GET https://tempy.email/api/v1/mailbox/{address}/emails
→ [{ "subject": "...", "bodyHtml": "...", ... }]
Prolonger le TTL :
POST https://tempy.email/api/v1/mailbox/{address}/extend
→ Ajoute 5 minutes
Bonnes pratiques
Utiliser des adresses uniques par test :
// Chaque test obtient une boîte fraîche
test('signup', async () => {
const email = await createUniqueEmail();
await testWith(email);
});
Interroger les e-mails périodiquement :
async function pollForEmail(address, timeout = 10000) {
const start = Date.now();
while (Date.now() - start < timeout) {
const emails = await getEmails(address);
if (emails.length > 0) return emails[0];
await sleep(500);
}
throw new Error('E-mail non reçu');
}
Ne pas utiliser d'adresses partagées :
// Mauvais - les e-mails de différents tests se mélangent
const SHARED_EMAIL = '[email protected]';
Gain de temps
Avant : 10 min/test x 100 tests/semaine = 1000 min/semaine = 16,7 heures/semaine
Après : 30 sec/test x 100 tests = 50 min/semaine
Économie : plus de 15 heures par développeur par semaine.
Intégration CI/CD
# .github/workflows/test.yml
name: Email Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test -- email.test.js
env:
TEMP_EMAIL_API: https://tempy.email/api/v1
Pas de clés API. Pas de limites de débit. Ça fonctionne, tout simplement.
Arrêtez de polluer votre boîte de réception. Testez plus intelligemment avec tempy.email.