Traduit automatiquement de l’anglais.

Lire en anglais
Proxy Mail QA

Tester les e-mails d’inscription dans Cypress

Pour tester la vérification d’e-mail dans Cypress, enregistrez quelques tâches qui créent une nouvelle adresse et attendent son e-mail, puis appelez-les depuis votre spec : inscription, attente du lien ou du code, fin du parcours. Les tâches s’exécutent dans Node, donc le paquet proxymail-qa y fonctionne comme partout. Cela fonctionne avec le forfait Free, en local et dans CI.

Mis à jour le

Configuration

Installez le paquet proxymail-qa et placez une clé d’API dans PROXYMAIL_QA_API_KEY dans l’environnement où s’exécute Cypress. Le forfait Free suffit.

npm install --save-dev proxymail-qa

Enregistrer les tâches

cypress.config.ts
import { defineConfig } from 'cypress';
import { ProxyMailQA } from 'proxymail-qa';
export default defineConfig({
e2e: {
setupNodeEvents(on) {
const qa = new ProxyMailQA(); // reads PROXYMAIL_QA_API_KEY
on('task', {
createAddress: () => qa.createAddress({ persona: true }),
waitForLink: ({ address, since }: { address: string; since: string }) => qa.waitForLink(address, { type: 'verify', since }),
waitForCode: ({ address, since }: { address: string; since: string }) => qa.waitForCode(address, { since }),
deleteAddress: (address: string) => qa.deleteAddress(address).then(() => null),
});
},
},
});

Le test

cypress/e2e/signup.cy.js
it('verifies the email', () => {
cy.task('createAddress').then(({ address }) => {
const since = new Date().toISOString();
cy.visit('/signup');
cy.get('[name=email]').type(address);
cy.contains('Sign up').click();
cy.task('waitForLink', { address, since }, { timeout: 35000 }).then(({ value }) => cy.visit(value));
cy.task('deleteAddress', address);
});
});

Pour un code, appelez la tâche waitForCode de la même façon et saisissez son value dans le formulaire. since fait ignorer à l’attente tout ce qui a été envoyé avant la soumission du formulaire, pour qu’un test relancé ne lise jamais un ancien e-mail. Adaptez les sélecteurs et les routes à votre application.

Vérifier l’e-mail, pas seulement le lien

Ajoutez des tâches pour les vérifications voulues, par exemple un seul e-mail de vérification au lieu de deux, ou un lien qui mène au staging :

countEmails: ({ address, since }: { address: string; since: string }) => qa.countEmails(address, { since, type: 'link' }),
checkEmail: ({ address, since }: { address: string; since: string }) => qa.checkEmail(address, { since, type: 'link', expectHost: 'staging.example.com' }),

checkEmail renvoie des verdicts sur SPF, DKIM et DMARC, les liens vers localhost ou en http simple, la destination du lien et plus encore, jamais l’e-mail lui-même ; vérifiez que sa liste failed est vide.

L’exécuter dans CI

Stockez la clé comme secret CI nommé PROXYMAIL_QA_API_KEY. Dans GitHub Actions, l’action Proxy Mail QA publie aussi sur la pull request un rapport des e-mails de l’exécution : lesquels sont arrivés, en combien de temps, et lesquels ne sont jamais venus.

.github/workflows/e2e.yml
- uses: aaquib90/proxymail-qa-action@v1
with:
api-key: ${{ secrets.PROXYMAIL_QA_API_KEY }}
- run: npx cypress run
env:
PROXYMAIL_QA_API_KEY: ${{ secrets.PROXYMAIL_QA_API_KEY }}

Plus d’informations dans la documentation Cypress, le client Node.js et Exécution dans CI.

Essayez-le lors de votre prochain test d’inscription

Offre gratuite, sans carte bancaire. Créez une adresse et regardez arriver le code ou le lien.

Créer un compte gratuitOuvrir l'application

Questions

Pourquoi utiliser cy.task plutôt que cy.request ?

Une attente peut durer jusqu’à 30 secondes pendant que l’e-mail arrive, et le paquet gère les nouvelles tentatives, les filtres temporels et des erreurs claires. Dans une tâche, il s’exécute dans Node avec votre clé d'API, qui n’atteint jamais le navigateur. cy.request fonctionne aussi, via la REST API.

Combien de temps dure une attente ?

Généralement quelques secondes : elle se termine dès l’arrivée de l’e-mail et abandonne après 30. Cypress accorde 60 secondes par défaut à une tâche ; l’exemple fixe 35, pour qu’un e-mail manquant fasse échouer le test plus tôt.

Et si l’e-mail n’arrive jamais ?

La tâche échoue avec un message expliquant pourquoi, pour autant que Proxy Mail QA puisse le savoir : le plus souvent, le fournisseur d’e-mail de l’application est en mode sandbox ou test et n’envoie qu’aux adresses vérifiées. Corrigez l’envoi plutôt que d’attendre plus longtemps.

Vous avez créé votre application avec un outil d’IA ? Choisissez le vôtre

Une question sur cette page ?

Posez votre question dans la langue de votre choix. La documentation peut y répondre tout de suite, ou vous pouvez l'envoyer à l'équipe Proxy Mail QA, qui répond en anglais.

Interroger la documentation