-
Notifications
You must be signed in to change notification settings - Fork 15
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
Scripts automatizados nivel junior #1
base: main
Are you sure you want to change the base?
Conversation
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.
Parabens Gabriel pelo belo trabalho.
Conseguistes implementar testes de API e GUI muito rapidamente. Os detalhes os quais chamei a atenção serão coisas que iras desenvolver e aprender ao longo do curso da turma 3.
Um ponto o qual eu gostaria de destacar para o futuro seria de quando criares a Pull Request, podes incluir na descrição da mesma informações que ajudem o revisor a ganhar um contexto das mudanças propostas em codigo, como tambem algumas coisas que tenhas tido duvidas ou dificuldade em implementar e que talvez precisem de mais atencao do revisor 👍
Desculpe se algum feedback meu nao faça sentido, ou vai de encontro com o que tenhas aprendido, pois eu tambem estou aprendendo e evoluindo revisando o teu codigo. Nesse caso, podemos discutir o mesmo ate encontrar a solucao mais apropriada. Vamos juntos, e espero poder revisar teu codigo novamente em breve! Obrigado!
@@ -10,6 +10,7 @@ | |||
}, | |||
"dependencies": { | |||
"@faker-js/faker": "^9.0.3", | |||
"backend": "file:", |
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.
Fala Gabriel, qual seria a necessidade dessa dependencia backend?
Acredito que ela não seja necessaria, pois a aplicacao nao necessitaria dela para rodar.
Aqui vai uma breve explicação:
No contexto de módulos npm, a principal diferença entre dependencies e devDependencies está no momento em que os pacotes são necessários:
dependencies: São os pacotes essenciais que o projeto precisa para funcionar em produção. Esses módulos são instalados quando o projeto é executado em ambientes finais, como servidores de produção ou em builds de lançamento. São usados diretamente pelo código do projeto durante a execução (ex.: React).
devDependencies: São pacotes usados apenas durante o desenvolvimento e testes do projeto. Incluem ferramentas como linters, frameworks de testes e geradores de documentação. Esses módulos não são necessários em produção e, portanto, não são instalados quando o projeto é implementado nesse ambiente, exceto se forem explicitamente requisitados.
Em resumo, dependencies são para a execução do projeto, enquanto devDependencies são para o desenvolvimento do mesmo.
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.
Só se resolver conversas que foram ajustadas.
Esta mudança não deveria ter ocorrido e portanto, recomendo reverter a mudança.
O mesmo vale para o arquivo backend/package-lock.json
.
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 apago, e essa linha simplesmente volta sozinha
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.
Outro aluno teve o mesmo problema devido a uma extensão da RedHad no VSCode.
Você possui tal extensão instalada? Caso sim, tente desisntalar e veja se resolve o problema.
@@ -30,5 +30,8 @@ | |||
"last 1 firefox version", | |||
"last 1 safari version" | |||
] | |||
}, | |||
"dependencies": { | |||
"EngageSphere-Test-Design-Masterclass-Turma-3": "file:" |
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.
Aqui o mesmo principio se aplicaria novamente, nao seria necessario estabelecer isso como uma dependencia.
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.
Mesma coisa aqui.
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 apaguei, mas ele retorna, misteriosamente. Dei uma pesquisada parece algum plugin faz isso não sei dizer com certeza
@@ -2,6 +2,7 @@ | |||
"name": "frontend", | |||
"version": "0.1.0", | |||
"dependencies": { | |||
"frontend": "file:", |
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.
Aqui tambem, eu removeria esse dependencia pois ela nao se enquadra na seguinte definicao:
dependencies: São os pacotes essenciais que o projeto precisa para funcionar em produção. Esses módulos são instalados quando o projeto é executado em ambientes finais, como servidores de produção ou em builds de lançamento. São usados diretamente pelo código do projeto durante a execução (ex.: React).
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.
De novo. Só resolva conversas onde a sugestão foi implementada.
Como este não é o caso, o review do @ldasilvaNZ11 ainda vale.
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 apaguei, mas ele retorna, misteriosamente. Dei uma pesquisada parece algum plugin faz isso não sei dizer com certeza
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.
Fazer os ajustes conforme sugeridos pelo @ldasilvaNZ11.
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.
Além dos review do @ldasilvaNZ11, deixei mais alguns pontos de melhoria os quais creio que lhe ajudarão a melhorar o design dos testes.
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.
@gabriel-e2e, parabéns por mais uma rodada de testes com vários ajustes! 👏🏻
Deixei mais alguns comentários os quais creio que lhe ajudarão a melhorar ainda mais o design do testes.
Lembre-se de só enviar os ajustes para nova revisão após o encontro de amanhã. 😉
@@ -10,6 +10,7 @@ | |||
}, | |||
"dependencies": { | |||
"@faker-js/faker": "^9.0.3", | |||
"backend": "file:", |
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.
Só se resolver conversas que foram ajustadas.
Esta mudança não deveria ter ocorrido e portanto, recomendo reverter a mudança.
O mesmo vale para o arquivo backend/package-lock.json
.
@@ -2,6 +2,7 @@ | |||
"name": "frontend", | |||
"version": "0.1.0", | |||
"dependencies": { | |||
"frontend": "file:", |
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.
De novo. Só resolva conversas onde a sugestão foi implementada.
Como este não é o caso, o review do @ldasilvaNZ11 ainda vale.
@@ -30,5 +30,8 @@ | |||
"last 1 firefox version", | |||
"last 1 safari version" | |||
] | |||
}, | |||
"dependencies": { | |||
"EngageSphere-Test-Design-Masterclass-Turma-3": "file:" |
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.
Mesma coisa aqui.
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.
Muito bem @gabriel-e2e! 👏🏻
Deixei mais alguns comentários, os quais espero que agreguem ao seu conhecimento de design de testes automatizados.
Espero que tenha gostado da experiência de revisão de código da Test Design Masterlclass da TAT.
@@ -11,6 +11,7 @@ | |||
/cypress/downloads | |||
/cypress/screenshots | |||
/cypress/videos | |||
/cypress/fixtures |
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.
Esta pasta não deve ser adicionada ao .gitignore
.
A pasta cypress/fixtures/
é parte da estrutura de pastas do Cypress e portanto não deve ser adicionada aqui.
Se você não estiver a utilizando, basta deletá-la e adicionar a configuração fixturesFolder: false
no arquivo de configurações do Cypress (cypress.config.js
).
}) | ||
|
||
it('Retorna à lista de clientes ao clicar no botão "Voltar"', () => { | ||
cy.contains('button', 'View').should('be.visible').click() |
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.
Para simplificar, você pode remover a verificação intermediária.
cy.contains('button', 'View').should('be.visible').click() | |
cy.contains('button', 'View').click() |
O Cypress já espera por elementos estarem visíveis antes de clicar neles, portanto, use tal abordagem somente quando necessário.
O mesmo vale para a linha abaixo.
}) | ||
|
||
it('Abre e fecha o messenger', () => { | ||
cy.get('button[class^="Messenger_openCloseButton"]').should('be.visible').click() |
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.
Visto que você repete o seletor starts with em vários testes, que tal criar um comando customizado chamado getByClassThatStartsWith
?
O mesmo seria implementado assim:
Cypress.Commands.add('getByClassThatStartsWith', classPart => {
cy.get(`[class^="${classPart}"]`)
})
E então, seria usado assim:
cy.getByClassThatStartsWith('Messenger_openCloseButton')
|
||
it('Abre e fecha o messenger', () => { | ||
cy.get('button[class^="Messenger_openCloseButton"]').should('be.visible').click() | ||
cy.get('h2').should('contain', 'How can we help you?') |
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.
Veja uma alternativa mais simples.
cy.get('h2').should('contain', 'How can we help you?') | |
cy.contains('h2, 'How can we help you?').should('be.visible') |
A propósito, perceba a verificação pela visibilidade do elemento.
cy.get('button[class^="Messenger_openCloseButton"]').should('be.visible').click() | ||
cy.get('h2').should('contain', 'How can we help you?') | ||
cy.get('button[class^="Messenger_openCloseButton"]').should('be.visible').click() | ||
cy.get('h2').should('not.contain', 'How can we help you?') |
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.
Aqui a verificação correta seria a seguinte:
cy.get('h2').should('not.contain', 'How can we help you?') | |
cy.contains('h2, 'How can we help you?').should('not.exist') |
cy.get('button[class^="Messenger_openCloseButton"]').click() | ||
cy.get('h2').should('contain', 'How can we help you?') | ||
cy.get('#messenger-name').should('be.focused') | ||
cy.get('#messenger-name').should('have.attr', 'required') |
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.
Em vez de repetir o cy.get
, a linha acima podia ser assim:
cy.get('#messenger-name')
.should('be.focused')
.and('have.attr', 'required')
cy.get('h2').should('contain', 'How can we help you?') | ||
cy.get('input[id="messenger-name"]').type('Seu Madruga') | ||
cy.get('#email').type('madruguinha@gmail.com') | ||
cy.get('#message').type('chiforinfola') |
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.
😆 chiforinfola
@@ -0,0 +1,22 @@ | |||
[ |
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.
Não vejo este fixture sendo usada em lugar nenhum.
Se este for o caso, recomendo deletá-la.
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.
A propósito, esta não é a estrutura que o frontend espera.
A estrutura correta é esta.
@@ -0,0 +1 @@ | |||
import './commands' |
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.
import './commands' | |
import './commands' | |
Recomenda-se deixar uma linha em branco ao final de cada arquivo.
Dessa forma, ferramentas como o GitHub não exibem o ícone de No newline at end of file
.
Isso é uma boa prática e convenção a ser seguida.
Scripts Automatizados Usando Cypress - Nível Júnior, aplicação web EngageSphere.