Testler
- Tam test kiti (paketler, live, Docker): Testing
-
pnpm test:force: Varsayılan kontrol portunu tutan bekleyen gateway süreçlerini sonlandırır, ardından sunucu testleri çalışan bir örnekle çakışmasın diye yalıtılmış bir gateway portuyla tam Vitest paketini çalıştırır. Önceki bir gateway çalıştırması port 18789’u meşgul bıraktıysa bunu kullanın. -
pnpm test:coverage: Birim paketini V8 coverage ile çalıştırır (vitest.unit.config.tsüzerinden). Genel eşikler satırlar/dallar/fonksiyonlar/ifadeler için %70’tir. Coverage, hedefin birim testine uygun mantığa odaklanmasını sağlamak için entegrasyon ağırlıklı giriş noktalarını (CLI wiring, gateway/telegram bridges, webchat static server) hariç tutar. -
pnpm test:coverage:changed: Yalnızcaorigin/mainüzerinden değişen dosyalar için birim coverage çalıştırır. -
pnpm test:changed: Yerel Vitest projects yapılandırmasını--changed origin/mainile çalıştırır. Temel yapılandırma, gerektiğinde wiring değişikliklerinin yine geniş kapsamda yeniden çalıştırılmasını sağlamak için projects/config dosyalarınıforceRerunTriggersolarak ele alır. -
pnpm test: Yerel Vitest root projects yapılandırmasını doğrudan çalıştırır. Dosya filtreleri, yapılandırılmış projeler arasında yerel olarak çalışır. -
Temel Vitest yapılandırması artık varsayılan olarak
pool: "threads"veisolate: falsekullanır; paylaşılan yalıtımsız çalıştırıcı repo yapılandırmaları genelinde etkindir. -
pnpm test:channels,vitest.channels.config.tsdosyasını çalıştırır. -
pnpm test:extensions,vitest.extensions.config.tsdosyasını çalıştırır. -
pnpm test:extensions: Uzantı/plugin paketlerini çalıştırır. -
pnpm test:perf:imports: Yerel root projects çalıştırması için Vitest import-duration + import-breakdown raporlamasını etkinleştirir. -
pnpm test:perf:imports:changed: Aynı import profillemesi, ancak yalnızcaorigin/mainüzerinden değişen dosyalar için. -
pnpm test:perf:profile:main: Vitest ana iş parçacığı için bir CPU profili yazar (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: Birim çalıştırıcısı için CPU + heap profilleri yazar (.artifacts/vitest-runner-profile). -
Gateway entegrasyonu:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testveyapnpm test:gatewayile isteğe bağlı olarak etkinleştirilir. -
pnpm test:e2e: Gateway uçtan uca smoke testlerini çalıştırır (çoklu örnek WS/HTTP/node eşleştirme). Varsayılan olarakvitest.e2e.config.tsiçinde uyarlanabilir worker’larlathreads+isolate: falsekullanır;OPENCLAW_E2E_WORKERS=<n>ile ayarlayın ve ayrıntılı günlükler içinOPENCLAW_E2E_VERBOSE=1kullanın. -
pnpm test:live: Provider live testlerini çalıştırır (minimax/zai). Atlanmamaları için API anahtarları veLIVE=1(veya provider’a özgü*_LIVE_TEST=1) gerekir. -
pnpm test:docker:openwebui: Docker içinde OpenClaw + Open WebUI başlatır, Open WebUI üzerinden oturum açar,/api/modelsuç noktasını kontrol eder, ardından/api/chat/completionsüzerinden gerçek bir proxied chat çalıştırır. Kullanılabilir bir live model anahtarı gerekir (örneğin~/.profileiçindeki OpenAI), harici bir Open WebUI imajı çeker ve normal birim/e2e paketleri gibi CI açısından kararlı olması beklenmez. -
pnpm test:docker:mcp-channels: Seed edilmiş bir Gateway container’ı veopenclaw mcp servebaşlatan ikinci bir istemci container’ını ayağa kaldırır, ardından yönlendirilmiş konuşma keşfini, transcript okumalarını, attachment metadata’sını, live event queue davranışını, giden send routing’ini ve gerçek stdio bridge üzerinden Claude tarzı kanal + izin bildirimlerini doğrular. Claude bildirim doğrulaması ham stdio MCP frame’lerini doğrudan okur; böylece smoke testi bridge’in gerçekten ne gönderdiğini yansıtır.
Yerel PR gate
Yerel PR land/gate kontrolleri için şunları çalıştırın:pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test yoğun yüklü bir makinede kararsız davranırsa, bunu regresyon saymadan önce bir kez daha çalıştırın, sonra pnpm test <path/to/test> ile izole edin. Belleği sınırlı makineler için şunları kullanın:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Model gecikme kıyaslaması (yerel anahtarlar)
Betik:scripts/bench-model.ts
Kullanım:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- İsteğe bağlı ortam değişkenleri:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Varsayılan istem: “Reply with a single word: ok. No punctuation or extra text.”
- minimax medyan 1279ms (en düşük 1114, en yüksek 2431)
- opus medyan 2454ms (en düşük 1224, en yüksek 3170)
CLI başlangıç kıyaslaması
Betik:scripts/bench-cli-startup.ts
Kullanım:
pnpm test:startup:benchpnpm test:startup:bench:smokepnpm test:startup:bench:savepnpm test:startup:bench:updatepnpm test:startup:bench:checkpnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --preset realpnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset allpnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpupnpm tsx scripts/bench-cli-startup.ts --json
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: her iki ön ayar
sampleCount, ortalama, p50, p95, min/max, exit-code/signal dağılımı ve en yüksek RSS özetlerini içerir. İsteğe bağlı --cpu-prof-dir / --heap-prof-dir, çalıştırma başına V8 profilleri yazar; böylece zamanlama ve profil yakalama aynı altyapıyı kullanır.
Kaydedilmiş çıktı kuralları:
pnpm test:startup:bench:smoke, hedefli smoke artifact’ını.artifacts/cli-startup-bench-smoke.jsonkonumuna yazarpnpm test:startup:bench:save,runs=5vewarmup=1kullanarak tam paket artifact’ını.artifacts/cli-startup-bench-all.jsonkonumuna yazarpnpm test:startup:bench:update,runs=5vewarmup=1kullanarak repoya kaydedilmiş baseline fixture’ıtest/fixtures/cli-startup-bench.jsonkonumunda yeniler
test/fixtures/cli-startup-bench.jsonpnpm test:startup:bench:updateile yenileyin- Geçerli sonuçları fixture ile
pnpm test:startup:bench:checkkullanarak karşılaştırın
Onboarding E2E (Docker)
Docker isteğe bağlıdır; buna yalnızca container içinde onboarding smoke testleri için ihtiyaç vardır. Temiz bir Linux container’ında tam cold-start akışı:openclaw health çalıştırır.
QR import smoke (Docker)
qrcode-terminal paketinin desteklenen Docker Node çalışma zamanlarında (varsayılan Node 24, uyumlu Node 22) yüklendiğini doğrular: