Einrichtung
Installiere das Paket proxymail-qa und leg einen API-Schlüssel in PROXYMAIL_QA_API_KEY in der Umgebung ab, in der Cypress läuft. Der Free-Plan reicht.
npm install --save-dev proxymail-qaTasks registrieren
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), }); }, },});Der 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); });});Für einen Code rufst du den Task waitForCode genauso auf und tippst seinen value ins Formular. since sorgt dafür, dass der Wait alles ignoriert, was vor dem Absenden des Formulars verschickt wurde, damit ein wiederholter Test nie eine alte E-Mail liest. Pass Selektoren und Routen an deine App an.
Prüf die E-Mail, nicht nur den Link
Füg Tasks für die Prüfungen hinzu, die du willst, etwa eine Verifizierungs-E-Mail statt zwei oder dass der Link auf Staging führt:
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 liefert Urteile zu SPF, DKIM und DMARC, zu Links auf localhost oder einfaches http, wohin der Link führt und mehr, nie die E-Mail selbst; prüfe, dass seine Liste failed leer ist.
In CI ausführen
Speichere den Key als CI-Secret namens PROXYMAIL_QA_API_KEY. In GitHub Actions postet die Proxy Mail QA-Action außerdem einen Bericht über die E-Mails des Laufs im Pull Request: welche ankamen, wie schnell und welche nie kamen.
- 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 }}Mehr in der Cypress-Doku, zum Node.js-Client und unter Ausführen in CI.