Get started
Panduan operasional desktop Slack Mantis
Mantis Slack desktop QA adalah jalur UI nyata untuk bug kelas Slack yang memerlukan desktop Linux, pemulihan VNC, Slack Web, Gateway OpenClaw nyata, tangkapan layar, video, dan komentar bukti PR. Gunakan jalur ini ketika pengujian unit atau jalur langsung Slack tanpa antarmuka grafis tidak dapat membuktikan bug tersebut.
Model penyimpanan
Mantis menggunakan tiga lapisan penyimpanan:
- Citra penyedia - dimiliki oleh Crabbox, disimpan di akun penyedia cloud. Menampung kemampuan mesin (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, alat pembangunan native) dan direktori cache kosong.
- Status lease hangat - dimiliki oleh sesi operator saat ini. Dapat menampung
profil peramban yang sudah masuk,
/var/cache/crabbox/pnpm, dan checkout sumber yang telah disiapkan selama lease masih aktif. - Artefak Mantis - dimiliki oleh proses OpenClaw. Berada di
.artifacts/qa-e2e/mantis/...; GitHub Actions mengunggahnya dan Aplikasi GitHub Mantis memberikan komentar bukti sebaris pada PR.
Jangan pernah menyertakan rahasia, cookie peramban, status masuk Slack, checkout repositori,
node_modules, atau dist/ ke dalam citra penyedia.
Pengiriman GitHub
Jalankan alur kerja dari 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=sourcecandidate_ref dibatasi karena alur kerja menggunakan kredensial langsung: referensi ini
harus mengarah ke leluhur main saat ini, tag rilis, atau head PR terbuka di
openclaw/openclaw.
Alur kerja menghasilkan:
- artefak yang diunggah
mantis-slack-desktop-smoke-<run-id>-<attempt> - komentar PR sebaris dari Aplikasi GitHub Mantis
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- log jarak jauh:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
Komentar PR diperbarui di tempat melalui penanda tersembunyi <!-- mantis-slack-desktop-smoke -->.
CLI lokal
Bukti sumber dingin:
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 sourcePertahankan VM untuk pemulihan VNC:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --gateway-setup \ --scenario slack-canary \ --keep-leaseBuka VNC:
crabbox vnc --provider aws --id <cbx_id> --openGunakan kembali lease hangat:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --lease-id <cbx_id-or-slug> \ --gateway-setup \ --scenario slack-canary \ --hydrate-mode sourceGunakan --hydrate-mode prehydrated hanya ketika ruang kerja jarak jauh yang digunakan kembali sudah
memiliki node_modules dan dist/ yang telah dibangun; jika tidak, Mantis akan gagal secara tertutup.
Buktikan UI persetujuan native Slack:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainer \ --hydrate-mode source--approval-checkpoints tidak dapat digunakan bersamaan dengan --gateway-setup. Opsi ini menjalankan
skenario pilihan slack-approval-exec-native dan slack-approval-plugin-native,
kecuali jika Anda meneruskan --scenario titik pemeriksaan persetujuan secara eksplisit; skenario
Slack lainnya ditolak sebelum VM dimulai. Pelaksana QA Slack menulis
setiap berkas JSON titik pemeriksaan dari pesan API Slack nyata yang diamatinya, lalu
pemantau jarak jauh merender pesan tersebut ke
approval-checkpoints/<scenario>-pending.png dan
approval-checkpoints/<scenario>-resolved.png. Proses gagal jika ada
JSON titik pemeriksaan, bukti pesan, JSON konfirmasi, atau tangkapan layar hasil render yang hilang
atau kosong.
Lease GitHub Actions dingin tidak memiliki cookie Slack Web, sehingga tangkapan perambannya
dapat berakhir di layar masuk Slack. Untuk bukti titik pemeriksaan persetujuan, percayai
gambar titik pemeriksaan hasil render dan artefak QA Slack, bukan
slack-desktop-smoke.png. Gunakan lease hangat yang dipertahankan dengan profil
Slack Web yang telah masuk secara manual hanya ketika tangkapan layar peramban itu sendiri harus menampilkan
Slack Web.
Mode hidrasi
| Mode | Gunakan ketika | Perilaku jarak jauh | Konsekuensi |
|---|---|---|---|
source |
Bukti PR normal, mesin dingin, CI | Menjalankan pnpm install --frozen-lockfile --prefer-offline dan pnpm build di dalam VM |
Paling lambat, bukti checkout sumber paling kuat |
prehydrated |
Anda sengaja menyiapkan lease yang digunakan kembali | Memerlukan node_modules dan dist/ yang sudah ada; melewati pemasangan/pembangunan |
Cepat, tetapi hanya valid untuk lease hangat yang dikendalikan operator |
GitHub Actions selalu menyiapkan checkout kandidat sebelum VM dijalankan. Penyimpanan
pnpm-nya di-cache berdasarkan OS, versi Node, dan lockfile. Proses source di VM
juga menggunakan kembali /var/cache/crabbox/pnpm jika tersedia.
Interpretasi waktu
mantis-slack-desktop-smoke-report.md menyertakan waktu setiap fase:
crabbox.warmup- boot penyedia cloud, kesiapan desktop/peramban, SSH.crabbox.inspect- pencarian metadata lease.credentials.prepare- perolehan lease kredensial Convex.crabbox.remote_run- sinkronisasi, peluncuran peramban, pemasangan/pembangunan OpenClaw atau validasi hidrasi, startup Gateway, tangkapan layar, dan perekaman video.artifacts.copy- rsync kembali dari VM.
crabbox.remote_run dapat menampilkan accepted ketika Crabbox mengembalikan status jarak jauh
bukan nol, tetapi Mantis menyalin metadata yang membuktikan bahwa penyiapan Gateway OpenClaw
telah selesai atau perintah QA Slack itu sendiri berhasil keluar. Perlakukan
accepted sebagai lulus-dengan-penjelasan, bukan skenario yang gagal.
Jika proses berjalan lambat:
- Warmup mendominasi: buat terlebih dahulu atau promosikan citra penyedia Crabbox yang lebih baik.
remote_runmendominasi dalamsource: gunakan lease hangat, tingkatkan penggunaan kembali penyimpanan pnpm, atau pindahkan prasyarat mesin ke dalam citra penyedia.remote_runmendominasi dalamprehydrated: ruang kerja jarak jauh sebenarnya belum siap, atau penyiapan Gateway/peramban/Slack lambat.- Penyalinan artefak mendominasi: periksa ukuran video dan isi direktori artefak.
Daftar periksa bukti
Komentar PR yang baik menampilkan:
- ID skenario dan SHA kandidat
- URL proses GitHub Actions dan URL artefak
- tangkapan layar titik pemeriksaan persetujuan sebaris, atau tangkapan layar Slack Web dari lease hangat yang sudah masuk
- pratinjau animasi sebaris jika tersedia
- tautan MP4 lengkap dan MP4 yang dipangkas
- status lulus/gagal dan ringkasan waktu laporan
Jangan commit tangkapan layar atau video ke dalam repositori. Simpan di artefak GitHub Actions atau komentar PR.
Penanganan kegagalan
Jika alur kerja gagal sebelum VM dijalankan, periksa tugas Actions terlebih dahulu.
Penyebab umum: candidate_ref tidak tepercaya, rahasia lingkungan tidak tersedia, atau
kegagalan pemasangan/pembangunan kandidat.
Jika proses VM gagal tetapi tangkapan layar berhasil disalin kembali, periksa:
cat mantis-slack-desktop-smoke-report.mdcat mantis-slack-desktop-smoke-summary.jsoncat slack-desktop-command.logcat openclaw-gateway.logcat chrome.logcat ffmpeg.logJika proses mempertahankan lease, buka VNC dengan perintah crabbox vnc ...
dari laporan, lalu hentikan lease setelah selesai:
crabbox stop --provider aws <cbx_id-or-slug>Jika login Slack kedaluwarsa, perbaiki melalui VNC pada lease yang dipertahankan dan jalankan kembali dengan
--lease-id. Jangan sertakan profil peramban tersebut ke dalam citra penyedia.