Modello di archiviazione
Mantis utilizza tre livelli di archiviazione:- Immagine del provider - gestita da Crabbox, archiviata nell’account del provider cloud. Contiene le funzionalità della macchina (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, strumenti di compilazione nativi) e directory della cache vuote.
- Stato del lease attivo - gestito dalla sessione dell’operatore corrente. Può contenere un
profilo del browser con accesso effettuato,
/var/cache/crabbox/pnpme un checkout del codice sorgente preparato finché il lease è attivo. - Artefatti Mantis - gestiti dall’esecuzione OpenClaw. Si trovano in
.artifacts/qa-e2e/mantis/...; GitHub Actions li carica e la GitHub App Mantis inserisce nella PR un commento con le prove incorporate.
node_modules o dist/ in un’immagine del provider.
Avvio da GitHub
Esegui il workflow damain:
candidate_ref è soggetto a restrizioni perché il workflow utilizza credenziali reali: deve
risolversi nell’ascendenza del main corrente, in un tag di rilascio o nell’head di una PR aperta in
openclaw/openclaw.
Il workflow produce:
- artefatto caricato
mantis-slack-desktop-smoke-<run-id>-<attempt> - commento incorporato nella PR dalla GitHub App Mantis
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- log remoti:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
CLI locale
Prova a freddo dal codice sorgente:--hydrate-mode prehydrated solo quando lo spazio di lavoro remoto riutilizzato dispone già
di node_modules e di una directory dist/ compilata; in caso contrario Mantis interrompe l’esecuzione in modo sicuro.
Dimostra l’interfaccia utente nativa di approvazione di Slack:
--approval-checkpoints è incompatibile con --gateway-setup. Esegue
gli scenari facoltativi slack-approval-exec-native e slack-approval-plugin-native,
a meno che non venga passato uno --scenario esplicito per un punto di controllo dell’approvazione; gli altri
scenari Slack vengono rifiutati prima dell’avvio della VM. Il runner QA di Slack scrive
ogni file JSON del punto di controllo dal messaggio reale dell’API Slack osservato, quindi
il processo di monitoraggio remoto visualizza tale messaggio in
approval-checkpoints/<scenario>-pending.png e
approval-checkpoints/<scenario>-resolved.png. L’esecuzione non riesce se un
file JSON del punto di controllo, una prova del messaggio, un JSON di conferma o una schermata generata è mancante
o vuota.
I lease a freddo di GitHub Actions non dispongono di cookie di Slack Web, quindi l’acquisizione del browser
può mostrare la schermata di accesso di Slack. Per la prova dei punti di controllo dell’approvazione, considera attendibili le
immagini generate dei punti di controllo e gli artefatti QA di Slack anziché
slack-desktop-smoke.png. Usa un lease attivo mantenuto con un profilo
Slack Web su cui l’accesso è stato effettuato manualmente solo quando la schermata del browser deve mostrare
Slack Web.
Modalità di preparazione
GitHub Actions prepara sempre il checkout candidato prima dell’esecuzione nella VM. Il relativo
store pnpm viene memorizzato nella cache in base a sistema operativo, versione di Node e lockfile. L’esecuzione
source nella VM
riutilizza inoltre /var/cache/crabbox/pnpm, se presente.
Interpretazione delle tempistiche
mantis-slack-desktop-smoke-report.md include le tempistiche delle fasi:
crabbox.warmup- avvio del provider cloud, preparazione di desktop/browser, SSH.crabbox.inspect- recupero dei metadati del lease.credentials.prepare- acquisizione del lease delle credenziali Convex.crabbox.remote_run- sincronizzazione, avvio del browser, installazione/compilazione di OpenClaw o convalida della preparazione, avvio del Gateway, acquisizione di schermate e video.artifacts.copy- copia tramite rsync dalla VM.
crabbox.remote_run può mostrare accepted quando Crabbox restituisce uno stato remoto
diverso da zero, ma Mantis ha copiato metadati che dimostrano che la configurazione del Gateway OpenClaw
è stata completata oppure che il comando QA di Slack è terminato correttamente. Considera
accepted un esito positivo con spiegazione, non uno scenario non riuscito.
Se un’esecuzione è lenta:
- Se prevale la preparazione: precompila o promuovi un’immagine migliore del provider Crabbox.
- Se
remote_runprevale in modalitàsource: usa un lease attivo, migliora il riutilizzo dello store pnpm oppure sposta i prerequisiti della macchina nell’immagine del provider. - Se
remote_runprevale in modalitàprehydrated: lo spazio di lavoro remoto non era effettivamente pronto oppure la configurazione del Gateway, del browser o di Slack è lenta. - Se prevale la copia degli artefatti: controlla le dimensioni del video e il contenuto della directory degli artefatti.
Elenco di controllo delle prove
Un buon commento nella PR mostra:- ID dello scenario e SHA candidato
- URL dell’esecuzione di GitHub Actions e URL dell’artefatto
- schermata incorporata del punto di controllo dell’approvazione oppure una schermata di Slack Web proveniente da un lease attivo con accesso effettuato
- anteprima animata incorporata, quando disponibile
- collegamenti al video MP4 completo e a quello ritagliato
- stato di successo/errore e riepilogo delle tempistiche del rapporto
Gestione degli errori
Se il workflow non riesce prima dell’esecuzione nella VM, controlla prima il job di Actions. Cause tipiche:candidate_ref non attendibile, segreti dell’ambiente mancanti oppure
errore di installazione/compilazione del candidato.
Se l’esecuzione nella VM non riesce ma le schermate sono state copiate, controlla:
crabbox vnc ...
indicato nel rapporto, quindi arresta il lease al termine:
--lease-id. Non includere tale profilo del browser in un’immagine del provider.