Olá, seja muito bem-vindo(a)!
Fiz este projeto de exemplo para demonstração de testes automatizados de GUI e API escritos com Cypress utilizando a aplicação ServeRest que foi desenvolvida e é mantida por Paulo Gonçalves.
Para baixar e rodar este projeto, você precisará das seguintes tecnologias instaladas em seu computador:
- git (usei a versão
2.47.0
enquanto escrevia este documento) - Node.js (usei a versão
v20.17.0
enquanto escrevia este documento) - npm (usei a versão
10.8.2
enquanto escrevia este documento)
Obs: Ao instalar o Node.js, o npm é instalado automaticamente.
Após clonar o projeto, execute o comando npm install
(ou npm i
para a versão curta) para instalar as dependências de desenvolvimento.
O ServeRest está disponível de forma online, no npm e no docker.
Todas essas opções possuem as mesmas rotas, regras, dados pré-cadastrados e documentação. Escolha a melhor opção para você.
No ambiente online os dados cadastrados são removidos diariamente, enquanto que no local basta reiniciar o ServeRest.
Para facilitar a execução do projeto por terceiros, ele foi configurado por padrão para utilizar a aplicação de forma online. Porém, pode-se utilizar a opção de ambiente local caso precise que os dados não sejam alterados por outro usuário.
Acesse https://serverest.dev para visualizar a documentação e as rotas disponíveis.
Neste projeto, você pode rodar os testes em modo interativo ou modo headless.
Execute o comando npm test
(ou npm t
para a versão curta) para rodar a todos os testes em modo headless.
Execute o comando npm run cy:open
para abrir a Cypress App e rodar os testes.
Para análise estática de código estou utilizando a biblioteca eslint-plugin-cypress.
Para realizar a análise estática de código, basta rodar o comando npm run lint
ou execute diretamente o comando npm run lint:fix
para realizar a análise e corrigir automaticamente os problemas encontrados.
Para entregar o código em produção com rapidez e segurança, foi utilizado as seguintes soluções:
Estou utilizando a biblioteca commitlint para validar se as mensagens de commit estão seguindo os padrões estabelecidos por Conventional Commit.
A especificação do Conventional Commits é uma convenção simples para utilizar nas mensagens de commit. Ela define um conjunto de regras para criar um histórico de commit explícito, o que facilita a criação de ferramentas automatizadas baseadas na especificação.
Estou utilizando a biblioteca husky para executar as ações em git hooks, como pre-commit
e commit-msg
;
Feito com ☕ e ❤️ por Renan.