Traducido automáticamente del inglés.

Leer en inglés
Proxy Mail QA

Prueba correos de registro en Cypress

Para probar la verificación de correo en Cypress, registra algunas tareas que creen una dirección nueva y esperen su correo, y luego llámalas desde tu spec: regístrate, espera el enlace o el código y termina el flujo. Las tareas se ejecutan en Node, así que el paquete proxymail-qa funciona ahí como en cualquier otro lugar. Funciona en el plan Free, en local y en CI.

Actualizado el

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-qa

Registra las tareas

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),
});
},
},
});

La prueba

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);
});
});

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.

.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 }}

Más en la documentación de Cypress, el cliente de Node.js y Ejecución en CI.

Úsalo en tu próxima prueba de registro

Plan gratuito, sin tarjeta de crédito. Crea una dirección y mira cómo llega el código o el enlace.

Crear una cuenta gratuitaAbrir la aplicación

Preguntas

¿Por qué usar cy.task en lugar de cy.request?

Una espera puede durar hasta 30 segundos mientras llega el correo, y el paquete se encarga de los reintentos, los filtros de tiempo y los errores claros. En una tarea se ejecuta en Node con tu clave de API, que nunca llega al navegador. cy.request también funciona, contra la REST API.

¿Cuánto tarda una espera?

Normalmente unos segundos: termina en cuanto llega el correo y se rinde a los 30. Cypress permite 60 segundos por tarea de forma predeterminada; el ejemplo pone 35, para que un correo que falta haga fallar la prueba antes.

¿Y si el correo nunca llega?

La tarea falla con un mensaje que explica el motivo hasta donde Proxy Mail QA puede saberlo: lo más habitual es que el proveedor de correo de la app esté en modo sandbox o de prueba y solo envíe a direcciones verificadas. Arregla el lado del envío en lugar de esperar más.

¿Creaste tu app con una herramienta de IA? Elige la tuya

¿Tienes una pregunta sobre esta página?

Pregunta en cualquier idioma. La documentación puede responderte de inmediato, o puedes enviar tu pregunta al equipo de Proxy Mail QA, que responde en inglés.