O problema de uma automação sem organização
Em projetos de automação API é comum começar chamando endpoints diretamente dentro dos testes. Embora funcione inicialmente, essa abordagem aumenta o custo de manutenção conforme o projeto cresce.
test()
|
|-- request.post()
|-- request.get()
|-- validações
|-- autenticação
Com muitos cenários, qualquer alteração de endpoint ou autenticação exige mudanças em vários arquivos.
Separando responsabilidades
Uma arquitetura mais sustentável divide o código em camadas:
Teste
|
Service
|
ApiClient
|
API
Teste
Responsável por validar comportamento e regras do cenário.
Service
Centraliza operações relacionadas a um recurso da API.
cartService.addProduct(
cartId,
productId,
quantity
);
ApiClient
Controla detalhes técnicos como URL base, headers, autenticação e tratamento de respostas HTTP.
Exemplo aplicado
Em vez de realizar uma chamada HTTP diretamente no teste:
request.post('/carts/id')
usamos uma abstração de serviço:
await cartService.addProduct(
cart.id,
product.id,
1
);
O teste fica focado no comportamento esperado, não nos detalhes de comunicação.
Benefícios dessa arquitetura
- Menor duplicação de código.
- Manutenção centralizada.
- Testes mais legíveis.
- Facilidade para evolução do framework.
- Separação clara entre negócio e infraestrutura.
Conclusão
Uma boa arquitetura de automação não elimina complexidade, mas organiza onde ela deve existir. Separar testes, serviços e cliente HTTP permite que o projeto cresça mantendo previsibilidade e facilidade de manutenção.