Get started
Runbook voor Mantis Slack-desktop
Mantis Slack-desktop-QA is het real-UI-traject voor bugs in de Slack-klasse waarvoor een Linux-desktop, VNC-herstel, Slack Web, een echte OpenClaw Gateway, schermafbeeldingen, video's en een bewijscommentaar bij een PR nodig zijn. Gebruik dit wanneer eenheidstests of het headless live-traject voor Slack de bug niet kunnen aantonen.
Opslagmodel
Mantis gebruikt drie opslaglagen:
- Provider-image - beheerd door Crabbox en opgeslagen in het cloudprovideraccount. Bevat machinefunctionaliteit (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, systeemeigen buildtools) en lege cachemappen.
- Status van warme lease - beheerd door de huidige operatorsessie. Kan een
aangemeld browserprofiel,
/var/cache/crabbox/pnpmen een voorbereide broncodecheckout bevatten zolang de lease actief is. - Mantis-artefacten - beheerd door de OpenClaw-run. Bevinden zich onder
.artifacts/qa-e2e/mantis/...; GitHub Actions uploadt ze en de Mantis GitHub App plaatst het bewijs rechtstreeks in een commentaar bij de PR.
Neem nooit geheimen, browsercookies, Slack-aanmeldstatus, repositorycheckouts,
node_modules of dist/ op in een provider-image.
GitHub-dispatch
Voer de workflow uit vanaf 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=sourcecandidate_ref is beperkt omdat de workflow live-aanmeldgegevens gebruikt: deze
moet verwijzen naar de huidige afstamming van main, een releasetag of de head van een open PR in
openclaw/openclaw.
De workflow produceert:
- geüpload artefact
mantis-slack-desktop-smoke-<run-id>-<attempt> - rechtstreeks PR-commentaar van de Mantis GitHub App
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- externe logboeken:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
Het PR-commentaar wordt ter plaatse bijgewerkt via de verborgen markering <!-- mantis-slack-desktop-smoke -->.
Lokale CLI
Koud bewijs vanuit de broncode:
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 sourceBehoud de VM voor VNC-herstel:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --gateway-setup \ --scenario slack-canary \ --keep-leaseOpen VNC:
crabbox vnc --provider aws --id <cbx_id> --openHergebruik een warme lease:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --lease-id <cbx_id-or-slug> \ --gateway-setup \ --scenario slack-canary \ --hydrate-mode sourceGebruik --hydrate-mode prehydrated alleen wanneer de hergebruikte externe werkruimte al
node_modules en een gebouwde dist/ bevat; anders stopt Mantis uit veiligheidsoverwegingen.
Toon de systeemeigen Slack-goedkeuringsinterface aan:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainer \ --hydrate-mode source--approval-checkpoints en --gateway-setup sluiten elkaar uit. Deze optie voert
de expliciet ingeschakelde scenario's slack-approval-exec-native en slack-approval-plugin-native
uit, tenzij u expliciet een goedkeuringscontrolepunt als --scenario opgeeft; andere
Slack-scenario's worden geweigerd voordat de VM wordt gestart. De Slack-QA-runner schrijft
elk JSON-bestand voor een controlepunt op basis van het echte Slack-API-bericht dat deze heeft waargenomen, waarna
de externe watcher dat bericht rendert naar
approval-checkpoints/<scenario>-pending.png en
approval-checkpoints/<scenario>-resolved.png. De run mislukt als een
JSON-controlepunt, berichtbewijs, bevestigings-JSON of gerenderde schermafbeelding ontbreekt
of leeg is.
Koude GitHub Actions-leases bevatten geen Slack Web-cookies, waardoor de browseropname
op het Slack-aanmeldscherm kan uitkomen. Vertrouw voor bewijs van goedkeuringscontrolepunten op de
gerenderde controlepuntafbeeldingen en Slack-QA-artefacten in plaats van op
slack-desktop-smoke.png. Gebruik alleen een behouden warme lease met een handmatig
aangemeld Slack Web-profiel wanneer de browserschermafbeelding zelf
Slack Web moet tonen.
Hydratatiemodi
| Modus | Gebruiken wanneer | Extern gedrag | Afweging |
|---|---|---|---|
source |
Normaal PR-bewijs, koude machines, CI | Voert pnpm install --frozen-lockfile --prefer-offline en pnpm build uit in de VM |
Langzaamst, sterkste bewijs vanuit de broncodecheckout |
prehydrated |
U hebt bewust een hergebruikte lease voorbereid | Vereist bestaande node_modules en dist/; slaat installatie/build over |
Snel, maar alleen geldig voor door de operator beheerde warme leases |
GitHub Actions bereidt de kandidaatcheckout altijd voor voordat de VM-run begint. De
pnpm-store wordt gecachet op basis van het besturingssysteem, de Node-versie en het lockbestand. De VM-run met source
hergebruikt ook /var/cache/crabbox/pnpm wanneer deze aanwezig is.
Interpretatie van tijdmetingen
mantis-slack-desktop-smoke-report.md bevat tijdmetingen per fase:
crabbox.warmup- opstarten van de cloudprovider, gereedheid van desktop/browser en SSH.crabbox.inspect- opzoeken van leasemetadata.credentials.prepare- verkrijgen van een lease voor Convex-aanmeldgegevens.crabbox.remote_run- synchronisatie, starten van de browser, installatie/build van OpenClaw of hydratatievalidatie, starten van de Gateway, schermafbeelding en video-opname.artifacts.copy- terugsynchroniseren vanuit de VM met rsync.
crabbox.remote_run kan accepted tonen wanneer Crabbox een externe status anders dan nul
retourneert, maar Mantis metadata heeft gekopieerd waaruit blijkt dat de configuratie van de OpenClaw Gateway
is voltooid of dat de Slack-QA-opdracht zelf met succes is afgesloten. Beschouw
accepted als geslaagd-met-uitleg, niet als een mislukt scenario.
Als een run traag is:
- Opwarming domineert: neem vereisten vooraf op of promoveer een betere Crabbox-provider-image.
remote_rundomineert bijsource: gebruik een warme lease, verbeter het hergebruik van de pnpm-store of verplaats machinevereisten naar de provider-image.remote_rundomineert bijprehydrated: de externe werkruimte was niet daadwerkelijk gereed, of de configuratie van de Gateway/browser/Slack is traag.- Het kopiëren van artefacten domineert: controleer de videogrootte en de inhoud van de artefactmap.
Bewijschecklist
Een goed PR-commentaar toont:
- scenario-id en kandidaat-SHA
- URL van de GitHub Actions-run en artefact-URL
- rechtstreeks opgenomen schermafbeelding van het goedkeuringscontrolepunt, of een Slack Web-schermafbeelding van een aangemelde warme lease
- rechtstreeks opgenomen bewegende voorvertoning, indien beschikbaar
- koppelingen naar de volledige MP4 en de ingekorte MP4
- status geslaagd/mislukt en het overzicht van de tijdmetingen uit het rapport
Commit geen schermafbeeldingen of video's naar de repository. Bewaar ze in GitHub Actions-artefacten of in het PR-commentaar.
Afhandeling van fouten
Als de workflow vóór de VM-run mislukt, controleer dan eerst de Actions-taak.
Typische oorzaken: niet-vertrouwde candidate_ref, ontbrekende omgevingsgeheimen of een
mislukte installatie/build van de kandidaat.
Als de VM-run mislukt maar schermafbeeldingen zijn teruggekopieerd, controleer dan:
cat mantis-slack-desktop-smoke-report.mdcat mantis-slack-desktop-smoke-summary.jsoncat slack-desktop-command.logcat openclaw-gateway.logcat chrome.logcat ffmpeg.logAls de lease door de run is behouden, opent u VNC met de opdracht crabbox vnc ...
uit het rapport en stopt u daarna de lease:
crabbox stop --provider aws <cbx_id-or-slug>Als de Slack-aanmelding is verlopen, herstelt u deze via VNC op een behouden lease en voert u de run opnieuw uit met
--lease-id. Neem dat browserprofiel niet op in een provider-image.