brigolini / StarWars

App de exemplo de acesso à API SWAPI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Star Wars APP

Projeto de exemplo para acesso à API SWAPI

Instruções para instalar e rodar app

Dentro do diretório em que estiver o arquivo package.json, digitar

yarn install

npm start

Após executar o último comando, abrir um navegador no endereço localhost:3000

Atenção: A app está programada para não abrir o navegador automaticamente

Scripts disponíveis

yarn start

Executa a app em modo develoment.\

yarn test

Executa os testes

Para executar os testes e2e é necessário levantar o servidor de desenvolvimento. Devido ao tempo não automatizamos essa tarefa.

yarn build

Gera um build da app para produção

yarn eject

Ejeta dos scripts react.

Alguns pontos importantes:

1 - A app ainda carece de um melhor tratamento de erros de boundary.

2 - Para testes dos componentes visuais preferimos a abordagem e2e. Especialmente para os componentes que fazem acesso à API uma vez que conseguimos, assim, fazer testes que simulam melhor o caráter assíncrono dela.

3 - Utilizamos o enzyme para montar os componentes nos testes unitários por ser o padrão do mercado. No entanto, acredito que a lib "Testing Library" tem mais pontos positivos, especialmente o de nos obrigar a testar funcionalidade e não implementação.

4 - Dada a simplicidade da app, não utilizamos nenhuma forma de repositório global de estado (Redux ou Context API)

5 - Não habilitamos a cobertura de testes para o puppeteer pois, até o momento, em nossa opinião, não há boa integração dessa cobertura com CI nem com IDEs

6 - A utilização do Material UI, por sí só, fez com que boa parte do código seja responsivo. No entanto, usamos mediaquery para reduzir a lista a apenas um campo em dispositivos móveis.

7 - O ideal para os testes E2E é uma MOCK API. Considero importante isso para garantirmos que o loopback da rede seja contado. Como não havia aqui, utilizamos a própria API.

About

App de exemplo de acesso à API SWAPI


Languages

Language:TypeScript 88.5%Language:JavaScript 6.0%Language:HTML 3.0%Language:CSS 2.5%Language:Shell 0.0%