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/pnpme 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.
node_modules ou dist/ em uma imagem do provedor.
Disparo pelo GitHub
Execute o fluxo de trabalho a partir demain:
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.mp4slack-desktop-smoke-preview.gif,slack-desktop-smoke-change.mp4mantis-slack-desktop-smoke-summary.json,mantis-slack-desktop-smoke-report.md- logs remotos:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
CLI local
Comprovação a frio a partir do código-fonte:--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_runpredomina emsource: 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_runpredomina emprehydrated: 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
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:
crabbox vnc ...
do relatório e interrompa a concessão quando terminar:
--lease-id. Não incorpore esse perfil de navegador em uma imagem do provedor.