-
Notifications
You must be signed in to change notification settings - Fork 390
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
Nova abordagem para testes #82
Conversation
And reduce everything to run only on `pull_requests`
This pull request is being automatically deployed with Vercel (learn more). 🔍 Inspect: https://vercel.com/tabnews/tabnews/3MBN39SS6rzvaaB7ZoaEkFrJpFXg |
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.
- Fiz uma revisão rápida (tenho mais tempo a noite)
- Gostei das alterações do package json (scripts)
- yarn test funciona, os tests passam, mas sai com exit 1 por algum motivo
- a aplicação está funcionando
- o
act
não da erro, mas não executa mais (voltei o rc para original), com a imagem que voce passou, mas ainda assim nada acontece, sem erro, sem output..(preciso investigar mais)
➜ tabnews.com.br git:(tests-new-approach) ✗ yarn test
yarn run v1.22.10
$ npm run services:up && concurrently -s -k -n next,jest 'npm run next' 'jest --runInBand' && npm run services:stop
npm WARN lifecycle The node binary used for scripts is /tmp/yarn--1627065061622-0.835042471651541/node but npm is using /home/roger/.nvm/versions/node/v12.22.1/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> [email protected] services:up /home/roger/workspace/workon/tabnews/tabnews.com.br
> docker-compose -f infra/docker-compose.development.yml up -d
postgres-dev is up-to-date
[next] npm WARN lifecycle The node binary used for scripts is /tmp/yarn--1627065061622-0.835042471651541/node but npm is using /home/roger/.nvm/versions/node/v12.22.1/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
[next]
[next] > [email protected] next /home/roger/workspace/workon/tabnews/tabnews.com.br
[next] > next dev
[next]
[next] ready - started server on 0.0.0.0:3000, url: http://localhost:3000
[next] info - Loaded env from /home/roger/workspace/workon/tabnews/tabnews.com.br/.env
[next] info - Using webpack 5. Reason: Enabled by default https://nextjs.org/docs/messages/webpack5
[next]
[next] warn - You have enabled the JIT engine which is currently in preview.
[next] warn - Preview features are not covered by semver, may introduce breaking changes, and can change at any time.
[next] event - compiled successfully
[next] event - build page: /api/v1/migrations
[next] wait - compiling...
[next] event - compiled successfully
[next] No migrations to run!
[next] > Migrating files:
[next] > - 1599609889070_init
[next] ### MIGRATION 1599609889070_init (UP) ###
[next] > Migrating files:
[next] > - 1599609889070_init
[next] ### MIGRATION 1599609889070_init (UP) ###
[next] No migrations to run!
[next] No migrations to run!
[jest] PASS pages/api/v1/migrations/index.test.js
[jest] [e2e] First GET to /api/v1/migrations
[jest] ✓ should list all pending migrations (34 ms)
[jest] [e2e] First POST to /api/v1/migrations
[jest] ✓ should list all migrated migrations (24 ms)
[jest] [e2e] Second POST to /api/v1/migrations
[jest] ✓ should list zero migrated migrations (22 ms)
[jest] [e2e] Second GET to /api/v1/migrations
[jest] ✓ should list all zero pending (21 ms)
[jest] [e2e] PUT to /api/v1/migrations
[jest] ✓ should return 404 (4 ms)
[jest]
[jest] Test Suites: 1 passed, 1 total
[jest] Tests: 5 passed, 5 total
[jest] Snapshots: 0 total
[jest] Time: 9.673 s
[jest] Ran all test suites.
[jest] jest --runInBand exited with code 0
--> Sending SIGTERM to other processes..
[next] npm run next exited with code SIGTERM
error Command failed with exit code 1.
@huogerac show!!!!! Eu não to usando o [edit] Veja meu output:
|
@huogerac descobri porque o seu Então para rodar o
|
But remove it if it's localhost, development or CI
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.
Bom Filipe,
Não tenho conhecimento em nodejs e next para "aprovar", mas tudo que testei e vi, está funcionando. (tests, dev, services:up/down act, lint)
FYI:
- act funcionou com o parâmetro:
act -j tests
! massa, cada vez gosto mais deste act - o
npm run test
ouyarn test
não estavam funcionando, pq eu estava usando o node v12, fiz update para 14 e tambem não funcionou, dai ao usar a última versão (v16.5.0), tudo funcionou - onde podemos colocar no projeto a versão do node do projeto? (já vi alguns projetos com um .node_version e outros como uma entrada no package.json. Alguem sabe?
- sabe qual node tem na vercel, dai talvez poderia ser interessante usar no projeto a mesma versão da vercel (já vi cada erro causado por versão diferente do node)
- eu estava usando um docker-compose bem antigo (2019) e achava q o problema era com ele, mas no final não era nada relacionado com docker, mas de qualquer forma é bom ter o docker e docker-compose mais novos instalado!
[edit]
o curioso é depois vi que no tests.yml do gh actions, lá tem referencia para o node-version 14. Dai fiquei na duvida pq tive que utilizar o node 16 para funcionar...
Sensacional @huogerac 🎉👏 Sobre os seus pontos:
|
Merged! Let's gooooo!!!! 👍 |
Eu notei que pulei um dos seus pontos @huogerac
Talvez usar a chave https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-version |
Seguindo as sugestões do @huogerac nessa thread, eu tirei a responsabilidade de levantar e derrubar os containers de dentro dos testes e passei isso para a infraestrutura. Ficou muito melhor e muito mais rápido, principalmente quando você está desenvolvendo e testando ao mesmo tempo com
npm run test:watch
.Então agora o foco dos testes locais não é garantir a integridade, e sim acelerar o desenvolvimento junto aos testes, porque quem deve fazer a garantia final é o CI (no nosso caso as Actions do Github). E ao rodar nas Actions, ao invés de usar o ambiente de desenvolvimento do Next.js, é feito o
build
estart
, como em um ambiente de produção. Não é igual ao ambiente de produção, pois está rodando nos containers do Github, mas é um passo a mais do que só testar no ambiente de desenvolvimento.Outra coisa que fiz é remover das Actions o
push
e deixar somente para rodar nospull_requests
. Isso deve acelerar um pouco as coisas também.Bom, é um grande refactor, não sei o que vai acontecer aqui no Github Actions, vamos ver se vai passar 👍
[edit]
Passou 🎉
Então os comandos para desenvolver ou testar continuam os mesmos, e eles automaticamente se responsabilizam por levantar ou derrubar tudo o que precisa: