--- name: contract-test description: Test the boundary between two systems by the contract, not the implementation. Use for APIs, integrations, and shared interfaces. when_to_use: an API endpoint, a service integration, a webhook, a shared schema --- # Contract Test Test what the two sides AGREED on, so either can change internals without breaking the other. - Assert the **shape**: required fields, types, status codes, error format — not internal logic. - Cover the contract's edges: missing optional fields, the documented error responses, pagination bounds, versioning. - For consumers: test against the real contract (recorded/real responses), not a mock you wrote to match your assumptions — that mock drifts and lies. - One source of truth for the schema; both sides validate against it. A green unit test with a wrong mock is worse than no test. Pin the contract.