Op deze pagina
Op deze pagina
Testing and CI
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:
candidate_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:
Behoud de VM voor VNC-herstel:
Open VNC:
Hergebruik een warme lease:
Gebruik --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:
--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:
Als 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:
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.