Visão Geral
## 🧩 Sobre o Sistema
Este projeto automatiza os testes de um sistema **PDV (Ponto de Venda)** completo, utilizado por empresas para realizar operações comerciais integradas com a retaguarda. O sistema é **100% baseado na web (nuvem)** e possui interface construída sobre o framework **Sencha ExtJS 4.2**, com arquitetura modular e altamente interligada.
## 🧱 Módulos Atendidos
A automação cobre os principais módulos do sistema:
- **📄 Módulo Fiscal:** Emissão e cancelamento de cupons fiscais, integração com SAT/NFC-e, geração de XMLs e controles tributários.
- **👥 Módulo de Parceiros:** Cadastro, consulta e edição de clientes, fornecedores e transportadoras.
- **💰 Módulo Financeiro:** Fluxo de caixa, contas a pagar/receber, aprovação de valores e operações de cobrança.
- **📦 Módulo de Estoque:** Entrada e saída de produtos, controle de saldos, movimentações e inventário.
- **🛍️ Módulo de Vendas (PDV):** Operações de venda em tempo real, autenticação com PIN, cancelamentos e reimpressões.
Esses módulos são **interdependentes**: uma venda impacta o estoque, gera registros financeiros e pode afetar dados fiscais — o que exige validações em cascata em vários pontos do sistema.
## 🎯 Objetivo da Automação
A automação com **Cypress** tem como objetivos principais:
- ✅ Aumentar a confiabilidade nas rotinas críticas de negócio.
- ✅ Detectar falhas com antecedência após atualizações de componentes.
- ✅ Garantir que os fluxos ponta a ponta funcionem corretamente.
- ✅ Reduzir a necessidade de testes manuais repetitivos.
- ✅ Documentar comandos e padrões para facilitar onboarding e manutenção.
## 🛠️ Tecnologias Utilizadas
- **Cypress** para testes end-to-end (E2E)
- **Sencha ExtJS 4.2** como framework da interface
- **Node.js** como runtime dos testes
- **BookStack** como repositório de documentação
- Integrações com **Jenkins** ou **GitHub Actions** para CI/CD
## ⚙️ Características Técnicas
- O sistema utiliza **componentes dinâmicos e aninhados** do ExtJS (grids, comboBoxes, menus flutuantes, etc).
- O Cypress acessa elementos com **seletores CSS complexos**, encapsulados em `Cypress.env()` para organização e reuso.
- **Comandos personalizados (`Cypress.Commands`)** são amplamente utilizados para login, navegação e manipulação de elementos.
## 🚀 Escopo Atual da Automação
A cobertura atual inclui:
- Autenticação de usuários (PDV, Caixa, Retaguarda)
- Abertura e finalização de vendas
- Emissão e cancelamento de cupons fiscais
- Cadastro e manutenção de parceiros
- Controle de estoque: entrada, movimentação, saída
- Contas a pagar/receber, fluxo de caixa e aprovações
## 🧭 Próximos Passos
- Expandir cobertura para cenários de exceção
- Utilizar massa dinâmica de dados via API
- Integrar validações visuais (screenshots e vídeos)
- Criar guias técnicos para escrita de testes