Skip to main content

Testing

Four suites, all run on the staging Pi with Docker (the Windows PC needs no toolchain). Results as of 27 Sep 2026.

SuiteWhat it coversCommandResult
Spec tests (Go)The spec's "tests to write first": participant hash, one direct chat per pair, group reuse by name, recipient rules, Cc/Bcc privacy, reply-once and thread paths, new-member visibility, last-admin handover, unread and favourite counters. Real PostgreSQL (phonemail_test).bash scripts/test.sh9 / 9 pass
API smoke (Python)33 end-to-end calls as the apps make them: register and login, send by bare number, one-To rule, unread chip, open marks read, reply and reply-once 409, thread order, favourites, search, lookup, aliases (reserved names refused), JOIN code flow with a signed webhook (forged one refused, code single-use), JOIN by name, groups.python3 scripts/smoke.py33 / 33 pass (staging and production)
Browser (Playwright + Chromium)17 checks in a real browser with two people: one-screen login, two-field portal and QR, compose, live arrival of new mail, reply-once, stars, search, groups, drafts, trash, settings, no sideways scrolling at phone width.bash scripts/web-e2e.sh17 / 17 pass
Screenshot tourSeeds demo people and captures every screen used in the user manual.bash scripts/web-tour.sh16 screenshots

Also run on every change: TypeScript strict type-check and Oxlint for the web client (0 errors), go vet for the mail service, and nginx -t before any reload.

Production check​

deploy/prod-smoke.sh runs the 33 api checks against the live stack, signing the simulated Twilio webhook with the real auth token (nothing is sent to Twilio), and then resets the new production database to empty. External reachability was confirmed with a third-party HTTP checker.