, correção para gerara prévia do romaneio
This commit is contained in:
@@ -115,29 +115,33 @@ agent-browser wait --load networkidle
|
||||
|
||||
Na tela do romaneio:
|
||||
|
||||
A prévia é um `<details>` nativo — abre e fecha **sem JavaScript**, de propósito
|
||||
(quando os assets caem, ela precisa continuar funcionando):
|
||||
|
||||
```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"
|
||||
# 4a. Fechada ao carregar, e o PDF ainda NÃO foi buscado (iframe é loading=lazy):
|
||||
agent-browser eval "(()=>{const d=document.querySelector('details[data-romaneio-target=overlay]'); return d ? 'aberto:'+d.open : 'PREVIA AUSENTE';})()"
|
||||
# esperado: "aberto:false"
|
||||
|
||||
# 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=..."
|
||||
# 4b. Abrir e conferir que o iframe aponta para o PDF:
|
||||
agent-browser eval "document.querySelector('details[data-romaneio-target=overlay] summary').click()"
|
||||
agent-browser eval "(()=>{const d=document.querySelector('details[data-romaneio-target=overlay]'); const f=d.querySelector('iframe'); return 'aberto:'+d.open+' src:'+(f?.getAttribute('src')||'sem src');})()"
|
||||
# esperado: "aberto:true src:/admin/romaneios/<id>/pdf?veiculo=..."
|
||||
|
||||
# 4c. Fechar com Esc:
|
||||
agent-browser press Escape
|
||||
agent-browser eval "getComputedStyle(document.querySelector('[data-romaneio-target=overlay]')).display"
|
||||
# esperado: "none"
|
||||
# 4c. Fechar de novo:
|
||||
agent-browser eval "document.querySelector('details[data-romaneio-target=overlay] summary').click()"
|
||||
|
||||
# 4d. PDF responde:
|
||||
agent-browser eval "fetch(document.querySelector('a[href*=pdf]').href).then(r=>r.status)"
|
||||
# esperado: 200
|
||||
# 4d. O PDF responde e é PDF de verdade (não a página de login):
|
||||
agent-browser eval "(async()=>{const r=await fetch(document.querySelector('details[data-romaneio-target=overlay] iframe').src); const b=await r.blob(); return r.status+' '+b.type+' '+Math.round(b.size/1024)+'KB';})()"
|
||||
# esperado: "200 application/pdf <N>KB"
|
||||
```
|
||||
|
||||
**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).
|
||||
**PASSOU se**: 4a fechada, 4b abre com src do PDF, 4c fecha, 4d devolve
|
||||
`application/pdf`, Teste 0 limpo. **NÃO** clicar em "Reimportar plano" (tem
|
||||
confirmação).
|
||||
|
||||
⚠️ Se 4d devolver `text/html`, a sessão caiu no meio do teste — refaça o login e
|
||||
repita, **não** registre como falha do PDF (já deu falso positivo assim).
|
||||
|
||||
### Caso 4e — Vínculo manual da operação (só leitura)
|
||||
|
||||
@@ -210,6 +214,47 @@ agent-browser open https://teste.reemtransportes.com.br/auth/login
|
||||
**PASSOU se**: cai no dashboard do motorista, valores legíveis sem zoom,
|
||||
Teste 0 limpo. Ao final: `agent-browser set viewport 1280 800`.
|
||||
|
||||
## Caso 9 — Tempo de resposta (performance)
|
||||
|
||||
Mede o tempo real de cada tela e do PDF. Rode logado, com a rede parada (sem
|
||||
outra aba baixando coisa), e compare com a linha de base.
|
||||
|
||||
```bash
|
||||
# Tempo das telas (TTFB | resposta completa | DOM pronto)
|
||||
for u in /dashboard /dashboard/operacoes "/consolidacoes?visao=lista" /admin/romaneios /admin/romaneios/13; do
|
||||
agent-browser open "https://teste.reemtransportes.com.br$u" >/dev/null
|
||||
agent-browser eval "(()=>{const n=performance.getEntriesByType('navigation')[0]; return Math.round(n.responseStart-n.requestStart)+'|'+Math.round(n.responseEnd-n.requestStart)+'|'+Math.round(n.domContentLoadedEventEnd-n.startTime);})()"
|
||||
done
|
||||
```
|
||||
|
||||
```bash
|
||||
# Tempo do PDF (o mais pesado do sistema). Com cache-buster, senão mede o cache.
|
||||
agent-browser eval "(async()=>{const t0=performance.now(); const r=await fetch('/admin/romaneios/13/pdf?veiculo=GADE_002&cb='+Math.random()); const b=await r.blob(); return Math.round(performance.now()-t0)+'ms, '+Math.round(b.size/1024)+' KB';})()"
|
||||
```
|
||||
|
||||
**Linha de base medida em 28/08/2026** (romaneio de 2.047 paradas / 72 veículos,
|
||||
ambiente de teste, acesso pelo domínio com Cloudflare na frente):
|
||||
|
||||
| Alvo | TTFB | Resposta | DOM pronto |
|
||||
|---|---|---|---|
|
||||
| `/dashboard` | 339 ms | 340 ms | 493 ms |
|
||||
| `/dashboard/operacoes` | 168 ms | 251 ms | 402 ms |
|
||||
| `/consolidacoes?visao=lista` | 349 ms | 351 ms | 430 ms |
|
||||
| `/admin/romaneios` | 49 ms | 50 ms | 127 ms |
|
||||
| `/admin/romaneios/13` | 71 ms | 78 ms | 155 ms |
|
||||
| **PDF de 1 veículo** | — | **228 ms** (84 KB) | — |
|
||||
| **PDF de TODOS (72)** | — | **8.947 ms** (1,7 MB) | — |
|
||||
|
||||
**Orçamento — FALHOU se passar de**: 1 s de TTFB em qualquer tela; 1 s no PDF de
|
||||
um veículo (é ele que a prévia carrega, tem que abrir na hora); 30 s no PDF
|
||||
completo (acima disso o proxy corta a conexão e o operador recebe erro).
|
||||
|
||||
⚠️ **Ponto de atenção conhecido**: o PDF de todos os veículos leva ~9 s e segura
|
||||
um processo do servidor esse tempo todo. Ainda dentro do aceitável para uma ação
|
||||
manual e pontual, mas é o primeiro candidato a virar download em segundo plano se
|
||||
o volume crescer ou se dois operadores baixarem ao mesmo tempo. **Não** compare
|
||||
esse número com o do PDF de um veículo: são unidades diferentes (1 folha × 72).
|
||||
|
||||
## Relatório final (obrigatório)
|
||||
|
||||
Terminar a execução com uma tabela e a lista de falhas:
|
||||
@@ -225,6 +270,7 @@ Terminar a execução com uma tabela e a lista de falhas:
|
||||
| 6 Admin | … | … |
|
||||
| 7 Notificações | … | … |
|
||||
| 8 PIN motorista | … | … |
|
||||
| 9 Performance | … | tabela de tempos |
|
||||
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user