Essa aplicação foi desenvolvida para completar o teste técnico proposto para a vaga de desenvolvedor front-end. Você pode visualizar a aplicação funcionando em https://softdesign-catalogo-dragoes.web.app/dragoes. Você também pode visualizar o estado das builds e deploys de cada commit visualizando o histórico de commits aqui ou vendo o estado dos workflows do repositório aqui.
Esse projeto foi desenvolvido utilizando algumas das mais recentes tecnologias como React (com Hooks e Context API), TypeScript, Jest, Enzyme, SCSS, Axios e algumas outras bibliotecas de minha autoria, como @nstseek/react-forms e @nstseek/react-ui.
Um processo de CI/CD simples foi implementado nesse projeto utilizando as Actions do GitHub. Toda vez que algum commit é adicionado a master, o projeto passa por sua bateria de testes, é buildado e deployado no firebase, podendo ser visualizado no endereço mencionado acima.
A cobertura de testes unitários está bem precária por falta de tempo, o único componente que possui alguns casos de teste reais apenas para exemplificar e comprovar conhecimento é o componente de Login. Como é um projeto de teste apenas, não vejo necessidade de cobrir o projeto inteiro com testes unitários pois demandaria tempo que não tenho disponível.
O resultado dos testes de cada commit é publicado utilizando o GitHub Actions logo após rodarem, como você pode ver aqui.
O projeto possui uma série de filtros para garantir a qualidade do código criado, como linters, formatters e testes unitários com framework específico que rodam toda vez que o desenvolvedor tenta realizar o push para o repositório através dos git hooks. Esse projeto utiliza o pacote husky que torna muito simples a configuração de git hooks em qualquer repositório Git. Toda vez que o desenvolvedor tenta realizar o push, o script npm run check roda antes que o push seja efetuado, garantindo que o código que está sendo enviado passa em todos os testes e builda corretamente.
Inicia o projeto na sua máquina local.
Cria um build do projeto para ser servido.
Ejeta toda a articulação do create-react-app que não é totalmente visível/manipulável para o desenvolvedor final.
Executa todos os testes unitários do projeto.
Executa todos os testes unitários do projeto em modo de observação.
Executa todos os testes unitários do projeto e gera um report para ser publicado com o GitHub Actions.
Executa o formatter instalado no projeto para verificar os arquivos existentes.
Executa o formatter instalado no projeto para corrigir os erros nos arquivos existentes.
Executa o linter instalado no projeto para verificar os arquivos existentes.
Executa o linter instalado no projeto para corrigir os erros nos arquivos existentes.
Executa uma verificação completa no projeto, incluindo o linter, formatter, os testes unitários e o build.
Executa uma verificação completa no projeto destinada para um ambiente CI, incluindo o linter, formatter, os testes unitários (gerando um report para publicação) e o build.
Executa uma verificação completa no projeto, incluindo o linter, formatter, os testes unitários e o build, corrigindo os erros passíveis de correção automática com o linter e o formatter.