Yes, contract testing can still provide value in this scenario.
A well-written contract testing approach will:
⢠Track which versions are compatible with each other
⢠Protect against deployments that are broken due to communication issues
⢠Protect against breaking semantic changes (eg Admin vs ADMIN for a field that accepts strings)
If your communication code is autogenerated, then you still need a way to track which versions are compatible with each other.
You also need a way to track and prevent breaking changes - most schema based approaches do this with manual rigour. Manual rigour is effective, but fallible.
All schema approaches are syntactic rather than semantic - for example, gRPC prevents syntactic breaking changes by ensuring that all fields have default values. However, this is a bit like saying āall our endpoints use json, so we canāt send incompatible responsesā. Just because the payload can be parsed by the consumer doesnāt mean it has meaning to the consumer.
Technically, you never need any testing, as all tests are just risk reduction. Schema-based approaches provide some safety over manual implementations, so depending on your needs, the risks might be acceptable. The questions are whether you want to live with the risk of deploying breaking API changes, and whether you are successfully avoiding breaking API changes with your current approaches.