Configuration
Installez le paquet proxymail-qa et placez une clé d’API dans PROXYMAIL_QA_API_KEY, dans votre shell, dans un fichier .env exclu de Git ou dans les secrets de votre CI. Le forfait Free suffit.
npm install --save-dev proxymail-qaLe test
Importez test et expect depuis proxymail-qa/playwright : chaque test reçoit une fixture qa, un client qui nomme aussi le test dans chaque appel pour le rapport décrit plus bas.
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);});Pour un lien plutôt qu’un code :
const { value: link } = await qa.waitForLink(address, { type: 'verify', since: submitted });await page.goto(link);type vaut verify, magic_signin, invite, reset ou any. Adaptez les libellés et les routes à votre application plutôt que de copier ceux-ci.
Vérifier l’e-mail, pas seulement le code
Une inscription réussie peut quand même cacher un e-mail défaillant. Ces vérifications détectent les cas habituels :
// 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 signale aussi les e-mails qui n’indiquent pas quand le code expire, qui risquent de ne pas tenir sur un téléphone et, avec expectText et expectLanguage, les phrases manquantes ou la mauvaise langue. Il renvoie des verdicts, jamais l’e-mail.
L’exécuter dans CI, avec un rapport sur la pull request
Ajoutez l’Action GitHub avant vos tests et le reporter à votre configuration Playwright. Le rapport sur la pull request liste alors les e-mails arrivés et leur délai, le test d’origine de chacun, et les tests échoués avec l’étape en échec.
- 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']],});Chaque rapport est comparé aux dernières exécutions du même nom : il indique donc aussi quand les e-mails sont devenus plus lents, quand un test reçoit désormais deux e-mails ou quand un test échoue de temps en temps.
Plus d’informations dans la documentation Playwright, le client Node.js et Exécution dans CI.