-
Notifications
You must be signed in to change notification settings - Fork 389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adiciona Github Actions para rodar os testes #76
Conversation
And transform it from a Model to a infrastructure component. Also make every method responsible of opening and closing the database connection, since it's safer this way.
* Works with ES6 modules * Works with Next.js Absolute Paths
This pull request is being automatically deployed with Vercel (learn more). 🔍 Inspect: https://vercel.com/tabnews/tabnews/8cvAsof7EPNqK7pM7dWLriETQHqV |
Hey @filipedeschamps Logo logo, acredito que voce vai precisar de um postgres rodando no CI, o massa que o GH Actions suporta, já fiz isto é bem tranquilo! Espero que ajude:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eu devo estar fazendo algo errado, mas está dando timeout no Jest:
| > jest --runInBand --forceExit
|
| FAIL pages/api/v1/migrations/index.test.js
| ● [e2e] First GET to /api/v1/migrations › should list all pending migrations
|
| thrown: "Exceeded timeout of 120000 ms for a hook.
| Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
|
| 5 | const allServices = allServicesFactory();
| 6 |
| > 7 | beforeAll(async () => {
| | ^
| 8 | return await allServices.start();
| 9 | });
| 10 |
|
| at Object.<anonymous> (pages/api/v1/migrations/index.test.js:7:1)
| at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)
| at runJest (node_modules/@jest/core/build/runJest.js:387:19)
Após instalar o act (que é muito massa, não conhecia), rodei diretamente act e deu erro de timeout
Tentei deixar o docker do postgres rodando e rodei novamente o act, mesma coisa.
Pode ser que está tarde, vou tentar amanhã, quem sabe entendo oq está acontecendo.
Show @huogerac ! Ele já está rodando o Postgres lá pelo
Como que funciona isso? 🤝 E já respondendo aqui sua dúvida do Para configurar ela, modifique ou crie o arquivo
Daí tente rodar o |
@huogerac vou dar merge nessa versão (mas quero fazer uma outra mais otimizada). Em paralelo, se você tiver qualquer problema com o E se puder esclarecer aqui a dúvida sobre o health options ali, seria show, mesmo com esse PR fechado 🤝 |
MAS, ainda não estou convencido que está abordagem é legal, desculpa, não me entenda mal, apenas me parece que tem muita coisa não explicita (ou pelo menos eu nao estou acostumado com esta abordagem). Bom, vamos lá, vou tentar dar mais detalhes (e isto remete a sua pergunta/minha sugestão do postgres no GH Actions)
Como poderia ser o primeiro teste do banco?Talvez fazer um database.query("SELECT 40 + 2") == 42 Enfim, pode ser que ainda não entendi direito o caminho que este PR está seguindo, vou tentar mergulhar mais no código ou quem sabe implementar algo mais concreto com minha ideia: No geral a gente precisa:
Valeu |
Respondendo sua pergunta dos parâmetros. É comum nos testes ou até mesmo quando temos diversos containers, um subir antes do outro (por isto existe no docker-compose o Desta forma, por mais que peguei isto do exemplo do github actions, está relacionado com não deixar o teste falhar antes mesmo do banco estar pronto para receber a conexão... Referencia: p.s: Mas confesso que não explorei muito estes parâmetros, então pode ser que algum esteja ai sem real necessidade |
Sensacional e concordo 100%! Fora que vai ficar muito mais rápido quando tiver mais testes, pois esse setup é feito uma só vez globalmente. Vou terminar as outras issues da Milestone e depois lapidar essa parte dos testes 👍 |
Closes: #74 (PR anterior onde explico o ambiente de testes local)
Closes: #62 (Issue relacionada da Milestone)
Foi uma aventura perceber como o ambiente em que se roda o Github Actions é diferente do meu ambiente local aqui :)
wait-on
funciona localmente que é uma maravilha, mas quebra no ambiente do Github Actions. Eu tava ficando quase maluco tentando isolar o problema de todas as formas e finalmente esbarrei nessa issue. Removi ela das dependências.axios
se demonstra bugado na última versão0.21.1
conforme essa issue e tive que voltar para versão0.19.0
. Como essa versão tem falha de segurança, movi ela para as dependências de desenvolvimento até a próxima versão sair.wait-on
, porque essa lib falava que tal url ainda não estava disponível, mas por dentro do container fazendocurl
ela estava normalmente.jest
com a flag--forceExit
. Mais para frente vou investigar.[edit]
up
edown
dos serviços por fora do script de teste. Por mais que eu gosto da ideia de eles estarem explícitos ali no arquivo de teste, fazer o build o Next é algo custoso (é mais demorado que levantar o Postgres).