Depolama modeli
Mantis üç farklı depolama katmanı kullanır:- Sağlayıcı imajı: Crabbox tarafından sahiplenilir ve bulut sağlayıcısı hesabında saklanır. Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, yerel derleme araçları ve boş önbellek dizinleri gibi makine yeteneklerini içerir.
- Sıcak kira durumu: geçerli operatör oturumu tarafından sahiplenilir. Kira canlıyken oturum açılmış bir tarayıcı profili,
/var/cache/crabbox/pnpmve hazırlanmış bir kaynak checkout içerebilir. - Mantis artifact’leri: OpenClaw çalıştırması tarafından sahiplenilir. Bunlar
.artifacts/qa-e2e/mantis/...altında yaşar, ardından GitHub Actions bunları yükler ve Mantis GitHub App PR üzerinde satır içi kanıt yorumu yapar.
node_modules veya dist/ dizinini asla önceden hazırlanmış bir sağlayıcı imajına koymayın.
GitHub tetikleme
Workflow’umain üzerinden çalıştırın:
candidate_ref değerleri, workflow canlı kimlik bilgileri kullandığı için kasıtlı olarak dardır: geçerli main ataları, release tag’leri veya openclaw/openclaw içinden açık bir PR head’i.
Workflow şunları yazar:
- yüklenen artifact:
mantis-slack-desktop-smoke-<run-id>-<attempt>; - Mantis GitHub App’ten satır içi PR yorumu;
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;slack-desktop-command.log,openclaw-gateway.log,chrome.logveffmpeg.loggibi uzak loglar.
<!-- mantis-slack-desktop-smoke --> işaretçisiyle yerinde güncellenir.
Yerel CLI
Soğuk kaynak kanıtı:--hydrate-mode prehydrated seçeneğini yalnızca yeniden kullanılan uzak çalışma alanında zaten node_modules ve derlenmiş bir dist/ olduğunda kullanın. Bunlar eksikse Mantis kapalı şekilde başarısız olur.
Yerel Slack onay UI’sini kanıtlayın:
--gateway-setup ile karşılıklı olarak dışlayıcıdır. Açık onay denetim noktası --scenario bayrakları geçirmediğiniz sürece isteğe bağlı slack-approval-exec-native ve slack-approval-plugin-native senaryolarını çalıştırır; diğer Slack senaryoları VM başlamadan önce reddedilir. Slack QA runner, her denetim noktası JSON dosyasını gözlemlediği gerçek Slack API mesajından yazar, ardından uzak izleyici bu mesaj snapshot’ını
approval-checkpoints/<scenario>-pending.png ve
approval-checkpoints/<scenario>-resolved.png içine render eder. Herhangi bir denetim noktası JSON’u, mesaj kanıtı, ack JSON’u veya render edilmiş ekran görüntüsü eksik ya da boşsa çalıştırma başarısız olur.
Soğuk GitHub Actions kiralarında Slack Web çerezleri yoktur, bu yüzden tarayıcı yakalaması Slack oturum açma sayfasına düşebilir. Onay denetim noktası kanıtı için
slack-desktop-smoke.png yerine render edilmiş denetim noktası görsellerine ve Slack QA artifact’lerine güvenin. Tarayıcı ekran görüntüsünün bizzat Slack Web’i göstermesi gerektiğinde yalnızca elle oturum açılmış Slack Web profiline sahip tutulan sıcak kira kullanın.
Hydrate modları
| Mod | Ne zaman kullanılır | Uzak davranış | Ödünleşim |
|---|---|---|---|
source | Normal PR kanıtı, soğuk makineler, CI | VM içinde pnpm install --frozen-lockfile --prefer-offline ve pnpm build çalıştırır | En yavaş, en güçlü kaynak-checkout kanıtı |
prehydrated | Yeniden kullanılan bir kirayı bilerek hazırladığınızda | Mevcut node_modules ve dist/ gerektirir; install/build adımlarını atlar | Hızlıdır, ancak yalnızca operatör kontrollü sıcak kiralar için geçerlidir |
/var/cache/crabbox/pnpm kullanır.
Zamanlama yorumlama
mantis-slack-desktop-smoke-report.md faz zamanlamalarını içerir:
crabbox.warmup: bulut sağlayıcısı başlatma, masaüstü/tarayıcı hazır olma ve SSH.crabbox.inspect: kira metadata araması.credentials.prepare: Convex kimlik bilgisi kirası edinimi.crabbox.remote_run: sync, tarayıcı başlatma, OpenClaw install/build veya hydrate doğrulaması, Gateway başlatma, ekran görüntüsü ve video yakalama.artifacts.copy: VM’den geri rsync.
crabbox.remote_run accepted olarak işaretlenebilir. accepted değerini başarısız bir senaryo değil, açıklamalı geçiş olarak değerlendirin.
Çalıştırma yavaşsa:
- warmup baskınsa: daha iyi bir Crabbox sağlayıcı imajını önceden hazırlayın veya terfi ettirin;
sourceiçinde remote_run baskınsa: sıcak kira kullanın, pnpm store yeniden kullanımını iyileştirin veya makine önkoşullarını sağlayıcı imajına taşıyın;prehydratediçinde remote_run baskınsa: uzak çalışma alanı aslında hazır değildir ya da Gateway/tarayıcı/Slack kurulumu yavaştır;- artifact kopyalama baskınsa: video boyutunu ve artifact dizini içeriklerini inceleyin.
Kanıt kontrol listesi
İyi bir PR yorumu şunları göstermelidir:- senaryo id’si ve aday SHA;
- GitHub Actions çalıştırma URL’si;
- artifact URL’si;
- satır içi onay denetim noktası ekran görüntüsü veya oturum açılmış sıcak kiradan bir Slack Web ekran görüntüsü;
- mevcut olduğunda satır içi animasyonlu önizleme;
- tam MP4 ve kırpılmış MP4 bağlantıları;
- geçme/kalma durumu;
- ekli raporda zamanlama özeti.
Hata işleme
Workflow VM çalıştırmasından önce başarısız olursa önce Actions işini inceleyin. Tipik nedenler güvenilmeyencandidate_ref, eksik environment gizli bilgileri veya aday install/build hatasıdır.
VM çalıştırması başarısız olur ancak ekran görüntüleri geri kopyalanırsa şunları inceleyin:
crabbox vnc ... komutuyla VNC açın.
İşiniz bittiğinde kirayı durdurun:
--lease-id ile yeniden çalıştırın. Bu tarayıcı profilini sağlayıcı imajına işlemeyin.