Skip to main content
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/pnpm en 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.mp4
  • slack-desktop-smoke-preview.gif, slack-desktop-smoke-change.mp4
  • mantis-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

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_run domineert in source: gebruik een warme lease, verbeter het hergebruik van de pnpm-store of verplaats machinevereisten naar de provider-image.
  • remote_run domineert in prehydrated: 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.

Gerelateerd