Testing
Three test layers, and a contribution should cover the ones its change touches. All commands run from the repo root.
Go unit tests
Ginkgo v2 + Gomega, in *_test.go files
alongside the code they test.
go install github.com/onsi/ginkgo/v2/ginkgo@latest
make test
Expectations:
New behavior needs the happy path and the negative cases: error paths, permission denials, malformed input.
AWS SDK calls are mocked through the interfaces in
src/utils/src/mock— unit tests never touch real AWS.make testalso runs submodule suites.
Python integration tests
pytest suites under test/itest/ exercise a deployed stack end-to-end —
they need a make deployed environment and AWS credentials.
make itest-setup # One-time: setup integration test environment (deploy test infrastructure)
make itest # full suite
make itest ITEST_ARGS='-k notifications' # subset by keyword
The shared harness and fixtures live in test/itest/conftest.py; new itests
should reuse them rather than building their own clients. pytest.ini roots
the run at the repo top (pythonpath = .).
Dashboard tests
The admin dashboard uses Vitest; tests are
*.test.ts(x) files alongside the component.
cd src/admin/dashboard
npm install
npm test # vitest run — full suite, once
npm run test:watch # vitest watch mode, for development
npm test -- path/to/file.test.tsx # a single test file
npm run typecheck and npm run lint cover the rest of what CI expects from
dashboard changes.