Get started
Runbook Mantis Slack na komputer
Mantis Slack desktop QA to ścieżka z prawdziwym UI dla błędów klasy Slack, które wymagają pulpitu Linux, ratunkowego VNC, Slack Web, prawdziwego Gateway OpenClaw, zrzutów ekranu, nagrań wideo i komentarza z dowodami w PR.
Użyj jej, gdy testy jednostkowe albo bezgłowa ścieżka live Slack nie mogą udowodnić błędu.
Model przechowywania
Mantis używa trzech różnych warstw przechowywania:
- Obraz dostawcy: zarządzany przez Crabbox i przechowywany na koncie dostawcy chmurowego. Zawiera możliwości maszyny, takie jak Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, natywne narzędzia build i puste katalogi pamięci podręcznej.
- Ciepły stan dzierżawy: zarządzany przez bieżącą sesję operatora. Może zawierać
zalogowany profil przeglądarki,
/var/cache/crabbox/pnpmoraz przygotowany checkout źródeł, dopóki dzierżawa jest aktywna. - Artefakty Mantis: zarządzane przez przebieg OpenClaw. Znajdują się w
.artifacts/qa-e2e/mantis/..., następnie GitHub Actions je przesyła, a aplikacja GitHub Mantis komentuje dowody inline w PR.
Nigdy nie umieszczaj sekretów, ciasteczek przeglądarki, stanu logowania Slack, checkoutów
repozytorium, node_modules ani dist/ we wstępnie przygotowanym obrazie dostawcy.
Dispatch GitHub
Uruchom workflow z 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=sourceDozwolone wartości candidate_ref są celowo wąskie, ponieważ workflow
używa poświadczeń live: bieżące pochodzenie main, tagi wydań albo głowica otwartego PR
z openclaw/openclaw.
Workflow zapisuje:
- przesłany artefakt:
mantis-slack-desktop-smoke-<run-id>-<attempt>; - komentarz inline w PR z aplikacji GitHub Mantis;
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;- zdalne logi, takie jak
slack-desktop-command.log,openclaw-gateway.log,chrome.logiffmpeg.log.
Komentarz w PR jest aktualizowany w miejscu przez ukryty
marker <!-- mantis-slack-desktop-smoke -->.
Lokalne CLI
Dowód ze świeżych źródeł:
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 sourceZachowaj VM do ratunkowego VNC:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --gateway-setup \ --scenario slack-canary \ --keep-leaseOtwórz VNC:
crabbox vnc --provider aws --id <cbx_id> --openUżyj ponownie ciepłej dzierżawy:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --lease-id <cbx_id-or-slug> \ --gateway-setup \ --scenario slack-canary \ --hydrate-mode sourceUżywaj --hydrate-mode prehydrated tylko wtedy, gdy ponownie używana zdalna przestrzeń robocza
ma już node_modules i zbudowane dist/. Mantis odmawia kontynuacji, jeśli ich
brakuje.
Udowodnij natywny UI zatwierdzania Slack:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainer \ --hydrate-mode sourceTryb punktów kontrolnych zatwierdzania wzajemnie wyklucza się z --gateway-setup. Uruchamia
opcjonalne scenariusze slack-approval-exec-native i slack-approval-plugin-native,
chyba że przekażesz jawne flagi punktów kontrolnych zatwierdzania --scenario; inne
scenariusze Slack są odrzucane przed startem VM. Runner QA Slack zapisuje
każdy plik JSON punktu kontrolnego z prawdziwej wiadomości API Slack, którą zaobserwował,
a następnie zdalny watcher renderuje migawkę tej wiadomości do
approval-checkpoints/<scenario>-pending.png i
approval-checkpoints/<scenario>-resolved.png. Przebieg kończy się niepowodzeniem, jeśli brakuje
jakiegokolwiek JSON punktu kontrolnego, dowodu wiadomości, JSON ack albo wyrenderowanego zrzutu ekranu,
albo jeśli są puste.
Zimne dzierżawy GitHub Actions nie mają ciasteczek Slack Web, więc ich przechwytywanie
przeglądarki może trafić na logowanie Slack. W przypadku dowodu punktu kontrolnego zatwierdzania ufaj
wyrenderowanym obrazom punktów kontrolnych i artefaktom QA Slack zamiast
slack-desktop-smoke.png. Użyj zachowanej ciepłej dzierżawy z ręcznie zalogowanym profilem
Slack Web tylko wtedy, gdy sam zrzut ekranu przeglądarki musi pokazywać Slack Web.
Tryby hydrate
| Tryb | Użyj, gdy | Zachowanie zdalne | Kompromis |
|---|---|---|---|
source |
Normalny dowód PR, zimne maszyny, CI | Uruchamia pnpm install --frozen-lockfile --prefer-offline i pnpm build wewnątrz VM |
Najwolniejszy, najsilniejszy dowód z checkoutu źródeł |
prehydrated |
Celowo przygotowano ponownie używaną dzierżawę | Wymaga istniejących node_modules i dist/; pomija install/build |
Szybki, ale poprawny tylko dla ciepłych dzierżaw kontrolowanych przez operatora |
GitHub Actions zawsze przygotowuje checkout kandydata przed uruchomieniem VM. Jego
magazyn pnpm jest buforowany według systemu operacyjnego, wersji Node i pliku blokady. Przebieg źródłowy VM używa także
/var/cache/crabbox/pnpm, gdy jest dostępny.
Interpretacja czasu
mantis-slack-desktop-smoke-report.md zawiera czasy faz:
crabbox.warmup: rozruch dostawcy chmurowego, gotowość pulpitu/przeglądarki oraz SSH.crabbox.inspect: wyszukiwanie metadanych dzierżawy.credentials.prepare: pozyskanie dzierżawy poświadczeń Convex.crabbox.remote_run: synchronizacja, uruchomienie przeglądarki, instalacja/build OpenClaw albo walidacja hydrate, start Gateway, zrzut ekranu i przechwytywanie wideo.artifacts.copy: rsync z powrotem z VM.
crabbox.remote_run może być oznaczone jako accepted, gdy Crabbox zwraca niezerowy
zdalny status po tym, jak Mantis skopiował metadane dowodzące, że albo konfiguracja Gateway
OpenClaw została ukończona, albo samo polecenie QA Slack zakończyło się pomyślnie.
Traktuj accepted jako zaliczenie z wyjaśnieniem, a nie nieudany scenariusz.
Jeśli przebieg jest wolny:
- dominuje warmup: wstępnie przygotuj albo wypromuj lepszy obraz dostawcy Crabbox;
- dominuje remote_run w
source: użyj ciepłej dzierżawy, popraw ponowne użycie magazynu pnpm albo przenieś wymagania maszyny do obrazu dostawcy; - dominuje remote_run w
prehydrated: zdalna przestrzeń robocza nie była faktycznie gotowa albo konfiguracja Gateway/przeglądarki/Slack jest wolna; - dominuje kopiowanie artefaktów: sprawdź rozmiar wideo i zawartość katalogu artefaktów.
Lista kontrolna dowodów
Dobry komentarz w PR powinien pokazywać:
- identyfikator scenariusza i SHA kandydata;
- URL przebiegu GitHub Actions;
- URL artefaktu;
- zrzut ekranu punktu kontrolnego zatwierdzania inline albo zrzut ekranu Slack Web z zalogowanej ciepłej dzierżawy;
- animowany podgląd inline, gdy jest dostępny;
- linki do pełnego MP4 i przyciętego MP4;
- status powodzenia/niepowodzenia;
- podsumowanie czasu w załączonym raporcie.
Nie commituj zrzutów ekranu ani nagrań wideo do repozytorium. Trzymaj je w artefaktach GitHub Actions albo w komentarzu PR.
Obsługa niepowodzeń
Jeśli workflow zawiedzie przed uruchomieniem VM, najpierw sprawdź zadanie Actions. Typowe
przyczyny to niezaufany candidate_ref, brakujące sekrety środowiska albo niepowodzenie
instalacji/buildu kandydata.
Jeśli przebieg VM zawiedzie, ale zrzuty ekranu zostały skopiowane z powrotem, sprawdź:
cat mantis-slack-desktop-smoke-report.mdcat mantis-slack-desktop-smoke-summary.jsoncat slack-desktop-command.logcat openclaw-gateway.logcat chrome.logcat ffmpeg.logJeśli przebieg zachował dzierżawę, otwórz VNC poleceniem crabbox vnc ... z raportu.
Zatrzymaj dzierżawę po zakończeniu:
crabbox stop --provider aws <cbx_id-or-slug>Jeśli logowanie Slack wygasło, napraw je w VNC na zachowanej dzierżawie i uruchom ponownie z
--lease-id. Nie wypiekaj tego profilu przeglądarki w obrazie dostawcy.