Configuración
Instala el paquete proxymail-qa y pon una clave de API en PROXYMAIL_QA_API_KEY, en tu shell, en un archivo .env excluido de Git o en los secretos de tu CI. El plan Free es suficiente.
npm install --save-dev proxymail-qaLa prueba
Importa test y expect desde proxymail-qa/playwright: cada prueba recibe un fixture qa, un cliente que además nombra la prueba en cada llamada para el reporte descrito abajo.
import { test, expect } from 'proxymail-qa/playwright';
test('sign-up sends a working code', async ({ page, qa }) => { const { address, password } = await qa.createAddress({ persona: true, password: true }); const submitted = new Date();
await page.goto('/signup'); await page.getByLabel('Email').fill(address); await page.getByLabel('Password').fill(password); await page.getByRole('button', { name: 'Sign up' }).click();
const { value } = await qa.waitForCode(address, { since: submitted }); await page.getByLabel('Code').fill(value); await expect(page).toHaveURL(/welcome/);
await qa.deleteAddress(address);});Para un enlace en lugar de un código:
const { value: link } = await qa.waitForLink(address, { type: 'verify', since: submitted });await page.goto(link);type es verify, magic_signin, invite, reset o any. Ajusta las etiquetas y rutas a tu app en lugar de copiar estas.
Comprueba el correo, no solo el código
Un registro que pasa puede ocultar un correo roto. Estas comprobaciones detectan los casos habituales:
// Exactly one verification email, not two.await new Promise((resolve) => setTimeout(resolve, 10_000)); // time for a duplicateexpect((await qa.countEmails(address, { since: submitted, type: 'link' })).count).toBe(1);
// Its link goes to staging, not localhost or production, and it passes SPF, DKIM and DMARC.const result = await qa.checkEmail(address, { since: submitted, type: 'link', expectHost: 'staging.example.com' });expect(result.failed).toEqual([]);checkEmail también marca correos que no dicen cuándo caduca el código, que quizá no quepan en un teléfono y, con expectText y expectLanguage, frases faltantes o el idioma equivocado. Devuelve veredictos, nunca el correo.
Ejecútalo en CI, con un reporte en el pull request
Agrega la Action de GitHub antes de tus pruebas y el reporter a tu configuración de Playwright. El reporte en el pull request lista qué correos llegaron y con qué rapidez, de qué prueba vino cada uno, y las pruebas que fallaron con el paso que falló.
- uses: aaquib90/proxymail-qa-action@v1 with: api-key: ${{ secrets.PROXYMAIL_QA_API_KEY }} - run: npx playwright test env: PROXYMAIL_QA_API_KEY: ${{ secrets.PROXYMAIL_QA_API_KEY }}export default defineConfig({ reporter: [['list'], ['proxymail-qa/playwright/reporter']],});Cada reporte se compara con las últimas ejecuciones del mismo nombre, así que también indica cuándo los correos se volvieron más lentos, cuándo una prueba ahora recibe dos correos o cuándo una prueba falla de vez en cuando.
Más en la documentación de Playwright, el cliente de Node.js y Ejecución en CI.