GitHub Action for email verification in CI pipelines — generates an isolated inbox per run, catches real emails, and gives your tests email.otp and email.magicLink without Docker, SMTP, or signup.
- name: Generate test inbox
id: inbox
uses: zerodrop-dev/create-inbox@v1
- name: Run Playwright tests
run: npx playwright test
env:
TEST_INBOX: ${{ steps.inbox.outputs.inbox }}Documentation · GitHub · npm
Generates a disposable @zerodrop-sandbox.online inbox as a CI step and exposes it as an output variable. Your tests use the inbox to catch real emails — password resets, magic links, verification codes — without any infrastructure.
Each inbox is isolated per-run — parallel matrix builds work out of the box with zero cross-test contamination.
steps:
- uses: zerodrop-dev/create-inbox@v1
id: inbox
- run: npx playwright test
env:
TEST_INBOX: ${{ steps.inbox.outputs.inbox }}steps:
- uses: zerodrop-dev/create-inbox@v1
id: inbox
with:
api_key: ${{ secrets.ZERODROP_API_KEY }}
- run: npx playwright test
env:
TEST_INBOX: ${{ steps.inbox.outputs.inbox }}| Input | Required | Default | Description |
|---|---|---|---|
api_key |
No | '' |
ZeroDrop Workspace API key. Omit for free sandbox mode. |
| Output | Description | Example |
|---|---|---|
inbox |
Full email address | swift-x7k2m@zerodrop-sandbox.online |
inbox_name |
Inbox name without domain | swift-x7k2m |
import { ZeroDrop } from 'zerodrop-client';
const mail = new ZeroDrop();
// Use the inbox injected by the Action, or generate one locally
const inbox = process.env.TEST_INBOX ?? mail.generateInbox();
// waitForLatest uses SSE by default — sub-second delivery in CI
const email = await mail.waitForLatest(inbox, { timeout: 15000 });
// Auto-extracted — no regex needed
email.otp // "123456"
email.magicLink // "https://..."
await page.goto(email.magicLink);The inbox generation runs entirely locally — no network request is made during the Action step. The generated address is a random string; no data leaves the runner until your tests poll the ZeroDrop API.
Supply chain hardening — pin to a commit SHA:
# Floating tag (convenient)
uses: zerodrop-dev/create-inbox@v1
# Pinned to specific commit (recommended for production)
uses: zerodrop-dev/create-inbox@8706a59 # v1.0.0 initial releaseThe edge worker that receives and stores emails is fully open source: → zerodrop-dev/zerodrop-worker
- Shared domain (
zerodrop-sandbox.online) - AI spam filtering
- 30-minute email TTL
- No signup required
For teams who need custom domains, extended retention, and dedicated rate limits: → zerodrop.dev
MIT