Simplificando Testes: Por que Talvez Você Não Precise de Cucumber e Page Object ao testar usando Cypress
Tags: cypress, cucumber, qa, testing
Published: 2023-12-18 16:43:32

# Explorando a relação entre Cypress, Cucumber (BDD) e PageObject

Olá! Eu sou o Yuri.

Hoje vamos discutir a interação entre Cypress, Cucumber (BDD) e PageObject no contexto de testes automatizados. Recentemente, tenho dedicado tempo para aprimorar meus conhecimentos em testes automatizados, especialmente no que diz respeito ao Cypress. Durante a formação que participei esse ano (FormaNT), adquiri uma base de conhecimento em Selenium, Cucumber e BDD. Inclusive, compartilhei essas experiências em um vídeo no meu canal, onde apresento um escopo de projeto relacionado a Cucumber: [TDD e BDD: Como esses conceitos se relacionam com Testes de Software](https://www.youtube.com/watch?v=5At_YphI_-Y).

Ao explorar o Cypress, notei uma conexão direta entre Cypress e Selenium, uma ferramenta que já conhecia e havia utilizado com o Cucumber. Paralelamente, percebi que muitos dos conteudos de aprendizado que encontrei relacionado ao Cypress também enfatizavam e traziam o conceito de PageObject.

Enquanto buscava integrar o Cucumber ao Cypress, percebi que, embora o Cypress facilite muitas coisas, a introdução do PageObject tornava a implementação mais complexa. Isso me fez questionar a utilidade do PageObject em projetos que poderiam ser mais eficientes sem ele.

Durante essa jornada, Busquei conteudos que comentavam esse ponto que observei, e acabei encontrando uma live muito interessante, que me ajudou a contextualizar esse ponto. Você pode assisti-la aqui: [Por que QAs usam Page Objects com Cypress?](https://www.youtube.com/watch?v=VYG-gzA1ahY).

Com todo conhecimento adiquirido nessas pesquisas, cheguei a alguns entendimentos, e que gostaria de compartilha-los para que possamos refletir nos nossos conceitos de qualidade.

## 1. Cucumber com Cypress: É a combinação ideal?

Desde o início dos meus estudos com Cypress, considerei a implementação do Cucumber, pois o vejo como um excelente framework. No entanto, ao estudar o Cypress por si só, percebi que a utilização do Cucumber poderia ser redundante, uma vez que a estrutura do Cypress já permite uma diversificação eficiente dos cenários e contextos de teste. A integração do Cucumber dependerá do projeto e da importância dos passos definidos.

Em breve, vou compartilhar um vídeo demonstrando como integrar o Cucumber com o Cypress. No entanto, é fundamental avaliar se a utilização do Cucumber é realmente necessária, considerando as capacidades nativas do Cypress.

## 2. Utilização de PageObject

A utilização do PageObject, especialmente no contexto do Cypress, pode introduzir complexidade desnecessária. A própria ferramenta oferece funcionalidades, como Commands, que permitem a criação de funções chamadas apenas nos testes principais e podem ser reutilizadas conforme necessário. Em projetos extensos, é possível segmentar os Commands para áreas específicas, como Login ou Cadastro, seguindo o conceito de "Função-Teste" no ambiente Cypress.

## 3. Aprofundando o conhecimento: Application Actions

O blog do Cypress apresenta um artigo relevante sobre a relação 
entre PageObject e uma abordagem baseada em Application Actions. Essa reflexão visa aprofundar o entendimento sobre as diferentes abordagens e incentivar uma revisão da forma como aplicamos esses conceitos. Ambas as abordagens são válidas, e a escolha entre usar ou não o PageObject deve ser orientada pelas necessidades específicas do projeto. 
Compreender os conceitos da ferramenta, assim como a melhor forma de implementar, pode nos levar a um caminho no qual podemos decidir a utilização ou não tanto dos Application Actions quanto dos pageObjects 
Voces podem ver o artigo para uma compreensão melhor a seguir [Application Actions: Use Them Instead of Page Objects](https://www.cypress.io/blog/2019/01/03/stop-using-page-objects-and-start-using-app-actions)

Essas reflexões visam aprimorar nossos conceitos de qualidade e proporcionar uma visão mais clara sobre a implementação eficiente de testes automatizados. Fique atento para futuras discussões e compartilhamento de conhecimento!