Testing and CI
Testler
- Tam test kiti (paketler, canlı, Docker): Test
- Güncelleme ve plugin paketi doğrulaması: Güncellemeleri ve pluginleri test etme
Agent varsayılanı
Agent oturumları, yalnızca güvenilir kaynaklar için ve mevcut bağımlılık kurulumu hazır olduğunda birkaç odaklı testi ve düşük maliyetli statik denetimi yerel olarak çalıştırır. Güvenilmeyen depo araçlarını asla yerel olarak çalıştırmayın. Daha büyük paketler, tür denetimi/lint dağılımlı değişiklik kapıları, derlemeler, Docker, paket hatları, E2E, canlı kanıt ve platformlar arası doğrulama Crabbox aracılığıyla uzaktan çalıştırılır. Güvenilir bakım sorumlularının ağır kanıtları için varsayılan olarak Blacksmith Testbox kullanılır. Yapılandırılmış Testbox iş akışı kimlik bilgilerini yüklediğinden, güvenilmeyen katkıcı veya çatallama kodu bunun yerine gizli bilgisiz çatallama CI'ını ya da arındırılmış doğrudan AWS Crabbox'ı kullanmalıdır.
Öngörülen işler için önceden ısıtma yapmayın. İlk ağır komut
hazır olduğunda arka ucu gecikmeli olarak edinin, döndürülen tbx_... kimliğini sonraki ağır
komutlar için yeniden kullanın, her çalıştırmada mevcut çalışma kopyasını eşitleyin ve devretmeden önce durdurun.
İlk başarılı yeniden kullanımdan sonra sarmalayıcı, kiralamanın temel,
bağımlılık ve Testbox iş akışı parmak izini .crabbox/testbox-leases/ altında kaydeder.
Yalnızca kaynak düzenlemeleri, ısıtılmış kutuyu yeniden kullanmaya devam eder. Birleştirme temelinin, kilit dosyasının,
paket yöneticisi girdisinin, sarmalayıcının veya Testbox iş akışının değişmesi kapalı hata verir ve
yeni bir kiralama gerektirir. Her çalıştırma yine de mevcut çalışma kopyasını eşitler.
OPENCLAW_TESTBOX_ALLOW_STALE=1 yalnızca kasıtlı tanılama içindir,
sürüm kanıtı için değildir.
Aşağıdaki yerel test komutları, insan iş akışları ve sınırlı agent kanıtı içindir. Uzak sağlayıcının kullanılamadığı bildirilmelidir; bu durum, geniş bir yerel kapıyı sessizce çalıştırma izni değildir.
Güvenilmeyen ağır kanıt için --provider aws ile gecikmeli olarak ısıtın. Her çalıştırma
CRABBOX_ENV_ALLOW=CI değerini ayarlamalı, --provider aws --no-hydrate seçeneğini geçirmeli ve
bağımlılıkları kurmadan veya testleri çalıştırmadan önce yeni bir geçici uzak HOME
kullanmalıdır. Bu güvenilmeyen kaynağa özel olarak yeni ısıtılmış bir kiralama kullanın; güvenilir
veya daha önce kimlik bilgileri yüklenmiş bir kiralamayı asla yeniden kullanmayın. Temiz ve güvenilir bir
main çalışma kopyasından kurulu güvenilir bir Crabbox ikili dosyası başlatın ve
yalnızca uzak PR'ı --fresh-pr ile getirin; güvenilmeyen çalışma kopyasının sarmalayıcısını veya yapılandırmasını
asla yerel olarak çalıştırmayın. CRABBOX_AWS_INSTANCE_PROFILE ayarını kaldırın ve çözümlenen
aws.instanceProfile boş değilse kapalı hata verin. Herhangi bir kurulum/testten önce,
IMDSv2 belirteci gerektirmek, IAM kimlik bilgileri uç noktasının 404 döndürdüğünü kanıtlamak ve
uzak git rev-parse HEAD değerinin incelenmiş PR başlığının tam SHA değeriyle eşleştiğini doğrulamak için
güvenilir mutlak yollu araçları kullanın. Kiralamayı bu SHA'ya bağlayın ve başlık
değiştiğinde durdurup yeniden ısıtın. Temiz main üzerinden güvenilir
scripts/crabbox-untrusted-bootstrap.sh dosyasını --fresh-pr ile birlikte yükleyin; sabitlenmiş Node/pnpm'i kurar, SHA'yı
ve paket yöneticisi sabitlemesini doğrular, HOME ortamını yalıtır, bağımlılıkları kurar ve ardından
istenen testi çalıştırır. Aracı, rol bulunmadığını veya uzak PR'ın mevcut olmadığını kanıtlayamazsa
gizli bilgisiz çatallama CI'ını kullanın. hydrate-github, --no-sync veya
kimlik bilgileri yüklenmiş bir Testbox iş akışı kullanmayın.
Tüm CRABBOX_TAILSCALE* geçersiz kılmalarını kaldırın, --network public --tailscale=false değerini zorunlu kılın, çıkış düğümü/LAN bayraklarını temizleyin ve herhangi bir betiği yüklemeden önce crabbox inspect çıktısının
Tailscale durumu olmadan genel ağ bağlantısı bildirmesini zorunlu kılın.
Rutin yerel sıra
- Değişen kapsamlı Vitest kanıtı için
pnpm test:changed. - Tek bir dosya, dizin veya açık hedef için
pnpm test <path-or-filter>. - Yalnızca tam yerel Vitest paketine kasıtlı olarak ihtiyaç duyduğunuzda
pnpm test.
Bir Codex çalışma ağacında veya bağlantılı/seyrek çalışma kopyasında agentlar doğrudan yerel
pnpm test* / pnpm check* / pnpm crabbox:run kullanımından kaçınır:
- Hazır bağımlılıklarla sınırlı odaklı kanıt:
node scripts/run-vitest.mjs <path-or-filter>. - Önce sınıflandırmalı değişiklik denetimi:
node scripts/check-changed.mjs; yalnızca doküman, değişikliksiz ve küçük meta veri planları, bağımlılıklar hazır olduğunda yerel kalırken ağır veya bağımlılıkları eksik planlar Testbox'a devredilir. - Açıkça tutulan kiralamayla geniş kanıt: pnpm'in Testbox içinde çalışması için
node scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox ... -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changed. - Sarmalayıcının son
exitCodedeğeri ve zamanlama JSON'u komut sonucudur. Devredilmiş bir Blacksmith GitHub Actions çalıştırması, Testbox canlı tutma eyleminin dışından durdurulduğu için başarılı bir SSH komutundan sonracancelledgösterebilir; bunu hata olarak değerlendirmeden önce sarmalayıcı özetini ve komut çıktısını kontrol edin. OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree <local-heavy-check command>:pnpm check:changedve hedeflipnpm test ...gibi komutlar için ağır denetim serileştirmesini Git ortak dizini yerine mevcut çalışma ağacında tutar. Bunu yalnızca bağlantılı çalışma ağaçlarında bağımsız denetimleri kasıtlı olarak çalıştırdığınız yüksek kapasiteli yerel ana makinelerde kullanın.
Temel komutlar
Test sarmalayıcı çalıştırmaları kısa bir [test] passed|failed|skipped ... in ... özetiyle sona erer; Vitest'in kendi süre satırı parça başına ayrıntı olarak kalır.
| Komut | Yaptığı işlem |
|---|---|
pnpm test |
Açık dosya/dizin hedefleri, kapsamlı Vitest hatları üzerinden yönlendirilir. Hedefsiz çalıştırmalar tam paket kanıtıdır: sabit parça grupları yerel paralel çalıştırma için yaprak yapılandırmalara genişletilir ve beklenen parça dağılımı başlamadan önce yazdırılır. Uzantı grubu, tek bir dev kök proje işlemi yerine her zaman uzantı başına parça yapılandırmalarına genişletilir. |
pnpm test:changed |
Düşük maliyetli akıllı değiştirilmiş test çalıştırması: doğrudan test düzenlemelerinden, kardeş *.test.ts dosyalarından, açık kaynak eşlemelerinden ve yerel içe aktarma grafiğinden kesin hedefler. Geniş/yapılandırma/paket değişiklikleri, kesin testlerle eşlenmedikçe atlanır. |
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed |
Açık geniş değiştirilmiş test çalıştırması; bir test düzeneği/yapılandırması/paket düzenlemesinin Vitest'in daha geniş değiştirilmiş test davranışına geri dönmesi gerektiğinde kullanın. |
pnpm test:force |
Yapılandırılmış OpenClaw gateway bağlantı noktasını (varsayılan 18789) boşaltır, ardından sunucu testlerinin çalışan bir örnekle çakışmaması için tam paketi yalıtılmış bir gateway bağlantı noktasıyla çalıştırır. |
pnpm test:coverage |
Varsayılan birim hattı (vitest.unit.config.ts) için bilgilendirici bir V8 kapsam raporu üretir; hiçbir kapsam eşiği zorunlu tutulmaz. |
pnpm test:coverage:changed |
Yalnızca origin/main tarihinden beri değişen dosyalar için birim kapsamı. |
pnpm changed:lanes |
origin/main ile karşılaştırılan farkın tetiklediği mimari hatları gösterir. |
pnpm check:changed |
Çalıştırmayı seçmeden önce değişen hatları sınıflandırır. Yalnızca doküman, değişikliksiz ve küçük meta veri planları, bağımlılıklar hazır olduğunda yerel kalır; tür denetimi/lint dağılımlı, diğer ağır hatlı veya yerel bağımlılıkları eksik planlar CI dışında Crabbox/Testbox'a devredilir. Vitest'i çalıştırmaz; test kanıtı için pnpm test:changed veya pnpm test <target> kullanın. |
Paylaşılan test durumu ve işlem yardımcıları
src/test-utils/openclaw-test-state.ts: bir test yalıtılmış birHOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH, yapılandırma fikstürü, çalışma alanı, agent dizini veya kimlik doğrulama profili deposu gerektirdiğinde Vitest'ten kullanın.pnpm test:env-mutations:report:HOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH,OPENCLAW_WORKSPACE_DIRveya ilgili ortam anahtarlarını doğrudan değiştiren testlerin/düzeneklerin engellemesiz raporu. Paylaşılan test durumu yardımcısı için geçiş adaylarını bulmak üzere kullanın.test/helpers/openclaw-test-instance.ts: çalışan bir Gateway, CLI ortamı, günlük yakalama ve temizliği tek bir yerde gerektiren işlem düzeyinde E2E testleri.scripts/lib/docker-e2e-image.shkaynağını kullanan Docker/Bash E2E hatları,docker_e2e_test_state_shell_b64 <label> <scenario>değerini konteynere geçirebilir vescripts/lib/openclaw-e2e-instance.shile kodunu çözebilir; çoklu ana dizin betikleridocker_e2e_test_state_function_b64değerini geçirebilir ve her akıştaopenclaw_test_state_create <label> <scenario>çağrısı yapabilir.node scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --json, kaynak olarak kullanılabilir bir ana makine ortam dosyası yazar (createöncesindeki--, daha yeni Node çalışma zamanlarının--env-filedeğerini bir Node bayrağı olarak değerlendirmesini önler). Gateway başlatan hatlar; giriş noktası çözümlemesi, sahte OpenAI başlatması, ön plan/arka plan başlatması, hazır olma yoklamaları, durum ortamı dışa aktarımı, günlük dökümleri ve işlem temizliği içinscripts/lib/openclaw-e2e-instance.shkaynağını kullanabilir.
Control UI, TUI ve uzantı hatları
- Sahte Control UI E2E:
pnpm test:ui:e2e, Vite Control UI'ını başlatan ve sahte bir Gateway WebSocket'e karşı gerçek bir Chromium sayfasını yönlendiren Vitest + Playwright hattını çalıştırır. Testlerui/src/**/*.e2e.test.tsiçinde; paylaşılan sahte nesneler/denetimlerui/src/test-helpers/control-ui-e2e.tsiçinde bulunur.pnpm test:e2ebu hattı içerir. Hedefli kanıt dâhil olmak üzere ajan çalıştırmaları varsayılan olarak Testbox/Crabbox kullanır;node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.tsyalnızca açıkça belirtilmiş bir yerel geri dönüş için kullanılmalıdır. - TUI PTY testleri:
node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.ts, hızlı sahte arka uç PTY hattını çalıştırır.OPENCLAW_TUI_PTY_INCLUDE_LOCAL=1veyapnpm tui:pty:test:watch --mode local, yalnızca harici model uç noktasını taklit eden daha yavaştui --localduman testini çalıştırır. Ham ANSI anlık görüntülerini değil, kararlı görünür metni veya fikstür çağrılarını doğrulayın. pnpm test:extensionsvepnpm test extensions, tüm uzantı/Plugin parçalarını çalıştırır. Ağır kanal Pluginleri, tarayıcı Plugini ve OpenAI özel parçalar olarak çalışır; diğer Plugin grupları toplu kalır.pnpm test extensions/<id>, tek bir paketlenmiş Plugin hattını çalıştırır.- Kardeş testlere sahip kaynak dosyalar, daha geniş dizin globlarına geri dönmeden önce ilgili kardeş teste eşlenir.
src/channels/plugins/contracts/test-helpers,src/plugin-sdk/test-helpersvesrc/plugins/contractsaltındaki yardımcı düzenlemeleri, bağımlılık yolu kesin olduğunda her parçayı geniş kapsamda çalıştırmak yerine içe aktaran testleri çalıştırmak için yerel bir içe aktarma grafiği kullanır. - Sözleşme dizini hedefleri kendi sözleşme hatlarına dağıtılır: genel
channels/pluginsprojelericontracts/**öğesini hariç tuttuğundan,pnpm test src/channels/plugins/contractsdört kanal sözleşmesi yapılandırmasını vepnpm test src/plugins/contractsPlugin sözleşmeleri yapılandırmasını çalıştırır. auto-reply, yanıt test düzeneğinin daha hafif üst düzey durum/token/yardımcı testlerine baskın gelmemesi için üç özel yapılandırmaya (core,top-level,reply) ayrılır.- Seçilen
plugin-sdkvecommandstest dosyaları, yalnızcatest/setup.tsöğesini tutan özel hafif hatlar üzerinden yönlendirilir; çalışma zamanı açısından ağır durumlar mevcut hatlarında bırakılır. - Temel Vitest yapılandırması, repo yapılandırmalarının tamamında paylaşılan yalıtılmamış çalıştırıcı etkin olacak şekilde varsayılan olarak
pool: "threads"veisolate: falsedeğerlerini kullanır. pnpm test:channels,vitest.channels.config.tsöğesini çalıştırır.
Gateway ve E2E
- Gateway entegrasyonu isteğe bağlıdır:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testveyapnpm test:gateway. pnpm test:e2e: repo E2E toplamı =pnpm test:e2e:gateway && pnpm test:ui:e2e.pnpm test:e2e:gateway: Gateway uçtan uca duman testleri (çoklu örnek WS/HTTP/Node eşleştirmesi).vitest.e2e.config.tsiçindeki uyarlanabilir işçilerle varsayılan olarakthreads+isolate: falsekullanılır;OPENCLAW_E2E_WORKERS=<n>ile ayarlayın, ayrıntılı günlükler içinOPENCLAW_E2E_VERBOSE=1kullanın.pnpm test:live: sağlayıcı canlı testleri (Claude/Minimax/DeepSeek/z.ai/vb.,*.live.test.tstarafından denetlenir). Atlamayı kaldırmak için API anahtarları veLIVE=1(veyaOPENCLAW_LIVE_TEST=1) gerekir; ayrıntılı çıktı içinOPENCLAW_LIVE_TEST_QUIET=0kullanın.
Tam Docker paketi (pnpm test:docker:all)
Paylaşılan canlı test imajını oluşturur, OpenClaw'ı bir npm tarball'ı olarak bir kez paketler, temel bir Node/Git çalıştırıcı imajı ile bu tarball'ı /app içine yükleyen işlevsel bir imajı oluşturur/yeniden kullanır ve ardından Docker duman testi hatlarını ağırlıklı bir zamanlayıcı üzerinden çalıştırır. scripts/package-openclaw-for-docker.mjs, tek yerel/CI paketleyicisidir ve Docker tarball'ı kullanmadan önce tarball'ı ve dist/postinstall-inventory.json öğesini doğrular.
- Temel imaj (
OPENCLAW_DOCKER_E2E_BARE_IMAGE): yükleyici/güncelleme/Plugin bağımlılığı hatları; kopyalanmış repo kaynakları yerine önceden oluşturulmuş tarball'ı bağlar. - İşlevsel imaj (
OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE): normal, derlenmiş uygulama işlevselliği hatları. - Hat tanımları:
scripts/lib/docker-e2e-scenarios.mjs. Planlayıcı:scripts/lib/docker-e2e-plan.mjs. Yürütücü:scripts/test-docker-all.mjs. node scripts/test-docker-all.mjs --plan-json, Docker'ı oluşturmadan veya çalıştırmadan zamanlayıcının sahip olduğu CI planını (hatlar, imaj türleri, paket/canlı imaj gereksinimleri, durum senaryoları, kimlik bilgisi denetimleri) üretir.
Zamanlama ayarları (ortam değişkenleri, varsayılanlar parantez içinde):
| Ortam değişkeni | Varsayılan | Amaç |
|---|---|---|
OPENCLAW_DOCKER_ALL_PARALLELISM |
10 | İşlem yuvaları. |
OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM |
10 | Sağlayıcıya duyarlı kuyruk havuzu. |
OPENCLAW_DOCKER_ALL_LIVE_LIMIT |
9 | Ağır canlı sağlayıcı hattı sınırı. |
OPENCLAW_DOCKER_ALL_NPM_LIMIT |
5 | npm kaynağı hattı sınırı. |
OPENCLAW_DOCKER_ALL_SERVICE_LIMIT |
7 | Hizmet kaynağı hattı sınırı. |
OPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT / _CODEX_LIMIT / _GEMINI_LIMIT / _DROID_LIMIT / _OPENCODE_LIMIT |
4 | Sağlayıcı başına ağır hat sınırları. |
OPENCLAW_DOCKER_ALL_LIVE_OPENAI_LIMIT / _TELEGRAM_LIMIT |
1 | Sağlayıcı başına daha dar sınırlar. |
OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT / OPENCLAW_DOCKER_ALL_DOCKER_LIMIT |
- | Daha büyük ana makineler için geçersiz kılma. |
OPENCLAW_DOCKER_ALL_START_STAGGER_MS |
2000 | Hat başlangıçları arasındaki gecikme; yerel Docker daemon oluşturma fırtınalarını önler. |
OPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS |
7,200,000 (120 dk) | Hat başına geri dönüş zaman aşımı; seçili canlı/kuyruk hatları daha sıkı sınırlar kullanır. |
OPENCLAW_DOCKER_ALL_LIVE_RETRIES |
1 | Geçici canlı sağlayıcı hataları için yeniden denemeler. |
OPENCLAW_DOCKER_ALL_DRY_RUN |
kapalı | Docker'ı çalıştırmadan hat manifestini yazdırır. |
OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS |
30000 | Etkin hat durumu yazdırma aralığı. |
OPENCLAW_DOCKER_ALL_TIMINGS |
açık | En uzundan ilk sıralama için .artifacts/docker-tests/lane-timings.json öğesini yeniden kullanır; devre dışı bırakmak için 0 olarak ayarlayın. |
OPENCLAW_DOCKER_ALL_LIVE_MODE |
- | Yalnızca deterministik/yerel hatlar için skip, yalnızca canlı sağlayıcı hatları için only. Diğer adlar: pnpm test:docker:local:all, pnpm test:docker:live:all. Yalnızca canlı modu, ana ve kuyruk canlı hatlarını tek bir en uzundan ilk havuzda birleştirir; böylece sağlayıcı kovaları Claude/Codex/Gemini işlerini birlikte paketler. |
OPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS |
180 | CLI arka ucu Docker kurulum zaman aşımı. |
Kaynak sınırları için ortam değişkeni kalıbı OPENCLAW_DOCKER_ALL_<RESOURCE>_LIMIT şeklindedir (kaynak adı büyük harfe dönüştürülür, alfasayısal olmayan karakterler _ biçiminde daraltılır).
Diğer davranışlar: çalıştırıcı varsayılan olarak Docker ön kontrollerini yapar, eski OpenClaw E2E konteynerlerini temizler, uyumlu hatlar arasında sağlayıcı CLI araç önbelleklerini paylaşır ve OPENCLAW_DOCKER_ALL_FAIL_FAST=0 ayarlanmadığı sürece ilk hatadan sonra yeni havuzlanmış hatları zamanlamayı durdurur. Düşük paralellikli bir ana bilgisayarda bir hat etkin ağırlık/kaynak sınırını aşarsa yine de boş bir havuzdan başlayabilir ve kapasiteyi serbest bırakana kadar tek başına çalışabilir. Hat başına günlükler, summary.json, failures.json ve aşama zamanlamaları .artifacts/docker-tests/<run-id>/ altında yazılır; yavaş hatları incelemek için pnpm test:docker:timings <summary.json>, düşük maliyetli hedefli yeniden çalıştırma komutlarını yazdırmak için pnpm test:docker:rerun <run-id|summary.json|failures.json> kullanın.
Dikkate değer Docker hatları
| Komut | Doğruladıkları |
|---|---|
pnpm test:docker:browser-cdp-snapshot |
Ham CDP + yalıtılmış Gateway içeren Chromium destekli kaynak E2E konteyneri; browser doctor --deep CDP rol anlık görüntüleri bağlantı URL'lerini, imleçle tıklanabilir hâle getirilen öğeleri, iframe referanslarını ve çerçeve meta verilerini içerir. |
pnpm test:docker:skill-install |
Paketlenmiş tarball'u skills.install.allowUploadedArchives: false ile yalın bir Docker çalıştırıcısına kurar, canlı ClawHub aramasından güncel bir skill slug'ı çözümler, openclaw skills install aracılığıyla kurar ve SKILL.md, .clawhub/origin.json, .clawhub/lock.json ile skills info --json öğelerini doğrular. |
pnpm test:docker:live-cli-backend:claude, :claude:resume, :claude:mcp |
Odaklı CLI arka uç canlı yoklamaları; Gemini için eşleşen :resume ve :mcp takma adları vardır. |
pnpm test:docker:openwebui |
Docker ortamındaki OpenClaw + Open WebUI: oturum açar, /api/models öğesini denetler, /api/chat/completions üzerinden gerçekten proxy'lenen bir sohbet çalıştırır. Kullanılabilir bir canlı model anahtarı gerektirir ve harici bir imaj çeker; birim/e2e paketleri gibi CI açısından kararlı olması beklenmez. |
pnpm test:docker:mcp-channels |
Önceden verilerle doldurulmuş Gateway konteyneri ve openclaw mcp serve başlatan bir istemci konteyneri: yönlendirilmiş konuşma keşfi, transkript okumaları, ek meta verileri, canlı olay kuyruğu davranışı, giden gönderim yönlendirmesi ve gerçek stdio köprüsü üzerinden Claude tarzı kanal + izin bildirimleri (doğrulama ham stdio MCP çerçevelerini doğrudan okur). |
pnpm test:docker:upgrade-survivor |
Paketlenmiş tarball'u eski bir kullanıcının değiştirilmiş fikstürü üzerine kurar; canlı sağlayıcı/kanal anahtarları olmadan paket güncellemesini ve etkileşimsiz doctor'ı çalıştırır; geri döngü Gateway'i başlatır; aracılar/kanal yapılandırması/Plugin izin listeleri/çalışma alanı/oturum dosyaları/eski Plugin bağımlılık durumu/başlangıç/RPC durumunun korunduğunu denetler. |
pnpm test:docker:published-upgrade-survivor |
Varsayılan olarak openclaw@latest kurar, gerçekçi mevcut kullanıcı dosyaları oluşturur, yerleşik bir openclaw config set tarifiyle yapılandırır, paketlenmiş tarball'a günceller, etkileşimsiz doctor'ı çalıştırır, .artifacts/upgrade-survivor/summary.json yazar ve /healthz, /readyz ile RPC durumunu denetler. OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC ile geçersiz kılın, OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECS ile bir matrisi genişletin veya OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues ile senaryo fikstürleri ekleyin (configured-plugin-installs ve stale-source-plugin-shadow dâhildir). Paket Kabulü bunları published_upgrade_survivor_baseline(s) / _scenarios olarak sunar ve last-stable-4 veya all-since-2026.4.23 gibi meta belirteçleri çözümler. |
pnpm test:docker:update-migration |
Varsayılan olarak openclaw@2026.4.23 sürümünden başlayan, plugin-deps-cleanup senaryosundaki yayımlanmış yükseltmeden sağ çıkma düzeneği. Update Migration iş akışı, Tam Sürüm CI dışında yapılandırılmış Plugin bağımlılık temizliğini kanıtlamak için bunu baselines=all-since-2026.4.23 ile genişletir. |
pnpm test:docker:plugins |
Yerel yol, file:, üst düzeye taşınmış bağımlılıklara sahip npm kayıt defteri paketleri, hareketli git referansları, ClawHub fikstürleri, pazar yeri güncellemeleri ve Claude paketini etkinleştirme/inceleme için kurulum/güncelleme temel kontrolü. |
Yerel PR geçidi
Yerel PR birleştirme/geçit kontrolleri için şunları çalıştırın:
pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
pnpm test yoğun bir ana bilgisayarda kararsızlık gösterirse bunu gerileme olarak değerlendirmeden önce bir kez yeniden çalıştırın, ardından pnpm test <path/to/test> ile yalıtın. Belleği kısıtlı ana bilgisayarlar için:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Test performansı araçları
pnpm test:perf:imports: Açık dosya/dizin hedefleri için kapsamlı hat yönlendirmesini kullanmaya devam ederken Vitest içe aktarma süresi + içe aktarma dökümü raporlamasını etkinleştirir.pnpm test:perf:imports:changedaynı profil oluşturmayıorigin/maintarihinden beri değişen dosyalarla sınırlar.pnpm test:perf:changed:bench -- --ref <git-ref>, aynı kaydedilmiş git farkı için yönlendirilmiş değişiklik modundaki yolu yerel kök proje çalıştırmasıyla karşılaştırmalı olarak ölçer;pnpm test:perf:changed:bench -- --worktree, önce kaydetmeden mevcut çalışma ağacındaki değişiklik kümesini karşılaştırmalı olarak ölçer.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 + yığın profilleri yazar (.artifacts/vitest-runner-profile).pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: Her tam paket Vitest yaprak yapılandırmasını seri olarak çalıştırır ve gruplandırılmış süre verilerinin yanı sıra yapılandırma başına JSON/günlük yapıtları yazar. Tam paket raporları, önceki dosyalardan kalan modül grafiklerinin ve GC duraklamalarının sonraki doğrulamalara yüklenmemesi için varsayılan olarak dosyaları yalıtır;-- --no-isolateseçeneğini yalnızca paylaşılan çalışan birikimini kasıtlı olarak profillerken geçirin. Test Performansı Aracısı, yavaş test düzeltmelerini denemeden önce bunu temel değer olarak kullanır.pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json, performans odaklı bir değişiklikten sonra gruplandırılmış raporları karşılaştırır.- Tam, uzantı ve içerme deseni parça çalıştırmaları,
.artifacts/vitest-shard-timings.jsoniçindeki yerel zamanlama verilerini günceller; sonraki tüm yapılandırma çalıştırmaları yavaş ve hızlı parçaları dengelemek için bu zamanlamaları kullanır. İçerme deseni CI parçaları, parça adını zamanlama anahtarına ekler; bu, filtrelenmiş parça zamanlamalarını tüm yapılandırmanın zamanlama verilerinin yerine geçirmeden görünür tutar. Yerel zamanlama yapıtını yok saymak içinOPENCLAW_TEST_PROJECTS_TIMINGS=0ayarlayın.
Karşılaştırmalı ölçümler
Model gecikmesi (scripts/bench-model.ts)
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: "Tek bir kelimeyle yanıt verin: ok. Noktalama işareti veya ek metin kullanmayın."
CLI başlangıcı (scripts/bench-cli-startup.ts)
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.ts --runs 12pnpm 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 allÖn ayarlar:
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,tasks --json,tasks list --json,tasks audit --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: her iki ön ayarın birleşimi
Çıktı, komut başına sampleCount, ortalama, p50, p95, min/maks, çıkış kodu/sinyal dağılımı ve maksimum RSS'yi içerir. --cpu-prof-dir / --heap-prof-dir, her çalıştırma için V8 profilleri yazar.
Kaydedilen çıktı: pnpm test:startup:bench:smoke, .artifacts/cli-startup-bench-smoke.json dosyasını; pnpm test:startup:bench:save ise .artifacts/cli-startup-bench-all.json dosyasını (runs=5 warmup=1) yazar. Depoya eklenmiş sabit veri: test/fixtures/cli-startup-bench.json; pnpm test:startup:bench:update ile yenilenir ve pnpm test:startup:bench:check ile karşılaştırılır.
Gateway başlatma (scripts/bench-gateway-startup.ts)
Varsayılan olarak dist/entry.js konumundaki derlenmiş CLI girişini kullanır; önce pnpm build komutunu çalıştırın. Bunun yerine kaynak çalıştırıcısını ölçmek için --entry scripts/run-node.mjs iletin ve bu sonuçları derlenmiş giriş temel değerlerinden ayrı tutun.
pnpm test:startup:gateway -- --runs 5 --warmup 1pnpm test:startup:gateway -- --case skipChannels --case fiftyPlugins --runs 5node --import tsx scripts/bench-gateway-startup.ts --case default --runs 5 --output .artifacts/gateway-startup.jsonDurum kimlikleri: default, skipChannels (kanal başlatma atlanır), oneInternalHook, allInternalHooks, fiftyPlugins (50 manifest Plugin'i), fiftyStartupLazyPlugins (başlatma sırasında geç yüklenen 50 manifest Plugin'i).
Çıktı; ilk süreç çıktısını, /healthz, /readyz, HTTP dinleme günlüğü süresini, Gateway hazır günlüğü süresini, CPU süresini, CPU çekirdek oranını, maksimum RSS'yi, heap'i, başlatma izleme metriklerini, olay döngüsü gecikmesini ve Plugin arama tablosu ayrıntı metriklerini içerir. Betik, alt Gateway ortamında OPENCLAW_GATEWAY_STARTUP_TRACE=1 değerini ayarlar.
/healthz, canlılık durumudur (HTTP sunucusu yanıt verebilir). /readyz, kullanılabilir hazır olma durumudur (başlatma Plugin yardımcı süreçleri, kanallar ve bağlama sonrasında hazır olma açısından kritik işler tamamlanmıştır). Başlatma kancaları eşzamansız olarak dağıtılır ve hazır olma garantisinin parçası değildir. Hazır günlüğü süresi, Gateway'in dahili zaman damgasıdır; süreç tarafındaki ilişkilendirme için kullanışlıdır ancak harici /readyz yoklamasının yerini tutmaz.
Değişiklikleri karşılaştırırken JSON çıktısını veya --output kullanın. --cpu-prof-dir seçeneğini yalnızca izleme çıktısı, tek başına aşama zamanlamalarının açıklayamadığı içe aktarma, derleme veya CPU'ya bağlı bir işi gösterdikten sonra kullanın.
Gateway yeniden başlatma (scripts/bench-gateway-restart.ts)
Yalnızca macOS ve Linux'ta kullanılabilir (süreç içi yeniden başlatmalar için SIGUSR1 kullanır; Windows'ta hemen başarısız olur). Yukarıdaki Gateway başlatmayla aynı derlenmiş giriş varsayılanını ve --entry scripts/run-node.mjs geçersiz kılma seçeneğini kullanır.
pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5pnpm test:restart:gateway -- --case default --runs 3 --restarts 3 --warmup 1Durum kimlikleri: skipChannels, skipChannelsAcpxProbe (ACPX başlatma yoklaması açık), skipChannelsNoAcpxProbe (yoklama kapalı), default, fiftyPlugins.
Çıktı; sonraki /healthz, sonraki /readyz, kesinti süresi, yeniden başlatma hazır olma zamanlaması, CPU, RSS, yeni süreç için başlatma izleme metrikleri ve sinyal işleme, etkin işlerin tamamlanmasını bekleme, kapatma aşamaları, sonraki başlatma, hazır olma zamanlaması ve bellek anlık görüntüleri için yeniden başlatma izleme metriklerini içerir. Betik, OPENCLAW_GATEWAY_STARTUP_TRACE=1 ve OPENCLAW_GATEWAY_RESTART_TRACE=1 değerlerini ayarlar.
Bir değişiklik yeniden başlatma sinyallemesini, kapatma işleyicilerini, yeniden başlatma sonrası başlatmayı, yardımcı süreç kapatmayı, hizmet devrini veya yeniden başlatma sonrası hazır olma durumunu etkiliyorsa bu karşılaştırmalı testi kullanın. Gateway mekaniklerini kanal başlatmadan ayırmak için skipChannels ile başlayın; default veya Plugin ağırlıklı durumları yalnızca dar kapsamlı durum yeniden başlatma yolunu açıkladıktan sonra kullanın. İzleme metrikleri ilişkilendirme ipuçlarıdır, kesin hükümler değildir — bir yeniden başlatma değişikliğini birden fazla örnek, eşleşen sahip kapsamı, /healthz//readyz davranışı ve kullanıcıya görünür yeniden başlatma sözleşmesine göre değerlendirin.
İlk kurulum E2E'si (Docker)
İsteğe bağlıdır; yalnızca kapsayıcı içinde çalışan ilk kurulum duman testleri için gereklidir. Temiz bir Linux kapsayıcısındaki tam soğuk başlatma akışı:
scripts/e2e/onboard-docker.shEtkileşimli sihirbazı bir sözde tty üzerinden yönlendirir, yapılandırma/çalışma alanı/oturum dosyalarını doğrular, ardından Gateway'i başlatır ve openclaw health komutunu çalıştırır.
QR içe aktarma duman testi (Docker)
Bakımı yapılan QR çalışma zamanı yardımcısının desteklenen Docker Node çalışma zamanlarında (varsayılan Node 24, uyumlu Node 22) yüklendiğini doğrular:
pnpm test:docker:qr