Get started
Runbook voor Mantis Slack-desktopapp
Mantis Slack-desktop-QA is het real-UI-traject voor bugs van het Slack-type waarvoor een Linux-desktop, VNC-herstel, Slack Web, een echte OpenClaw-Gateway, schermafbeeldingen, video's en een PR-bewijscommentaar nodig zijn. Gebruik het wanneer unittests of het headless live Slack-traject de bug niet kunnen aantonen.
Opslagmodel
Mantis gebruikt drie opslaglagen:
- Provider-image - beheerd door Crabbox, opgeslagen in het account van de cloudprovider. Bevat machinecapaciteiten (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, native buildtools) en lege cachedirectories.
- Status van warme lease - beheerd door de huidige operatorsessie. Kan een
aangemeld browserprofiel,
/var/cache/crabbox/pnpmen een voorbereide broncode-checkout 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 inline bewijs als commentaar bij de PR.
Neem nooit geheimen, browsercookies, Slack-aanmeldstatus, repository-checkouts,
node_modules of dist/ op in een provider-image.
GitHub-dispatch
Voer de workflow uit vanuit 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-inloggegevens 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> - inline 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
Koude broncodeverificatie:
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 voorzorg.
Toon de native 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 sluit --gateway-setup wederzijds uit. Hiermee worden
de optionele scenario's slack-approval-exec-native en slack-approval-plugin-native
uitgevoerd, tenzij je een expliciet goedkeuringscontrolepunt --scenario doorgeeft; andere
Slack-scenario's worden geweigerd voordat de VM wordt gestart. De Slack-QA-runner schrijft
elk JSON-bestand met controlepunten 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-bestand met controlepunten, berichtbewijs, bevestigings-JSON of gerenderde schermafbeelding ontbreekt
of leeg is.
Koude GitHub Actions-leases hebben geen Slack Web-cookies, waardoor hun browseropname
op het Slack-aanmeldscherm kan uitkomen. Vertrouw voor bewijs met 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.
Hydratiemodi
| Modus | Gebruiken wanneer | Extern gedrag | Afweging |
|---|---|---|---|
source |
Normaal PR-bewijs, koude machines, CI | Voert pnpm install --frozen-lockfile --prefer-offline en pnpm build uit binnen de VM |
Traagst, sterkste bewijs vanuit broncode-checkout |
prehydrated |
Je bewust een hergebruikte lease hebt 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 checkout van de kandidaat altijd voor vóór de VM-run. De
pnpm-store wordt gecachet op basis van het besturingssysteem, de Node-versie en het lockbestand. De source-run van de VM
hergebruikt ook /var/cache/crabbox/pnpm wanneer dit 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, SSH.crabbox.inspect- opzoeken van leasemetagegevens.credentials.prepare- verkrijgen van een Convex-lease voor inloggegevens.crabbox.remote_run- synchronisatie, starten van de browser, installatie/build van OpenClaw of hydratievalidatie, opstarten van de Gateway, schermafbeelding en video-opname.artifacts.copy- rsync terug vanaf de VM.
crabbox.remote_run kan accepted tonen wanneer Crabbox een externe status anders dan nul
retourneert, maar Mantis metagegevens heeft gekopieerd die bewijzen dat de installatie van de OpenClaw-Gateway
is voltooid of dat de Slack-QA-opdracht zelf met succes is afgesloten. Behandel
accepted als geslaagd-met-uitleg, niet als een mislukt scenario.
Als een run traag is:
- Opwarming domineert: bouw vooraf of promoveer een betere provider-image voor Crabbox.
remote_rundomineert insource: gebruik een warme lease, verbeter het hergebruik van de pnpm-store of verplaats machinevereisten naar de provider-image.remote_rundomineert inprehydrated: de externe werkruimte was niet daadwerkelijk gereed, of het instellen van de Gateway/browser/Slack verloopt traag.- Het kopiëren van artefacten domineert: controleer de videogrootte en de inhoud van de artefactdirectory.
Bewijschecklist
Goed PR-commentaar toont:
- scenario-id en kandidaat-SHA
- URL van de GitHub Actions-run en artefact-URL
- inline schermafbeelding van het goedkeuringscontrolepunt, of een Slack Web-schermafbeelding van een aangemelde warme lease
- inline geanimeerd voorbeeld wanneer beschikbaar
- links naar de volledige MP4 en ingekorte MP4
- status geslaagd/mislukt en het tijdsoverzicht van het rapport
Commit geen schermafbeeldingen of video's naar de repository. Bewaar ze in GitHub Actions-artefacten of het PR-commentaar.
Foutafhandeling
Als de workflow vóór de VM-run mislukt, controleer dan eerst de Actions-job.
Typische oorzaken: niet-vertrouwde candidate_ref, ontbrekende omgevingsgeheimen of een
mislukte installatie/build van de kandidaat.
Als de VM-run mislukt maar de 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 tijdens de run is behouden, open je VNC met de opdracht crabbox vnc ...
uit het rapport en stop je daarna de lease wanneer je klaar bent:
crabbox stop --provider aws <cbx_id-or-slug>Als de Slack-aanmelding is verlopen, herstel je deze via VNC op een behouden lease en voer je de run opnieuw uit met
--lease-id. Neem dat browserprofiel niet op in een provider-image.