Operate
Testing and benchmarks
Unit tests need no I/O. Integration tests use real PostgreSQL when Docker is available. Do not claim device notification from CI.
npm test
Unit tests cover validation, receipts, cursors, expiration, event envelopes, config parse, moderation policy, mention sanitization, and push recipient policy. They do not require a database.
Integration tests run against real PostgreSQL when GOZWIRE_TEST_DATABASE_URL is set. Skip cleanly when it is not. Do not mock PostgreSQL when Docker is available. A skipped integration file is not a pass.
Playwright covers the demo playground, not engine unit logic.
Live push provider tests are opt-in with disposable credentials. Provider HTTP acceptance is not proof a browser or device displayed a notification. Never use production credentials. Do not treat clean skips as capacity or delivery claims.
Benchmarks live in the repository benchmarks/ directory. Results under benchmarks/results/ are gitignored. Published numbers should cite those runs. Do not claim “100k users” or similar.