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-qaEnregistrer les tâches
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
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.
- 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.