Automatisch aus dem Englischen übersetzt.

Auf Englisch lesen
Proxy Mail QA

Registrierungs-E-Mails in Cypress testen

Um die E-Mail-Verifizierung in Cypress zu testen, registriere ein paar Tasks, die eine frische Adresse anlegen und auf ihre E-Mail warten, und ruf sie aus deiner Spec auf: registrieren, auf Link oder Code warten, den Ablauf abschließen. Tasks laufen in Node, also funktioniert das Paket proxymail-qa dort wie überall. Es läuft im Free-Plan, lokal und in CI.

Aktualisiert am

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

Tasks registrieren

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

Der Test

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

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.

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.

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

Mehr in der Cypress-Doku, zum Node.js-Client und unter Ausführen in CI.

Probier es bei deinem nächsten Registrierungstest aus

Kostenloser Tarif, keine Kreditkarte nötig. Erstelle eine Adresse und sieh zu, wie der Code oder Link ankommt.

Kostenloses Konto erstellenApp öffnen

Fragen

Warum cy.task statt cy.request?

Ein Wait kann bis zu 30 Sekunden halten, während die E-Mail ankommt, und das Paket kümmert sich um Wiederholungen, Zeitfilter und klare Fehler. In einem Task läuft es in Node mit deinem API-Schlüssel, der nie den Browser erreicht. cy.request funktioniert auch, gegen die REST API.

Wie lange dauert ein Wait?

Meist ein paar Sekunden: Er kehrt zurück, sobald die E-Mail ankommt, und gibt nach 30 auf. Cypress erlaubt einem Task standardmäßig 60 Sekunden; das Beispiel setzt 35, damit eine fehlende E-Mail den Test früher scheitern lässt.

Was, wenn die E-Mail nie ankommt?

Der Task schlägt mit einer Meldung fehl, die den Grund nennt, soweit Proxy Mail QA ihn erkennen kann: Meist ist der E-Mail-Provider der App im Sandbox- oder Testmodus und sendet nur an verifizierte Adressen. Behebe das auf der Sendeseite, statt länger zu warten.

Deine App mit einem KI-Tool gebaut? Wähle deins

Eine Frage zu dieser Seite?

Frag in jeder Sprache. Die Doku kann dir sofort antworten oder deine Frage an das Team von Proxy Mail QA schicken, das auf Englisch antwortet.

Doku fragen