Skip to main contentTesting in Materi is multi-layered because the system spans multiple services and integration
surfaces (HTTP, WebSocket collaboration, and events).
This page provides a baseline approach. The authoritative commands live in each service’s
Makefile / README.md.
Test layers
- Unit tests: fast, isolated behavior (preferred for most logic)
- Integration tests: validate persistence, auth boundaries, and service contracts
- End-to-end checks: validate cross-service flows (including collaboration where relevant)
What to run before opening a PR
At minimum:
- Run the service’s standard test target (see its
Makefile).
- If you changed an integration surface, update contracts and docs:
- HTTP behavior: update OpenAPI and ensure reference drift check passes
- Events: update protobuf schemas and ensure consumers remain compatible
Verification philosophy
- Prefer tests that are deterministic and run in CI.
- When adding new endpoints or workflows, include at least one concrete example request.
- If a change is user-visible, ensure Customer Docs or Developer Guide is updated accordingly.