Get started
Procedura operacyjna aplikacji desktopowej Mantis Slack
Mantis Slack desktop QA to ścieżka z prawdziwym interfejsem użytkownika 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żywaj jej, gdy testy jednostkowe lub bezgłowa ścieżka live Slack nie mogą udowodnić błędu.
Model przechowywania
Mantis używa trzech różnych warstw przechowywania:
- Obraz dostawcy: należy do Crabbox i jest przechowywany na koncie dostawcy chmurowego. Zawiera możliwości maszyny, takie jak Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, natywne narzędzia do budowania oraz puste katalogi pamięci podręcznej.
- Stan ciepłej dzierżawy: należy do bieżącej sesji operatora. Może zawierać
zalogowany profil przeglądarki,
/var/cache/crabbox/pnpmoraz przygotowane pobranie źródeł podczas trwania dzierżawy. - Artefakty Mantis: należą do uruchomienia OpenClaw. Znajdują się pod
.artifacts/qa-e2e/mantis/..., następnie GitHub Actions je przesyła, a Mantis GitHub App komentuje dowody bezpośrednio w PR.
Nigdy nie umieszczaj sekretów, ciasteczek przeglądarki, stanu logowania Slack, pobrań repozytorium,
node_modules ani dist/ we wstępnie wypieczonym 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=source
Dozwolone wartości candidate_ref są celowo wąskie, ponieważ workflow
używa poświadczeń live: aktualne 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 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;- zdalne logi, takie jak
slack-desktop-command.log,openclaw-gateway.log,chrome.logiffmpeg.log.
Komentarz PR jest aktualizowany w miejscu przez ukryty
znacznik <!-- mantis-slack-desktop-smoke -->.
Lokalne CLI
Zimny dowód źródłowy:
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 source
Zachowaj maszynę wirtualną do ratunkowego VNC:
pnpm openclaw qa mantis slack-desktop-smoke \
--provider aws \
--class standard \
--gateway-setup \
--scenario slack-canary \
--keep-lease
Otwórz VNC:
crabbox vnc --provider aws --id <cbx_id> --open
Uż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 source
Używaj --hydrate-mode prehydrated tylko wtedy, gdy ponownie używany zdalny obszar roboczy już
ma node_modules i zbudowane dist/. Mantis kończy się zamknięciem w razie braku tych elementów.
Tryby hydrate
| Tryb | Kiedy używać | Zachowanie zdalne | Kompromis |
|---|---|---|---|
source |
Normalny dowód PR, zimne maszyny, CI | Uruchamia pnpm install --frozen-lockfile --prefer-offline i pnpm build wewnątrz maszyny wirtualnej |
Najwolniejszy, najsilniejszy dowód pobrania źródeł |
prehydrated |
Celowo przygotowano ponownie używaną dzierżawę | Wymaga istniejących node_modules i dist/; pomija instalację/budowanie |
Szybki, ale poprawny tylko dla ciepłych dzierżaw kontrolowanych przez operatora |
GitHub Actions zawsze przygotowuje pobranie kandydata przed uruchomieniem maszyny wirtualnej. Jego
magazyn pnpm jest buforowany według systemu operacyjnego, wersji Node i pliku blokady. Uruchomienie źródłowe w maszynie wirtualnej także
używa /var/cache/crabbox/pnpm, gdy jest obecne.
Interpretacja czasu
mantis-slack-desktop-smoke-report.md zawiera czasy faz:
crabbox.warmup: rozruch dostawcy chmurowego, gotowość pulpitu/przeglądarki i SSH.crabbox.inspect: wyszukiwanie metadanych dzierżawy.credentials.prepare: uzyskanie dzierżawy poświadczeń Convex.crabbox.remote_run: synchronizacja, uruchomienie przeglądarki, instalacja/budowanie OpenClaw albo walidacja hydrate, start Gateway, zrzut ekranu i przechwytywanie wideo.artifacts.copy: rsync z powrotem z maszyny wirtualnej.
crabbox.remote_run może być oznaczone jako accepted, gdy Crabbox zwraca niezerowy
zdalny status po tym, jak Mantis skopiował metadane dowodzące, że Gateway OpenClaw
działa, a konfiguracja została ukończona. Traktuj accepted jako powodzenie z wyjaśnieniem,
a nie jako nieudany scenariusz.
Jeśli uruchomienie jest wolne:
- dominuje warmup: wstępnie wypiecz albo wypromuj lepszy obraz dostawcy Crabbox;
- remote_run dominuje w
source: użyj ciepłej dzierżawy, popraw ponowne użycie magazynu pnpm albo przenieś wymagania wstępne maszyny do obrazu dostawcy; - remote_run dominuje w
prehydrated: zdalny obszar roboczy nie był faktycznie gotowy 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 PR powinien pokazywać:
- identyfikator scenariusza i SHA kandydata;
- URL uruchomienia GitHub Actions;
- URL artefaktu;
- zrzut ekranu inline;
- animowany podgląd inline, gdy jest dostępny;
- linki do pełnego MP4 i przyciętego MP4;
- status powodzenia/niepowodzenia;
- podsumowanie czasów w dołączonym raporcie.
Nie commituj zrzutów ekranu ani nagrań wideo do repozytorium. Trzymaj je w artefaktach GitHub Actions albo w komentarzu PR.
Obsługa awarii
Jeśli workflow kończy się niepowodzeniem przed uruchomieniem maszyny wirtualnej, najpierw sprawdź zadanie Actions. Typowe
przyczyny to niezaufany candidate_ref, brakujące sekrety środowiska albo niepowodzenie instalacji/budowania kandydata.
Jeśli uruchomienie maszyny wirtualnej kończy się niepowodzeniem, ale zrzuty ekranu zostały skopiowane z powrotem, sprawdź:
cat mantis-slack-desktop-smoke-report.md
cat mantis-slack-desktop-smoke-summary.json
cat slack-desktop-command.log
cat openclaw-gateway.log
cat chrome.log
cat ffmpeg.log
Jeśli uruchomienie zachowało 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.