Configuración
Instala el paquete proxymail-qa y pon una clave de API en PROXYMAIL_QA_API_KEY en el entorno donde se ejecuta Cypress. El plan Free es suficiente.
npm install --save-dev proxymail-qaRegistra las tareas
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), }); }, },});La prueba
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); });});Para un código, llama a la tarea waitForCode de la misma forma y escribe su value en el formulario. since hace que la espera ignore todo lo enviado antes de enviar el formulario, para que una prueba reintentada nunca lea un correo antiguo. Ajusta los selectores y las rutas a tu app.
Revisa el correo, no solo el enlace
Añade tareas para las comprobaciones que quieras, como un solo correo de verificación en lugar de dos, o que el enlace vaya a 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 devuelve veredictos sobre SPF, DKIM y DMARC, enlaces a localhost o a http simple, adónde lleva el enlace y más, nunca el correo en sí; comprueba que su lista failed esté vacía.
Ejecútalo en CI
Guarda la clave como un secreto de CI llamado PROXYMAIL_QA_API_KEY. En GitHub Actions, la acción de Proxy Mail QA también publica en el pull request un informe de los correos de la ejecución: cuáles llegaron, con qué rapidez y cuáles nunca llegaron.
- 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 }}Más en la documentación de Cypress, el cliente de Node.js y Ejecución en CI.