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
tests: adiciona suite de testes com Jest e Github Actions #29
Conversation
This pull request is being automatically deployed with ZEIT Now (learn more). 🔍 Inspect: https://zeit.co/filipedeschamps/brasilapi/bjz3z4thr |
Turma, pós carnaval, vamos bater o martelo nesse ponto? Tem um outro PR que integrou os testes https://github.com/filipedeschamps/BrasilAPI/pull/35 Gostaria de mirar o repositório para a versão 1.0 para criar um vídeo no canal sobre tudo o que foi feito e a participação de todos 😍 Algum comentário @kevenleone e @mukaschultze que fizeram os outros PR? E @juniorpb como foi a experiência no seu PR https://github.com/filipedeschamps/BrasilAPI/pull/35 ? |
Ao abrir a pull request #35 o Workflows realiza os testes e o deploy automático. Após validado, foi gerado a Preview URL - uma delicinha! Com ela é possível usar a atual versão da PR em 'ambiente stage' rodando em tempo real. @filipedeschamps o Workflows do Github Actions é show! 😍 |
E pq os testes estão com skip? Não tem como verificar se a requisição falha com o jest? |
@mukaschultze ótima pergunta! Eu deixei assim para ser uma primeira iteração, como o projeto está num estágio beta acredito ser melhor deixar margem para fazer o merge de algo assim para outra pessoa ter a oportunidade de mexer no projeto. Então para finalizar o trabalho do skip tem que mexer na interface pública da Quem quiser treinar no mundo open source, esta é uma chance num ambiente super controlado 🤝 |
Pingando o @lucianopf por ter participado da issue original https://github.com/filipedeschamps/BrasilAPI/issues/4 |
Maaaaano, vc leu meus pensamentos! hahaha Tava querendo brincar com isso agora! 😂 (planejando inclusive migrar o Superbowleto do Trevis pro Gh Actions hehehe) Só pra deixar aqui registrado uma coisinha que tbm queria brincar relacionado ao tópico! O massa do Github Actions é que da mais contexto dos testes no próprio GH, as mensagens de erro ficam sensacionais! 👏 🚀 |
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.
Mestre, ta bem show! 😬
Só fiquei com uma duvidazinha, mas fica a vontade de dar resolve! 🤘
Que massaaaa esse Vou pinar as versões do package, adicionar a versão do lamba (e também da região, achei interessante) e colocar nesse PR. As outras alterações sugiro fazer em novos PRs 👍 |
…as de AWS da Zeit Também muda o retorno do `date` para um simples `new Date()`
O hook demorou 4 minutos para sair de Em paralelo, olha o response do https://brasilapi-git-actions.filipedeschamps.now.sh/api/status/v1
Estranho... depois seria interessante também escrever teste para essa interface 👍 |
Turma, se não tiver ninguém contra, gostaria de fazer o merge desse PR para seguirmos com o restante das implementações. Depois que o repo estiver em forma, prevejo que vou fazer 2 vídeos, um sobre o Next.js (que vai convidar as pessoas aqui para esse repositório) e outro específico sobre o BrasilAPI 👍 |
Só uma coisa que eu pensei aleatoriamente agora, o que acontece se uma pessoa der fork? O deploy ta ligado a esse repositório em específico, porem as actions vão funcionar em todos os forks. Nessa situação as actions deixam de ser executadas? Dão erro? |
Excelente pergunta! Meu palpite é que o action rode, mas quebre por conta
que o hook da Zeit que faz o deploy não vai conseguir ser executado.
…On Tue, Mar 3, 2020 at 6:56 PM Samuel Schultze ***@***.***> wrote:
Só uma coisa que eu pensei aleatoriamente agora, o que acontece se uma
pessoa der fork? O deploy ta ligado a esse repositório em específico, porem
as actions vão funcionar em todos os forks. Nessa situação as actions
deixam de ser executadas? Dão erro?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/filipedeschamps/BrasilAPI/pull/29?email_source=notifications&email_token=ABANEEMGX72MH7Q3O65TDG3RFW7O5A5CNFSM4KZXFRPKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENWEOEY#issuecomment-594298643>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABANEEKBKZH3JWTLMRXRRGTRFW7O5ANCNFSM4KZXFRPA>
.
|
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.
LGTM! 🚀 ❤️
Poxan, o version ia ficar massa, mas na vdd ele acaba pegando a versão da lambda e não do deployment =/
Dps a gnt estuda melhor isso! 😬
Show! Merged 👍 como reflexo:
|
Olha que benchmark massa: vercel/next.js#10814 Fazer o Jest retornar para a issue qual teste falhou 👍 |
Pessoal, tudo bem? Segue minha proposta para suíte de testes do projeto. Mas antes, existem duas outras propostas: uma utilizando o Cypress https://github.com/filipedeschamps/BrasilAPI/pull/11 e outra integrando com o Travis CI https://github.com/filipedeschamps/BrasilAPI/pull/27
Resumo
O objetivo desta proposta é disponibilizar uma suíte de testes que utiliza a combinação do Jest com o Github Actions. O resultado esperado é, de uma forma simples, conseguir realizar testes locais utilizando o servidor local do Next.js e também testes remotos dentro do CI do Github utilizando a Preview URL disponibilizada pela Zeit (Now) que é uma URL única criada cada commit. Como bônus, o CORS é automaticamente testado pelo fato do Jest utilizar o jsdom que simula de forma programática o ambiente de um navegador (e CORS está incluso): mais informações.
Fluxo
Testes no seu ambiente local de desenvolvimento
Existem dois comandos para você rodar os testes na sua máquina local, um que roda os testes uma única vez e outro que roda os testes de forma contínua (a cada alteração que os arquivos sofrerem).
Para isso acontecer, antes de todos os testes rodarem, o helper
/tests/helpers/server.js
identifica se você está em ambiente local ou ambiente do CI do Github. Se estiver em ambiente local (test
injetado pelo Jest), ele irá:/api/status/v1
fique disponívelhttp://localhost:3000
Este é o resultado esperado de rodar
npm test
:Testes de CI com Github Actions
Isto é feito utilizando os Workflows do Github Actions e esse arquivo de configuração pode ser encontrado na pasta
/.github/workflows/e2e-tests.yml
e o fluxo segue dessa forma:deployment_status
e que neste momento estará com o statuspending
. O workflow fica escutando por este evento (no statuspending
) e no momento que ele acontece, o jobmark-commit-status-pending
marca esse novo commit enviado por você com o status depending
para bloquear o merge até que esse fluxo termine.deployment_status
novamente é disparado, mas agora com o statussuccess
e outro job chamadoe2e-tests
começa a rodar. O interessante desse job é que a primeira coisa que ele faz é manter ostatus
do commit comopending
, porém agora adiciona umatarget_url
e com isso você consegue navegar diretamente para a URL deste Workflow e ver ele rodando (nota que um linkDetails
apareceu na direita). Após isso, ele irá executar os mesmos passos de quando você roda os testes localmente (npm test
) só que agora injetando uma variável de ambienteNODE_ENV='ci'
para que o helperserver.js
não levante o servidor local do Next.js e utilize a Preview URL, que será algo comohttps://brasilapi-branch.filipedeschamps.now.sh
(ao invés dohttp://localhost:3000
).failure
.success
.E é isso turma! Ainda faltam coisas como criar um workflow caso o deploy da Zeit falhe, mas é bem simples, outro ponto importante é definir de forma automática a porta do servidor local (caso a
3000
esteja sendo utilizada) e também qualquer outra sugestão que será super bem vinda 👍E a explicação pareceu longa, mas é super simples e eu gostei MUITO do Github Actions porque além de fácil, o nível de integração com todo o ecossistema do Github é impressionante, você consegue disparar workflows para diversos tipos de eventos e manipular qualquer coisa pela API.
Por fim, agradecimento em especial ao @paulogdm que é colaborador da Zeit por me dar o pontapé inicial sobre a Preview URL 🤝
Closes https://github.com/filipedeschamps/BrasilAPI/issues/4