First to Site
Release 3.5

Dev Infrastructure - Mailhog, Messenger & E2E

Local email capture, async queue worker, and end-to-end test infrastructure

Overview

Added Mailhog for local email capture, an auto-consuming messenger worker container, a debug email endpoint, and Playwright-based E2E test infrastructure with automatic re-authentication.

What Changed

Mailhog Container

  • New Docker service captures all local email (SMTP on port 1025, web UI on port 18025).
  • MAILER_DSN=smtp://mailhog:1025 set as the dev default across all environment files.
  • No emails leave the local development environment.

Messenger Worker Container

  • messenger-worker Docker service auto-consumes the async queue on container start.
  • Hourly restart via --time-limit=3600 and crash recovery via restart: unless-stopped.
  • Memory bounded at 256M. No need to manually run bun run dev:consume.
  • Worker logs: docker compose logs messenger-worker -f

Debug Test Email Endpoint

  • GET /debug/test-email endpoint (dev environment only) for verifying email delivery.
  • Optional query params: ?to=...&subject=...
  • Sends a test email through the configured mailer, viewable in Mailhog.

Error Email Reduction (PR #702)

  • Fixed DateTimeField::setHelp(null) TypeError in ProjectCrudController.php:1995 - now checks before calling setHelp.
  • Fixed GET /refresh-milestones-preview returning 405 - endpoint now accepts GET and returns JSON.
  • Eliminated 35 of 225 error emails found during Mailhog review.

Playwright Auto-Reauth (PR #704)

  • E2E tests detect session expiry and automatically re-authenticate via /debug/test-login.
  • auth-storage.json persisted between runs, removing the need for manual e2e:save-admin-form-auth.

Files Touched

FileChange
docker-compose.ymlMailhog + messenger-worker services
app/.envMAILER_DSN default
app/src/Controller/Debug/TestController.phpTest email + test-login endpoints
app/src/Controller/Admin/ProjectCrudController.phpsetHelp(null) fix
scripts/e2e-admin-title-status-milestones-playwright.tsAuto-reauth

Changelog Reference

  • feat: add Mailhog container, messenger worker, and email test endpoint (4b3200d)
  • fix: resolve two error-email sources found during Mailhog review (d797adf)
  • fix: auto-reauth in Playwright e2e test via debug test-login (03cad62)