Skip to main content
O QA de desktop do Slack no Mantis é a trilha de interface real para bugs da classe do Slack que precisam de um desktop Linux, recuperação por VNC, Slack Web, um Gateway real do OpenClaw, capturas de tela, vídeos e um comentário de evidências no PR. Use-o quando testes unitários ou a trilha live sem interface gráfica do Slack não puderem comprovar o bug.

Modelo de armazenamento

O Mantis usa três camadas de armazenamento:
  • Imagem do provedor - gerenciada pelo Crabbox, armazenada na conta do provedor de nuvem. Contém recursos da máquina (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, ferramentas de compilação nativas) e diretórios de cache vazios.
  • Estado da concessão aquecida - gerenciado pela sessão atual do operador. Pode conter um perfil de navegador autenticado, /var/cache/crabbox/pnpm e um checkout do código-fonte preparado enquanto a concessão estiver ativa.
  • Artefatos do Mantis - gerenciados pela execução do OpenClaw. Ficam em .artifacts/qa-e2e/mantis/...; o GitHub Actions os envia, e o aplicativo do Mantis para GitHub publica as evidências em linha no PR.
Nunca incorpore segredos, cookies do navegador, estado de login do Slack, checkouts do repositório, node_modules ou dist/ em uma imagem do provedor.

Disparo pelo GitHub

Execute o fluxo de trabalho a partir de main:
candidate_ref é restrito porque o fluxo de trabalho usa credenciais reais: ele deve ser resolvido para um ancestral da main atual, uma tag de versão ou o HEAD de um PR aberto em openclaw/openclaw. O fluxo de trabalho produz:
  • o artefato enviado mantis-slack-desktop-smoke-<run-id>-<attempt>
  • um comentário em linha no PR pelo aplicativo do Mantis para GitHub
  • slack-desktop-smoke.png, slack-desktop-smoke.mp4
  • slack-desktop-smoke-preview.gif, slack-desktop-smoke-change.mp4
  • mantis-slack-desktop-smoke-summary.json, mantis-slack-desktop-smoke-report.md
  • logs remotos: slack-desktop-command.log, openclaw-gateway.log, chrome.log, ffmpeg.log
O comentário do PR é atualizado no mesmo local por meio do marcador oculto <!-- mantis-slack-desktop-smoke -->.

CLI local

Comprovação a frio a partir do código-fonte:
Mantenha a VM para recuperação por VNC:
Abra o VNC:
Reutilize uma concessão aquecida:
Use --hydrate-mode prehydrated somente quando o espaço de trabalho remoto reutilizado já tiver node_modules e um dist/ compilado; caso contrário, o Mantis falha de forma segura. Comprove a interface nativa de aprovação do Slack:
--approval-checkpoints é mutuamente exclusivo com --gateway-setup. Ele executa os cenários opcionais slack-approval-exec-native e slack-approval-plugin-native, a menos que você forneça um --scenario explícito de ponto de verificação de aprovação; outros cenários do Slack são rejeitados antes da inicialização da VM. O executor de QA do Slack grava cada arquivo JSON de ponto de verificação a partir da mensagem real da API do Slack observada e, em seguida, o observador remoto renderiza essa mensagem em approval-checkpoints/<scenario>-pending.png e approval-checkpoints/<scenario>-resolved.png. A execução falha se qualquer JSON de ponto de verificação, evidência de mensagem, JSON de confirmação ou captura de tela renderizada estiver ausente ou vazio. As concessões a frio do GitHub Actions não têm cookies do Slack Web, portanto a captura do navegador pode terminar na tela de login do Slack. Para a comprovação dos pontos de verificação de aprovação, confie nas imagens renderizadas dos pontos de verificação e nos artefatos de QA do Slack, em vez de slack-desktop-smoke.png. Use uma concessão aquecida mantida, com um perfil do Slack Web autenticado manualmente, somente quando a própria captura de tela do navegador precisar mostrar o Slack Web.

Modos de hidratação

O GitHub Actions sempre prepara o checkout candidato antes da execução da VM. O armazenamento do pnpm é armazenado em cache por sistema operacional, versão do Node e arquivo de lock. A execução source da VM também reutiliza /var/cache/crabbox/pnpm quando presente.

Interpretação dos tempos

mantis-slack-desktop-smoke-report.md inclui os tempos das fases:
  • crabbox.warmup - inicialização do provedor de nuvem, prontidão do desktop/navegador e SSH.
  • crabbox.inspect - consulta dos metadados da concessão.
  • credentials.prepare - aquisição da concessão de credenciais do Convex.
  • crabbox.remote_run - sincronização, inicialização do navegador, instalação/compilação do OpenClaw ou validação da hidratação, inicialização do Gateway, captura de tela e gravação de vídeo.
  • artifacts.copy - rsync de volta a partir da VM.
crabbox.remote_run pode exibir accepted quando o Crabbox retorna um status remoto diferente de zero, mas o Mantis copiou metadados que comprovam que a configuração do Gateway do OpenClaw foi concluída ou que o próprio comando de QA do Slack foi encerrado com êxito. Considere accepted como aprovação com explicação, não como cenário com falha. Se uma execução estiver lenta:
  • O aquecimento predomina: pré-incorpore ou promova uma imagem melhor do provedor do Crabbox.
  • remote_run predomina em source: use uma concessão aquecida, melhore a reutilização do armazenamento do pnpm ou mova os pré-requisitos da máquina para a imagem do provedor.
  • remote_run predomina em prehydrated: o espaço de trabalho remoto não estava realmente pronto, ou a configuração do Gateway/navegador/Slack está lenta.
  • A cópia de artefatos predomina: inspecione o tamanho do vídeo e o conteúdo do diretório de artefatos.

Lista de verificação de evidências

Um bom comentário de PR mostra:
  • ID do cenário e SHA candidato
  • URL da execução do GitHub Actions e URL do artefato
  • captura de tela em linha do ponto de verificação de aprovação ou uma captura de tela do Slack Web de uma concessão aquecida autenticada
  • prévia animada em linha, quando disponível
  • links para o MP4 completo e o MP4 recortado
  • status de aprovação/falha e o resumo de tempos do relatório
Não faça commit de capturas de tela ou vídeos no repositório. Mantenha-os nos artefatos do GitHub Actions ou no comentário do PR.

Tratamento de falhas

Se o fluxo de trabalho falhar antes da execução da VM, inspecione primeiro o job do Actions. Causas comuns: candidate_ref não confiável, segredos de ambiente ausentes ou falha na instalação/compilação do candidato. Se a execução da VM falhar, mas as capturas de tela tiverem sido copiadas de volta, inspecione:
Se a execução manteve a concessão, abra o VNC com o comando crabbox vnc ... do relatório e interrompa a concessão quando terminar:
Se o login do Slack tiver expirado, corrija-o no VNC em uma concessão mantida e execute novamente com --lease-id. Não incorpore esse perfil de navegador em uma imagem do provedor.

Relacionados