Get started
Runbook desktop Slack Mantis
Mantis Slack desktop QA adalah jalur UI nyata untuk bug sekelas Slack yang memerlukan desktop Linux, penyelamatan VNC, Slack Web, Gateway OpenClaw nyata, tangkapan layar, video, dan komentar bukti PR.
Gunakan saat pengujian unit atau jalur live Slack tanpa kepala tidak dapat membuktikan bug.
Model penyimpanan
Mantis menggunakan tiga lapisan penyimpanan yang berbeda:
- Citra penyedia: dimiliki oleh Crabbox dan disimpan di akun penyedia cloud. Ini berisi kemampuan mesin seperti Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, alat build native, dan direktori cache kosong.
- Status lease hangat: dimiliki oleh sesi operator saat ini. Ini dapat berisi
profil browser yang sudah masuk,
/var/cache/crabbox/pnpm, dan checkout sumber yang sudah disiapkan selama lease masih aktif. - Artefak Mantis: dimiliki oleh proses OpenClaw. Artefak ini berada di bawah
.artifacts/qa-e2e/mantis/..., lalu GitHub Actions mengunggahnya dan Mantis GitHub App mengomentari bukti sebaris pada PR.
Jangan pernah memasukkan rahasia, cookie browser, status login Slack, checkout repositori,
node_modules, atau dist/ ke dalam citra penyedia yang sudah diprebake.
Dispatch GitHub
Jalankan workflow 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=sourceNilai candidate_ref yang diizinkan sengaja dibatasi karena workflow
menggunakan kredensial live: ancestry main saat ini, tag rilis, atau head PR terbuka
dari openclaw/openclaw.
Workflow menulis:
- artefak yang diunggah:
mantis-slack-desktop-smoke-<run-id>-<attempt>; - komentar PR sebaris dari 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;- log remote seperti
slack-desktop-command.log,openclaw-gateway.log,chrome.log, danffmpeg.log.
Komentar PR diperbarui di tempat oleh 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 penyelamatan 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 ulang 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 saat workspace remote yang digunakan ulang sudah
memiliki node_modules dan dist/ yang sudah dibuild. Mantis gagal tertutup jika itu
hilang.
Buktikan UI persetujuan Slack native:
pnpm openclaw qa mantis slack-desktop-smoke \ --provider aws \ --class standard \ --approval-checkpoints \ --credential-source convex \ --credential-role maintainer \ --hydrate-mode sourceMode checkpoint persetujuan saling eksklusif dengan --gateway-setup. Mode ini menjalankan
skenario opt-in slack-approval-exec-native dan slack-approval-plugin-native
kecuali Anda meneruskan flag --scenario checkpoint persetujuan eksplisit; skenario
Slack lainnya ditolak sebelum VM dimulai. Runner Slack QA menulis
setiap file JSON checkpoint dari pesan Slack API nyata yang diamatinya, lalu
watcher remote merender snapshot pesan tersebut ke
approval-checkpoints/<scenario>-pending.png dan
approval-checkpoints/<scenario>-resolved.png. Proses gagal jika ada JSON checkpoint,
bukti pesan, JSON ack, atau tangkapan layar hasil render yang hilang atau kosong.
Lease GitHub Actions dingin tidak memiliki cookie Slack Web, sehingga tangkapan browsernya
dapat berhenti di proses masuk Slack. Untuk bukti checkpoint persetujuan, percayai
gambar checkpoint hasil render dan artefak Slack QA daripada
slack-desktop-smoke.png. Gunakan lease hangat yang dipertahankan dengan profil Slack
Web yang sudah login secara manual hanya saat tangkapan layar browser itu sendiri harus menampilkan Slack Web.
Mode hydrate
| Mode | Gunakan saat | Perilaku remote | Tradeoff |
|---|---|---|---|
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 ulang | Memerlukan node_modules dan dist/ yang sudah ada; melewati install/build |
Cepat, tetapi hanya valid untuk lease hangat yang dikendalikan operator |
GitHub Actions selalu menyiapkan checkout kandidat sebelum proses VM. Store
pnpm-nya dicache berdasarkan OS, versi Node, dan lockfile. Proses sumber VM juga
menggunakan /var/cache/crabbox/pnpm saat tersedia.
Interpretasi waktu
mantis-slack-desktop-smoke-report.md mencakup waktu fase:
crabbox.warmup: boot penyedia cloud, kesiapan desktop/browser, dan SSH.crabbox.inspect: pencarian metadata lease.credentials.prepare: akuisisi lease kredensial Convex.crabbox.remote_run: sinkronisasi, peluncuran browser, install/build OpenClaw atau validasi hydrate, startup Gateway, tangkapan layar, dan perekaman video.artifacts.copy: rsync balik dari VM.
crabbox.remote_run dapat ditandai accepted saat Crabbox mengembalikan status
remote bukan nol setelah Mantis menyalin metadata yang membuktikan bahwa setup Gateway
OpenClaw selesai atau perintah Slack QA itu sendiri berhasil keluar.
Anggap accepted sebagai lulus dengan penjelasan, bukan skenario gagal.
Jika proses lambat:
- warmup mendominasi: prebake atau promosikan citra penyedia Crabbox yang lebih baik;
- remote_run mendominasi di
source: gunakan lease hangat, tingkatkan penggunaan ulang store pnpm, atau pindahkan prasyarat mesin ke citra penyedia; - remote_run mendominasi di
prehydrated: workspace remote sebenarnya belum siap, atau setup Gateway/browser/Slack lambat; - penyalinan artefak mendominasi: periksa ukuran video dan isi direktori artefak.
Checklist bukti
Komentar PR yang baik harus menampilkan:
- id skenario dan SHA kandidat;
- URL proses GitHub Actions;
- URL artefak;
- tangkapan layar checkpoint persetujuan sebaris, atau tangkapan layar Slack Web dari lease hangat yang sudah login;
- pratinjau animasi sebaris saat tersedia;
- tautan MP4 penuh dan MP4 yang dipangkas;
- status lulus/gagal;
- ringkasan waktu dalam laporan terlampir.
Jangan commit tangkapan layar atau video ke dalam repositori. Simpan di artefak GitHub Actions atau komentar PR.
Penanganan kegagalan
Jika workflow gagal sebelum proses VM, periksa job Actions terlebih dahulu. Penyebab
umumnya adalah candidate_ref yang tidak tepercaya, rahasia environment yang hilang, atau kegagalan
install/build 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.
Hentikan lease setelah selesai:
crabbox stop --provider aws <cbx_id-or-slug>Jika login Slack kedaluwarsa, perbaiki di VNC pada lease yang dipertahankan dan jalankan ulang dengan
--lease-id. Jangan bake profil browser itu ke dalam citra penyedia.