installCài dependency và Firebase CLI
npm install && npx firebase --version
Có firebase CLI và package @firebase/rules-unit-testing/firebase-admin trong node_modules.
Guardrail: Không dùng production service account cho local emulator.
start-emulatorKhởi động Auth + Firestore emulator
npm run firebase:emulator:start:v27
Auth emulator ở 127.0.0.1:9099, Firestore emulator ở 127.0.0.1:8080, UI ở 127.0.0.1:4000.
Guardrail: Luôn dùng FIRESTORE_EMULATOR_HOST khi chạy seed/write test.
seedSeed dữ liệu demo có boundary
EXIXT_FIRESTORE_EMULATOR_WRITE=1 FIRESTORE_EMULATOR_HOST=127.0.0.1:8080 npm run firestore:seed:admin:live:v27
Tạo participant demo, consent, submission, report, aggregate snapshot và audit event demo.
Guardrail: Script dừng nếu thiếu FIRESTORE_EMULATOR_HOST hoặc thiếu explicit write flag.
rulesChạy rules unit test
npm run firestore:rules:test:live:v27
Các case allow/deny của participant, facilitator, organization, admin và anonymous đều đúng.
Guardrail: Rules fail thì không được coi emulator là hợp lệ.
api-smokeChạy API smoke test
npm run firebase:e2e:smoke:v27
Submit R4 demo và audit viewer demo trả metadata đúng boundary.
Guardrail: Smoke test không được đọc raw answers từ audit viewer.