Get started

Guide d’exploitation de Mantis Slack sur ordinateur

La QA du bureau Slack Mantis est la voie d’interface réelle pour les bogues de classe Slack qui nécessitent un bureau Linux, un secours VNC, Slack Web, un vrai Gateway OpenClaw, des captures d’écran, des vidéos et un commentaire de preuve sur la PR.

Utilisez-la lorsque les tests unitaires ou la voie live Slack sans interface ne peuvent pas prouver le bogue.

Modèle de stockage

Mantis utilise trois couches de stockage différentes :

  • Image du fournisseur : détenue par Crabbox et stockée dans le compte du fournisseur cloud. Elle contient les capacités de la machine comme Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, les outils de build natifs et des répertoires de cache vides.
  • État du bail chaud : détenu par la session de l’opérateur actuel. Il peut contenir un profil de navigateur connecté, /var/cache/crabbox/pnpm et un checkout source préparé tant que le bail est actif.
  • Artefacts Mantis : détenus par l’exécution OpenClaw. Ils résident sous .artifacts/qa-e2e/mantis/..., puis GitHub Actions les téléverse et la GitHub App Mantis commente les preuves en ligne sur la PR.

Ne placez jamais de secrets, de cookies de navigateur, d’état de connexion Slack, de checkouts de dépôt, node_modules ni dist/ dans une image de fournisseur précuite.

Dispatch GitHub

Exécutez le workflow depuis main :

gh workflow run mantis-slack-desktop-smoke.yml \
  --ref main \
  -f candidate_ref=<trusted-ref-or-sha> \
  -f pr_number=<pr-number> \
  -f scenario_id=slack-canary \
  -f crabbox_provider=aws \
  -f keep_vm=false \
  -f hydrate_mode=source

Les valeurs candidate_ref autorisées sont volontairement limitées, car le workflow utilise des identifiants live : ascendance de main actuel, tags de version, ou tête de PR ouverte depuis openclaw/openclaw.

Le workflow écrit :

  • artefact téléversé : mantis-slack-desktop-smoke-<run-id>-<attempt> ;
  • commentaire de PR en ligne depuis la GitHub App Mantis ;
  • 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 ;
  • journaux distants comme slack-desktop-command.log, openclaw-gateway.log, chrome.log et ffmpeg.log.

Le commentaire de PR est mis à jour sur place grâce au marqueur masqué <!-- mantis-slack-desktop-smoke -->.

CLI locale

Preuve source à froid :

pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --class standard \
  --gateway-setup \
  --credential-source convex \
  --credential-role maintainer \
  --provider-mode live-frontier \
  --model openai/gpt-5.4 \
  --alt-model openai/gpt-5.4 \
  --scenario slack-canary \
  --hydrate-mode source

Conservez la VM pour un secours VNC :

pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --class standard \
  --gateway-setup \
  --scenario slack-canary \
  --keep-lease

Ouvrir VNC :

crabbox vnc --provider aws --id <cbx_id> --open

Réutiliser un bail chaud :

pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --lease-id <cbx_id-or-slug> \
  --gateway-setup \
  --scenario slack-canary \
  --hydrate-mode source

Utilisez --hydrate-mode prehydrated uniquement lorsque l’espace de travail distant réutilisé a déjà node_modules et un dist/ construit. Mantis échoue en mode fermé s’ils sont absents.

Modes d’hydratation

Mode À utiliser quand Comportement distant Compromis
source Preuve de PR normale, machines froides, CI Exécute pnpm install --frozen-lockfile --prefer-offline et pnpm build dans la VM Plus lent, preuve de checkout source la plus forte
prehydrated Vous avez préparé intentionnellement un bail réutilisé Nécessite node_modules et dist/ existants ; ignore install/build Rapide, mais valide uniquement pour les baux chauds contrôlés par l’opérateur

GitHub Actions prépare toujours le checkout candidat avant l’exécution de la VM. Son store pnpm est mis en cache par OS, version de Node et lockfile. L’exécution source dans la VM utilise aussi /var/cache/crabbox/pnpm lorsqu’il est présent.

Interprétation du minutage

mantis-slack-desktop-smoke-report.md inclut les durées par phase :

  • crabbox.warmup : démarrage du fournisseur cloud, disponibilité du bureau/navigateur et SSH.
  • crabbox.inspect : recherche des métadonnées du bail.
  • credentials.prepare : acquisition du bail d’identifiants Convex.
  • crabbox.remote_run : synchronisation, lancement du navigateur, install/build OpenClaw ou validation d’hydratation, démarrage du Gateway, capture d’écran et capture vidéo.
  • artifacts.copy : rsync de retour depuis la VM.

crabbox.remote_run peut être marqué accepted lorsque Crabbox renvoie un statut distant non nul après que Mantis a copié les métadonnées prouvant que le Gateway OpenClaw est actif et que la configuration est terminée. Traitez accepted comme une réussite avec explication, pas comme un scénario échoué.

Si l’exécution est lente :

  • warmup domine : précuisez ou promouvez une meilleure image de fournisseur Crabbox ;
  • remote_run domine en source : utilisez un bail chaud, améliorez la réutilisation du store pnpm, ou déplacez les prérequis machine dans l’image du fournisseur ;
  • remote_run domine en prehydrated : l’espace de travail distant n’était pas réellement prêt, ou la configuration du Gateway/navigateur/Slack est lente ;
  • la copie des artefacts domine : inspectez la taille de la vidéo et le contenu du répertoire d’artefacts.

Liste de contrôle des preuves

Un bon commentaire de PR doit afficher :

  • identifiant du scénario et SHA candidat ;
  • URL de l’exécution GitHub Actions ;
  • URL de l’artefact ;
  • capture d’écran en ligne ;
  • aperçu animé en ligne lorsqu’il est disponible ;
  • liens MP4 complet et MP4 rogné ;
  • statut réussite/échec ;
  • résumé des durées dans le rapport joint.

Ne committez pas de captures d’écran ni de vidéos dans le dépôt. Conservez-les dans les artefacts GitHub Actions ou le commentaire de PR.

Gestion des échecs

Si le workflow échoue avant l’exécution de la VM, inspectez d’abord le job Actions. Les causes typiques sont un candidate_ref non fiable, des secrets d’environnement manquants, ou un échec d’installation/build du candidat.

Si l’exécution de la VM échoue mais que les captures d’écran ont été recopiées, inspectez :

cat mantis-slack-desktop-smoke-report.md
cat mantis-slack-desktop-smoke-summary.json
cat slack-desktop-command.log
cat openclaw-gateway.log
cat chrome.log
cat ffmpeg.log

Si l’exécution a conservé le bail, ouvrez VNC avec la commande crabbox vnc ... du rapport. Arrêtez le bail une fois terminé :

crabbox stop --provider aws <cbx_id-or-slug>

Si la connexion Slack a expiré, réparez-la dans VNC sur un bail conservé et relancez avec --lease-id. Ne précuisez pas ce profil de navigateur dans une image de fournisseur.

Associé