Einrichtung
Installiere das Paket proxymail-qa und lege einen API-Schlüssel in PROXYMAIL_QA_API_KEY ab, in deiner Shell, in einer .env-Datei außerhalb von Git oder in den Secrets deines CI. Der Free-Plan reicht.
npm install --save-dev proxymail-qaDer Test
Importiere test und expect aus proxymail-qa/playwright: Jeder Test bekommt eine qa-Fixture, einen Client, der in jedem Aufruf auch den Test für den unten beschriebenen Bericht benennt.
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);});Für einen Link statt eines Codes:
const { value: link } = await qa.waitForLink(address, { type: 'verify', since: submitted });await page.goto(link);type ist verify, magic_signin, invite, reset oder any. Passe Beschriftungen und Routen an deine App an, statt diese zu kopieren.
Die E-Mail prüfen, nicht nur den Code
Eine erfolgreiche Registrierung kann trotzdem eine kaputte E-Mail verbergen. Diese Prüfungen finden die üblichen Fälle:
// 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 markiert auch E-Mails, die nicht sagen, wann der Code abläuft, die vielleicht nicht auf ein Handy passen, und, mit expectText und expectLanguage, fehlende Formulierungen oder die falsche Sprache. Es liefert Urteile, nie die E-Mail.
In CI ausführen, mit einem Bericht im Pull Request
Füge die GitHub Action vor deinen Tests hinzu und den Reporter zu deiner Playwright-Konfiguration. Der Bericht im Pull Request listet dann, welche E-Mails ankamen und wie schnell, aus welchem Test jede kam, und die fehlgeschlagenen Tests mit dem fehlgeschlagenen Schritt.
- 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']],});Jeder Bericht wird mit den letzten Läufen gleichen Namens verglichen, sodass er auch sagt, wenn E-Mails langsamer wurden, ein Test jetzt zwei E-Mails bekommt oder ein Test ab und zu fehlschlägt.
Mehr in der Playwright-Doku, zum Node.js-Client und unter Ausführen in CI.