232 lines
8.6 KiB
Markdown
232 lines
8.6 KiB
Markdown
# Bateria de testes — Reem Notas (ambiente de teste)
|
|
|
|
Roteiro de regressão para ser executado por um agente (inclusive modelos menores)
|
|
com a skill `agent-browser`. Não é preciso conhecer o projeto: siga os casos na
|
|
ordem e preencha o relatório do final.
|
|
|
|
## Regras de segurança (leia antes de tudo)
|
|
|
|
1. **Somente leitura + interações seguras.** É PROIBIDO:
|
|
- clicar em qualquer botão que abra confirmação (`Tem certeza?`, `Rebuscar o
|
|
plano?` etc.) — se a confirmação abrir por engano, cancele;
|
|
- finalizar, arquivar, excluir ou registrar pagamento de consolidação;
|
|
- criar, editar ou excluir usuários, perfis, contatos, grupos ou eventos;
|
|
- qualquer envio de WhatsApp/notificação.
|
|
- Formulários só podem ser preenchidos nos casos em que o roteiro mandar
|
|
explicitamente (login e campos de busca).
|
|
2. **Ambiente**: `https://teste.reemtransportes.com.br` (nunca o domínio de
|
|
produção).
|
|
3. **Avisos do ambiente de teste** (não são falhas):
|
|
- Não há pagamentos registrados (`pago_em` vazio) — gráficos e tabelas de
|
|
pagamento vazios são o esperado;
|
|
- O deploy é manual: o site pode estar atrás do código do repositório. Se um
|
|
caso falhar por algo que parece "código novo que não chegou lá", registre
|
|
como `DEPLOY?` em vez de `FALHOU`.
|
|
4. Screenshots de evidência vão para o diretório de scratchpad da sessão.
|
|
|
|
## Credenciais
|
|
|
|
- **Admin (web)**: e-mail `admin@reem.com`, senha `Reem@2026!` — em
|
|
`https://teste.reemtransportes.com.br/auth/login`, aba "E-mail".
|
|
- **Motorista**: aba "PIN Motorista" da mesma tela (PIN de 4 dígitos; se nenhum
|
|
PIN de teste for fornecido na tarefa, marque o caso 8 como `PULADO`).
|
|
|
|
## Teste 0 — transversal (rodar em TODA página visitada)
|
|
|
|
Depois de abrir cada página do roteiro, sempre rode:
|
|
|
|
```bash
|
|
agent-browser errors # deve vir vazio
|
|
agent-browser network requests | grep -E " (4[0-9]{2}|5[0-9]{2})$" # deve vir vazio
|
|
```
|
|
|
|
- Qualquer erro de console JS ⇒ FALHOU (anote a mensagem).
|
|
- Qualquer request com status ≥ 400 ⇒ FALHOU (anote a URL — um asset
|
|
`*_controller-*.js` com 404 significa Stimulus quebrado na página inteira; foi
|
|
exatamente assim que o bug do preview do romaneio passou despercebido).
|
|
- Exceção: chamadas para domínios de terceiros (cloudflareinsights etc.) com
|
|
falha não reprovam o caso; registre como observação.
|
|
|
|
## Roteiro
|
|
|
|
### Caso 1 — Login por e-mail
|
|
|
|
```bash
|
|
agent-browser open https://teste.reemtransportes.com.br/auth/login
|
|
agent-browser snapshot -i # localizar refs de E-mail, Senha e Entrar
|
|
agent-browser fill @eX "admin@reem.com"
|
|
agent-browser fill @eY "Reem@2026!"
|
|
agent-browser press Enter
|
|
agent-browser wait --load networkidle
|
|
agent-browser get url
|
|
```
|
|
|
|
**PASSOU se**: a URL final é `/dashboard` (ou a home do perfil) e o Teste 0 passa.
|
|
Obs.: use `press Enter` — o clique no botão às vezes não navega no primeiro clique.
|
|
|
|
### Caso 2 — Dashboards
|
|
|
|
```bash
|
|
agent-browser open https://teste.reemtransportes.com.br/dashboard
|
|
agent-browser eval "document.querySelectorAll('canvas').length" # gráficos Chart.js
|
|
agent-browser eval "document.documentElement.scrollWidth <= window.innerWidth" # sem overflow horizontal
|
|
agent-browser screenshot dashboard.png
|
|
agent-browser open https://teste.reemtransportes.com.br/dashboard/operacoes
|
|
# repetir os três comandos acima (operacoes.png)
|
|
```
|
|
|
|
**PASSOU se**: as duas páginas carregam, há pelo menos 1 `canvas` em cada, sem
|
|
overflow horizontal, Teste 0 limpo.
|
|
|
|
**Versão mobile** (obrigatória no dashboard):
|
|
|
|
```bash
|
|
agent-browser set device "iPhone 16"
|
|
agent-browser open https://teste.reemtransportes.com.br/dashboard
|
|
agent-browser eval "document.documentElement.scrollWidth <= window.innerWidth"
|
|
agent-browser screenshot dashboard-mobile.png
|
|
agent-browser set viewport 1280 800 # voltar ao desktop
|
|
```
|
|
|
|
**PASSOU se**: sem scroll horizontal no mobile (regra do projeto: nada de tabela
|
|
que exija zoom).
|
|
|
|
### Caso 3 — Consolidações (abas e filtros)
|
|
|
|
```bash
|
|
agent-browser open "https://teste.reemtransportes.com.br/consolidacoes?visao=lista"
|
|
agent-browser snapshot -i | head -40
|
|
agent-browser open "https://teste.reemtransportes.com.br/consolidacoes?visao=motoristas"
|
|
agent-browser get url
|
|
```
|
|
|
|
**PASSOU se**: as duas visões abrem sem erro; ao trocar de visão os filtros da URL
|
|
se mantêm (as visões são abas da MESMA tela, não telas separadas); Teste 0 limpo.
|
|
|
|
### Caso 4 — Romaneios (inclui o preview)
|
|
|
|
```bash
|
|
agent-browser open https://teste.reemtransportes.com.br/admin/romaneios
|
|
agent-browser snapshot -i | head -30 # lista de romaneios
|
|
# abrir o primeiro romaneio da lista (link do item):
|
|
agent-browser click @eX
|
|
agent-browser wait --load networkidle
|
|
```
|
|
|
|
Na tela do romaneio:
|
|
|
|
```bash
|
|
# 4a. O modal de prévia NÃO pode estar visível no carregamento:
|
|
agent-browser eval "const o=document.querySelector('[data-romaneio-target=overlay]'); o?getComputedStyle(o).display:'sem overlay'"
|
|
# esperado: "none"
|
|
|
|
# 4b. Abrir a prévia:
|
|
agent-browser snapshot -i | grep -i "prévia" # achar o botão "Ver prévia do PDF"
|
|
agent-browser click @eY
|
|
agent-browser eval "const o=document.querySelector('[data-romaneio-target=overlay]'); getComputedStyle(o).display + ' src:' + (document.querySelector('iframe[data-romaneio-target=preview]')?.src||'')"
|
|
# esperado: "flex src:https://.../pdf?veiculo=..."
|
|
|
|
# 4c. Fechar com Esc:
|
|
agent-browser press Escape
|
|
agent-browser eval "getComputedStyle(document.querySelector('[data-romaneio-target=overlay]')).display"
|
|
# esperado: "none"
|
|
|
|
# 4d. PDF responde:
|
|
agent-browser eval "fetch(document.querySelector('a[href*=pdf]').href).then(r=>r.status)"
|
|
# esperado: 200
|
|
```
|
|
|
|
**PASSOU se**: 4a="none", 4b="flex" com src preenchido, 4c="none", 4d=200,
|
|
Teste 0 limpo. **NÃO** clicar em "Reimportar plano" (tem confirmação).
|
|
|
|
### Caso 4e — Vínculo manual da operação (só leitura)
|
|
|
|
O bloco "Operação do mês" tem que aparecer em todo romaneio, e o formulário
|
|
precisa funcionar **sem JavaScript** (é `<details>` nativo + form comum):
|
|
|
|
```bash
|
|
agent-browser eval "(()=>{const d=[...document.querySelectorAll('details')].find(x=>x.querySelector('select[name=operacao_tabela]')); return d ? 'existe | aberto:'+d.open+' | opcoes:'+d.querySelectorAll('option').length : 'AUSENTE';})()"
|
|
```
|
|
|
|
⚠️ Procure pelo `select[name=operacao_tabela]`, **não** pelo texto "Operação do
|
|
mês": esse rótulo fica FORA do `<details>` e é renderizado em maiúsculas pelo
|
|
CSS, então busca por texto dá falso negativo (já aconteceu num diagnóstico).
|
|
|
|
**PASSOU se**: o bloco existe; num romaneio **sem** operação ele vem `aberto:true`
|
|
(a pendência fica à vista) e num **com** operação vem `aberto:false`; a lista tem
|
|
mais de uma `option`.
|
|
⚠️ **NÃO enviar o formulário** — vincular altera dados do romaneio. Só conferir
|
|
que o controle está lá e abre.
|
|
|
|
### Caso 5 — Planilha SimpliRoute
|
|
|
|
```bash
|
|
agent-browser open https://teste.reemtransportes.com.br/admin/planilha_simpli_route
|
|
agent-browser snapshot -i | head -20
|
|
```
|
|
|
|
**PASSOU se**: a tela abre com a lista de operações disponíveis, Teste 0 limpo.
|
|
(Não é preciso baixar o arquivo.)
|
|
|
|
### Caso 6 — Telas de admin
|
|
|
|
Abrir cada URL e rodar o Teste 0:
|
|
|
|
```
|
|
/admin/usuarios
|
|
/admin/perfis
|
|
/admin/configuracoes
|
|
/admin/auditoria_logs
|
|
/admin/edicao_lancamento
|
|
```
|
|
|
|
**PASSOU se**: todas abrem com conteúdo (título + tabela/cards), sem erro.
|
|
**NÃO** editar nada nessas telas.
|
|
|
|
### Caso 7 — Notificações
|
|
|
|
Abrir cada URL e rodar o Teste 0:
|
|
|
|
```
|
|
/admin/contatos
|
|
/admin/grupos
|
|
/admin/eventos
|
|
/admin/envios
|
|
```
|
|
|
|
**PASSOU se**: todas abrem, sem erro. **NÃO** disparar envio nem mexer no
|
|
WhatsApp/sessão.
|
|
|
|
### Caso 8 — Login PIN do motorista (mobile)
|
|
|
|
Somente se um PIN de teste foi fornecido na tarefa; senão marcar `PULADO`.
|
|
|
|
```bash
|
|
agent-browser set device "iPhone 16"
|
|
agent-browser open https://teste.reemtransportes.com.br/auth/login
|
|
# clicar na aba "PIN Motorista", digitar o PIN, entrar
|
|
```
|
|
|
|
**PASSOU se**: cai no dashboard do motorista, valores legíveis sem zoom,
|
|
Teste 0 limpo. Ao final: `agent-browser set viewport 1280 800`.
|
|
|
|
## Relatório final (obrigatório)
|
|
|
|
Terminar a execução com uma tabela e a lista de falhas:
|
|
|
|
| Caso | Resultado | Evidência |
|
|
|------|-----------|-----------|
|
|
| 0 (por página) | PASSOU/FALHOU | página + erro |
|
|
| 1 Login | PASSOU/FALHOU/DEPLOY?/PULADO | screenshot |
|
|
| 2 Dashboards | … | … |
|
|
| 3 Consolidações | … | … |
|
|
| 4 Romaneios/preview | … | … |
|
|
| 5 Planilha | … | … |
|
|
| 6 Admin | … | … |
|
|
| 7 Notificações | … | … |
|
|
| 8 PIN motorista | … | … |
|
|
|
|
Depois da tabela, listar **somente as falhas**, cada uma com: URL, o que era
|
|
esperado, o que aconteceu (mensagem de erro/console) e o caminho do screenshot.
|
|
Se tudo passou, dizer isso em uma linha. Encerrar com `agent-browser close`.
|