1.5 KiB
1.5 KiB
Data consistency regression suite
npm test is the required fast regression gate. It uses generated fixtures, temporary directories, loopback HTTP servers and a fake sing-box executable; it does not require internet, root or an installed sing-box.
The protected invariants are:
| Invariant | Regression coverage |
|---|---|
| One backend canonical snapshot owns servers and desired/applied selection | test/data-consistency-regression.test.js, test/server/state-contract.test.js |
| Revisions increase and an older response cannot replace newer state | test/server/state-contract.test.js, test/web/harbor-state.test.js |
| Provider failure, parser failure and runtime failure do not partially commit subscription state | test/server/state-contract.test.js |
| Atomic write failure preserves the last file and corrupt JSON preserves its original bytes | test/server/state-store.test.js |
| Legacy state migrates with an explicit result for ambiguous selection | test/server/state-store.test.js |
| Stable IDs survive reorder and duplicate labels for 1, 30 and 300 servers | test/data-consistency-regression.test.js, test/server/subscription.test.js |
| Initial control outage does not invent domain state; repeated failures retain and mark the last snapshot stale | test/web/harbor-state.test.js |
Fixtures are generated in test code to keep the suite small and deterministic. Packet-level networking, browser screenshots and accessibility automation are intentionally deferred to their dedicated roadmap tasks.