Test Password-Reset Emails End to End with Playwright
Test password-reset emails with Playwright: receive the right link, change the password, verify login, and reject reuse in clean browser sessions.
Give every test its own real inbox. Capture the email your app sends, wait for it without a fixed sleep, and assert on parsed codes and links — from CI, your code, or an AI agent.
/v1 routeEach run gets a fresh address that nothing else writes to, so a stale or parallel message can never satisfy your assertion.
A server-side long poll returns the moment mail lands, with an explicit timeout so a missing email fails fast and clearly.
Verification codes, links, bodies, headers and attachments are already extracted — no MIME parsing in your test code.
Usual workaround: One shared inbox that every run and every teammate reads
With MailHulk: A fresh inbox per run that nothing else can write to
Usual workaround: sleep(10) and hope the email made it in time
With MailHulk: A long poll that returns on arrival, or 204 at your timeout
Usual workaround: Regex over raw MIME to dig out a code or link
With MailHulk: Codes, links and bodies arrive already parsed
Usual workaround: Cleanup scripts for every inbox a crashed run left behind
With MailHulk: A TTL from 60 s to 30 days expires the inbox by itself
Every capability is plain HTTP and JSON. Wait on an inbox with a long poll, receive signed webhook deliveries, or connect a mail client over POP3/IMAP.
data envelope204 until mail arrives, never a guessCall the API directly, or reach for a client built around the same bounded-wait semantics. Availability is labelled honestly.
Typed TypeScript client with zero dependencies. waitForMessage scans existing mail before it waits.
npm install @mailhulk/sdk
Every capability over HTTP and JSON, documented by a downloadable OpenAPI contract.
GET /v1/inboxes/{id}/messages/latest?wait=30
Point an existing mail library or client at a real mailbox over TLS.
imap.mailhulk.net:993 · pop3.mailhulk.net:995
Eleven inbox and message tools for coding and QA agents, over stdio or HTTP, scoped to a Test project.
wait_for_message · get_message · release_session
Create an inbox and wait for a code from any shell step, with CI-friendly exit codes.
mailhulk mail wait "$ADDRESS" --extract code
The same inbox and wait semantics for pytest and PHPUnit suites. Plain HTTP works today.
mh.inboxes.wait_for_message(inbox.id, timeout=60)
Dedicated POP3/IMAP servers and custom domains start on Pro; Enterprise and custom terms are on the pricing page. Compare every plan capability.
Test password-reset emails with Playwright: receive the right link, change the password, verify login, and reject reuse in clean browser sessions.
Choose an email-testing boundary for Playwright, then test OTPs, magic links, and password resets with isolated inboxes and bounded waits.
Build a test-scoped Playwright email fixture with isolated inboxes, bounded waits, retry-safe ownership, and teardown after failures.
Create an isolated inbox and make email failures reproducible.