https://github.com/joaolucasp/test-automation-cypress-cucumber
Web and API Automation Testing for the PLARD Selection Process.
https://github.com/joaolucasp/test-automation-cypress-cucumber
automated-testing bdd cucumber cypress typescript
Last synced: about 1 month ago
JSON representation
Web and API Automation Testing for the PLARD Selection Process.
- Host: GitHub
- URL: https://github.com/joaolucasp/test-automation-cypress-cucumber
- Owner: joaolucasp
- Created: 2024-10-25T02:41:14.000Z (6 months ago)
- Default Branch: dev
- Last Pushed: 2024-10-25T02:53:01.000Z (6 months ago)
- Last Synced: 2024-10-26T16:26:13.133Z (6 months ago)
- Topics: automated-testing, bdd, cucumber, cypress, typescript
- Language: TypeScript
- Homepage:
- Size: 134 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto de Automação de Testes: Test-automation-cypress-cucumber
Este repositório é um projeto de automação de testes desenvolvido com o framework Cypress e a biblioteca Cucumber. O Cypress é uma ferramenta robusta para automação de testes end-to-end, ideal para testar aplicações web e APIs. Já o Cucumber oferece uma abordagem de testes orientada a comportamento (BDD - Behavior Driven Development), utilizando linguagem Gherkin para escrever cenários de teste em uma estrutura legível e acessível a todos os envolvidos.
No projeto, os testes foram escritos em TypeScript (TS), proporcionando tipagem estática e melhor manutenção do código.
___### Testes GUI (Interface Gráfica do Usuário)
1. **Realizar a busca de um produto** - Busca um produto no sistema e verifica se os resultados exibidos são relevantes.
2. **Incluir produto no carrinho** - Adiciona um produto específico ao carrinho de compras e confirma a inclusão.
3. **Validar produtos no carrinho na tela de pagamento** - Garante que os produtos selecionados estejam presentes e corretos na tela de pagamento.### Testes de API
1. **Buscar produto (GET)** - Valida a exibição de produtos conforme os critérios de busca e verifica o status code `200`.
2. **Atualizar imagem de um produto (POST)** - Garante que a imagem do produto foi atualizada corretamente, valida o ID da nova imagem inserida e o status code `200`.___
## 🖥️ Pré-requisitos
Para executar o projeto, é necessário ter **Node.js** e **npm** instalados.
> **Versões utilizadas**:
> - Node.js: `v22.3.0`
> - npm: `10.8.1`Recomenda-se usar essas versões ou posteriores para evitar incompatibilidades.
___
## 🏗️ Arquitetura do Projeto e Padrão de Organização
Este projeto é organizado em duas principais categorias de teste: **testes de API** e **testes de GUI (Graphical User Interface)**.
### Estrutura de Pastas
- **`e2e`**: Contém todos os testes end-to-end.
- **`features`**: Guarda as regras de negócio em cenários escritos em Gherkin.
- **`helpers`**: Fornece classes auxiliares que geram e manipulam dados para testes.
- **`services`**: Gerencia toda a lógica de integração com as APIs fornecidas.### Detalhamento da Pasta `features`
A pasta `features` é organizada em subpastas que representam diferentes camadas e responsabilidades da aplicação de teste.
- **components**: Armazena arquivos e classes responsáveis por lidar com eventos e comportamento de componentes específicos da interface, como navbar, footer, etc.
- **pages**: Armazena as páginas automatizadas da aplicação. Cada página possui:
- **Page Objects**: Representam a página e seus elementos, responsáveis por interagir com a interface. Podem ou não conterem component-objects.
- **Component Objects**: Objetos específicos de componentes da página, geralmente reutilizados em várias páginas.
- **Locators**: Identificadores dos elementos da página.
- **Assertions**: Classe que valida os resultados após a execução do teste.
- **managers**: Atua como uma camada intermediária entre os testes e os serviços externos (APIs). Ao invés dos testes chamarem os serviços diretamente, eles interagem com essa camada, promovendo desacoplamento e melhor modularidade.### Detalhamento da Pasta `services`
Na pasta `services`, os módulos do sistema estão organizados por funcionalidade:
- **account** e **product**: Cada módulo é responsável por realizar requisições e tratar dados correspondentes às funcionalidades de conta e produtos.Essa organização proporciona uma estrutura modular, permitindo fácil manutenção e escalabilidade à medida que novos testes e funcionalidades são adicionados.
___
## 🧪 Scripts
Para facilitar a execução de testes específicos por funcionalidade, você pode utilizar os comandos abaixo. Cada script está configurado para executar uma funcionalidade específica dentro do projeto.
### Testes de API:
``test:api:search-product`` - Buscar produto via API
``test:api:product-update`` - Atualizar imagem de um produto via API
### Testes de Interface Gráfica (GUI - Web)
``test:web:add-product-to-cart`` - Adicionar produto ao carrinho
``test:web:product-checkout`` - Validar produtos no carrinho na tela de pagamento
``test:web:search-product`` - Buscar produto na interface gráfica (GUI)
Para executar qualquer um dos scripts, utilize o comando: npm run
___
## 🤝 Colaboradores
Agradecemos à(s) seguinte(s) pessoa(s) que contribuíu(ram) para este projeto: