Get started
Mantis Slack-desktop-runbook
Mantis Slack desktop-QA is de real-UI-lane voor Slack-klasse bugs die een Linux-desktop, VNC-redding, Slack Web, een echte OpenClaw-gateway, screenshots, video's en een PR-bewijscommentaar nodig hebben.
Gebruik dit wanneer unittests of de headless Slack live-lane de bug niet kunnen bewijzen.
Opslagmodel
Mantis gebruikt drie verschillende opslaglagen:
- Providerimage: eigendom van Crabbox en opgeslagen in het cloudprovideraccount. Deze bevat machinecapaciteiten zoals Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, native buildtools en lege cachedirectory's.
- Warme lease-status: eigendom van de huidige operatorsessie. Deze kan een
ingelogd browserprofiel,
/var/cache/crabbox/pnpmen een voorbereide source checkout bevatten zolang de lease actief is. - Mantis-artefacten: eigendom van de OpenClaw-run. Ze staan onder
.artifacts/qa-e2e/mantis/..., waarna GitHub Actions ze uploadt en de Mantis GitHub App inline bewijs op de PR plaatst.
Plaats nooit geheimen, browsercookies, Slack-inlogstatus, repositorycheckouts,
node_modules of dist/ in een voorgebakken providerimage.
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=sourceToegestane candidate_ref-waarden zijn bewust beperkt omdat de workflow
live-credentials gebruikt: huidige main-afkomst, releasetags of een open PR-head
van openclaw/openclaw.
De workflow schrijft:
- 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.mp4;slack-desktop-smoke-preview.gif;slack-desktop-smoke-change.mp4;mantis-slack-desktop-smoke-summary.json;mantis-slack-desktop-smoke-report.md;- remote logs zoals
slack-desktop-command.log,openclaw-gateway.log,chrome.logenffmpeg.log.
Het PR-commentaar wordt ter plaatse bijgewerkt via de verborgen
<!-- mantis-slack-desktop-smoke -->-markering.
Lokale CLI
Koud source-bewijs:
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-redding:
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 remote workspace al
node_modules en een gebouwde dist/ heeft. Mantis faalt gesloten als die
ontbreken.
Bewijs native Slack-goedkeurings-UI:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainer \ --hydrate-mode sourceGoedkeuringscheckpointmodus sluit --gateway-setup wederzijds uit. Deze voert
de opt-in slack-approval-exec-native- en slack-approval-plugin-native-
scenario's uit, tenzij je expliciete goedkeuringscheckpoint---scenario-flags
meegeeft; andere Slack-scenario's worden afgewezen voordat de VM start. De
Slack QA-runner schrijft elk checkpoint-JSON-bestand vanuit het echte Slack API-
bericht dat deze heeft waargenomen, waarna de remote watcher die berichtsnapshot rendert naar
approval-checkpoints/<scenario>-pending.png en
approval-checkpoints/<scenario>-resolved.png. De run faalt als een checkpoint-
JSON, berichtbewijs, ack-JSON of gerenderde screenshot ontbreekt of leeg is.
Koude GitHub Actions-leases hebben geen Slack Web-cookies, dus hun browsercapture
kan op Slack-aanmelding terechtkomen. Vertrouw voor goedkeuringscheckpointbewijs
op de gerenderde checkpointafbeeldingen en Slack QA-artefacten in plaats van
slack-desktop-smoke.png. Gebruik alleen een behouden warme lease met een
handmatig ingelogd Slack Web-profiel wanneer de browserscreenshot zelf Slack Web
moet tonen.
Hydrate-modi
| Modus | Gebruik wanneer | Remote 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 source-checkout-bewijs |
prehydrated |
Je bewust een hergebruikte lease hebt voorbereid | Vereist bestaande node_modules en dist/; slaat install/build over |
Snel, maar alleen geldig voor door operators beheerde warme leases |
GitHub Actions bereidt de candidate checkout altijd voor vóór de VM-run. De
pnpm-store wordt gecachet per OS, Node-versie en lockfile. De VM-source-run
gebruikt ook /var/cache/crabbox/pnpm wanneer aanwezig.
Timinginterpretatie
mantis-slack-desktop-smoke-report.md bevat fasetimings:
crabbox.warmup: cloudproviderboot, desktop-/browsergereedheid en SSH.crabbox.inspect: opzoeken van leasemetadata.credentials.prepare: verkrijgen van Convex-credentiallease.crabbox.remote_run: synchronisatie, browserstart, OpenClaw-install/build of hydrate-validatie, gatewaystart, screenshot en video-opname.artifacts.copy: rsync terug vanaf de VM.
crabbox.remote_run kan als accepted worden gemarkeerd wanneer Crabbox een
niet-nul remote status retourneert nadat Mantis metadata heeft gekopieerd die
bewijst dat de OpenClaw-gatewaysetup is voltooid of dat de Slack QA-opdracht zelf
succesvol is afgesloten. Behandel accepted als geslaagd-met-uitleg, niet als
een mislukt scenario.
Als de run traag is:
- warmup domineert: bak een betere Crabbox-providerimage voor of promoot die;
- remote_run domineert in
source: gebruik een warme lease, verbeter hergebruik van de pnpm-store of verplaats machinevereisten naar de providerimage; - remote_run domineert in
prehydrated: de remote workspace was niet werkelijk klaar, of de gateway-/browser-/Slack-setup is traag; - artefactkopie domineert: inspecteer videogrootte en inhoud van de artefactdirectory.
Bewijschecklist
Een goed PR-commentaar moet tonen:
- scenario-id en candidate-SHA;
- GitHub Actions-run-URL;
- artefact-URL;
- inline goedkeuringscheckpoint-screenshot, of een Slack Web-screenshot van een ingelogde warme lease;
- inline geanimeerde preview wanneer beschikbaar;
- volledige MP4- en ingekorte MP4-links;
- pass/fail-status;
- timingsamenvatting in het bijgevoegde rapport.
Commit geen screenshots of video's naar de repository. Bewaar ze in GitHub Actions-artefacten of het PR-commentaar.
Foutafhandeling
Als de workflow faalt vóór de VM-run, inspecteer dan eerst de Actions-job. Typische
oorzaken zijn een niet-vertrouwde candidate_ref, ontbrekende omgevingsgeheimen
of een mislukte candidate-install/build.
Als de VM-run faalt maar screenshots zijn teruggekopieerd, inspecteer:
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 run de lease heeft behouden, open VNC met de crabbox vnc ...-opdracht
uit het rapport. Stop de lease wanneer je klaar bent:
crabbox stop --provider aws <cbx_id-or-slug>Als de Slack-login is verlopen, herstel deze dan in VNC op een behouden lease en
voer opnieuw uit met --lease-id. Bak dat browserprofiel niet in een
providerimage.