Iniciando Testes: CubagemCarregamentoUiTddTest ── execucao_bipagem.php ────────────────────────────────────── ✅ [PASS] Renderiza hidden input data-cubagem-veiculo para JS ler capacidade do caminhão ✅ [PASS] Renderiza hidden input data-cubagem-carga-total ✅ [PASS] Renderiza veiculo-cubagem-bar-fill (barra animada) ✅ [PASS] Renderiza veiculo-cubagem-frac (fração X/Ym³) ✅ [PASS] Renderiza veiculo-cubagem-pct (percentual) ✅ [PASS] Seção condicional a $cubagemCargaTotal > 0 (oculta quando sem cubagem cadastrada) ✅ [PASS] Seção condicional a $cubagemVeiculo > 0 (oculta quando sem veículo vinculado) ✅ [PASS] Lê cubagem_total do veiculo_snapshot para capacidade do caminhão ✅ [PASS] Não chama json_decode() com valor original possivelmente null (usa ?? "" para garantir string) ✅ [PASS] Usa json_decode($item->dados_adicionais ?? "", true) com null-guard explícito ✅ [PASS] Loop de itens não usa json_decode sem null-guard após o is_string(x ?? "") ── item.js — inicialização ────────────────────────────────── ✅ [PASS] statsIncremental.cubagemBipada declarado em item.js ✅ [PASS] cubagem_unit referenciado em item.js (vem do Presenter via jsItensData) ── item.js — delta incremental ────────────────────────────── ✅ [PASS] _persistirDadosBackground incrementa cubagemBipada com ultimoDelta * cubagem_unit ── item.js — FIX: atualizarBadges antes do early-return ───── ✅ [PASS] item.js contém função atualizarItemModal ✅ [PASS] atualizarItemModal chama this.atualizarBadges() ✅ [PASS] atualizarItemModal tem early-return baseado em $el.length ✅ [PASS] atualizarBadges() aparece ANTES de `if (!$el.length) return` (fix do bug: barra travada com modal fechado) ── item.js — atualizarBadges DOM reads ────────────────────── ✅ [PASS] atualizarBadges lê data-cubagem-veiculo via getElementById ✅ [PASS] atualizarBadges atualiza veiculo-cubagem-bar-fill (largura e cor) ✅ [PASS] atualizarBadges atualiza veiculo-cubagem-frac (texto X,X / Y,Ym³) ✅ [PASS] atualizarBadges usa threshold 95% para cor vermelha (--app-perigo) ✅ [PASS] atualizarBadges usa threshold 80% para cor amarela (--app-alerta) ✅ [PASS] item.js não usa --app-aviso (não existe); variável correta é --app-alerta ✅ [PASS] atualizarBadges usa Math.max(0, cubagemBipada) para não exibir valor negativo --- RESUMO --- Passou: 25 | Falhou: 0 Tests passed