O problema
Durante a automação de uma API de compras, alguns comportamentos encontrados na implementação não correspondiam exatamente ao que estava descrito na documentação.
A documentação indicava endpoints, métodos e exemplos de respostas, porém os testes revelaram diferenças no contrato real.
Documentação é uma referência, não uma garantia
Swagger e OpenAPI são ferramentas essenciais para entender uma API, mas a implementação final é a fonte de verdade durante a execução.
Um exemplo encontrado foi uma resposta documentada contendo campos que não estavam presentes no retorno real do endpoint.
{
"id": "invoice-id",
"invoice_number": "INV-2026000007",
"total": 14.15
}
O endpoint de consulta retornava uma estrutura mais completa:
{
"status": "AWAITING_FULFILLMENT",
"invoicelines": [],
"payment": {}
}
Como validar um contrato real de API
1. Execute o endpoint
O primeiro passo é sempre observar a resposta real da aplicação.
2. Compare request e response
Verifique:
- nome dos campos;
- tipos dos valores;
- campos obrigatórios;
- diferença entre exemplos e respostas reais.
3. Modele os tipos conforme o comportamento
Em automação com TypeScript, respostas diferentes devem possuir contratos diferentes.
InvoiceCreateResponse
InvoiceDetailsResponse
Impacto na automação
Criar uma única interface gigante para todos os endpoints aumenta a fragilidade dos testes.
O ideal é representar cada operação da API com o contrato correspondente.
Boas práticas
- Use Swagger para descoberta inicial.
- Valide sempre contra respostas reais.
- Evite confiar apenas nos exemplos da documentação.
- Separe modelos de criação, consulta e atualização.
Conclusão
Uma automação confiável depende de entender o comportamento real da API. A documentação ajuda a começar, mas os testes precisam validar o contrato que realmente existe em execução.