Skip to content

test(e2e): sistema ocupado confirma o pedido na aba que pediu - #50

Merged
MatheusNespolo merged 1 commit into
mainfrom
fix/e2e-ocupado-sem-depender-do-broadcast
Oct 8, 2026
Merged

MatheusNespolo merged 1 commit into
mainfrom
fix/e2e-ocupado-sem-depender-do-broadcast

Conversation

@MatheusNespolo

Copy link
Copy Markdown
Owner

O que muda

Corrige a falha do E2E3 "sistema ocupado" no CI da main (job 112973085496).

Causa (pelo trace do CI): a segunda aba (segunda) perde o WebSocket cerca de 14 s depois de conectar, quando termina de carregar a cena 3D (SwiftShader, runner com pouca CPU), e reconecta cerca de 1 s depois. O pedido de A acontece justamente nesse intervalo. Como o dashboard só repete o histórico na primeira conexão (historicoSemeado), o evento "Peça A solicitada" nunca chega ao histórico dessa aba, e a contagem fica parada nas duas tentativas.

Não é o broker MQTT (diagnóstico do Copilot): os ECONNREFUSED 127.0.0.1:1 vêm do projeto servidor-sem-broker, que aponta de propósito para uma porta fechada; o simulador não usa MQTT. Também não é o engine.io 6.6.11 do #48: a mesma queda aparece localmente com o 6.6.9.

Correção: a confirmação do pedido é lida na aba que pediu (principal). A segunda aba só precisa ver o estado ocupado, que chega por status ou pelo estado_inicial da reconexão, e enviar o pedido de B, cuja recusa é resposta direta ao próprio socket.

Como validar

  • Local: o trace mostra a mesma queda e reconexão da segunda aba, e todas as asserções passam (cerca de 32 s). O fechamento do contexto estourou o limite de 90 s por lentidão local, problema já conhecido.
  • CI: job frontend-tests deste PR.

Observação (fora do escopo)

Um dashboard que reconecta não mostra no Log os eventos ocorridos enquanto estava offline; o estado e o estoque são restaurados. Se isso importar na bancada, dá para mesclar o estado_inicial.eventos na reconexão, sem duplicar.

Checklist

  • Rodei as validações do Guia de Contribuição (scripts/precommit-checks) — não executado; só teste alterado
  • Não há senhas, tokens, .env ou secrets.h na mudança
  • Mudança só em teste; sem impacto em documentação
  • Mensagens de commit seguem o padrão tipo: descrição
  • Informei o que não consegui validar: a suíte completa localmente

🤖 Generated with Claude Code

No CI, a segunda aba às vezes perde o WebSocket enquanto termina de carregar
a cena 3D (renderização por software) e reconecta logo depois; como o
dashboard não repete o histórico numa reconexão, o 'Peça A solicitada'
emitido nesse intervalo nunca aparecia nela. A confirmação passa a ser lida
na aba principal; a segunda aba só precisa do estado ocupado (que chega por
'status' ou pelo 'estado_inicial' da reconexão) e da recusa do pedido de B.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MatheusNespolo
MatheusNespolo merged commit d08f339 into main Oct 8, 2026
13 of 14 checks passed
@MatheusNespolo
MatheusNespolo deleted the fix/e2e-ocupado-sem-depender-do-broadcast branch October 8, 2026 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant