Release and CI
Testler
-
Tam test kiti (paketler, canlı, Docker): Test
-
Güncelleme ve Plugin paketi doğrulaması: Güncellemeleri ve Pluginleri test etme
-
Rutin yerel test sırası:
- Değişiklik kapsamlı Vitest kanıtı için
pnpm test:changed. - Tek dosya, dizin veya açık hedef için
pnpm test <path-or-filter>. - Yalnızca tam yerel Vitest paketine bilerek ihtiyaç duyduğunuzda
pnpm test.
- Değişiklik kapsamlı Vitest kanıtı için
-
pnpm test:force: Varsayılan kontrol portunu tutan kalmış Gateway işlemlerini sonlandırır, ardından çalışan bir örnekle sunucu testleri çakışmasın diye tam Vitest paketini yalıtılmış bir Gateway portuyla çalıştırır. Önceki bir Gateway çalıştırması 18789 portunu dolu bıraktığında bunu kullanın. -
pnpm test:coverage: Birim paketini V8 kapsamıyla (vitest.unit.config.tsüzerinden) çalıştırır. Bu, tüm repo tüm dosya kapsamı değil, varsayılan birim hattı kapsam kapısıdır. Eşikler satırlar/fonksiyonlar/ifadeler için %70 ve dallar için %55'tir.coverage.allfalse olduğundan ve varsayılan hat, kapsam içeriklerini kardeş kaynak dosyaları olan hızlı olmayan birim testleriyle sınırlandırdığından, kapı rastlantısal olarak yüklediği her geçişli import yerine bu hattın sahip olduğu kaynağı ölçer. -
pnpm test:coverage:changed: Birim kapsamını yalnızcaorigin/mainsonrasında değişen dosyalar için çalıştırır. -
pnpm test:changed: ucuz akıllı değişiklik testi çalıştırması. Doğrudan test düzenlemelerinden, kardeş*.test.tsdosyalarından, açık kaynak eşlemelerinden ve yerel import grafiğinden kesin hedefleri çalıştırır. Geniş/config/paket değişiklikleri, kesin testlere eşlenmedikçe atlanır. -
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed: açık geniş değişiklik testi çalıştırması. Bir test harness/config/paket düzenlemesi Vitest'in daha geniş değişiklik testi davranışına geri düşmeliyse bunu kullanın. -
pnpm changed:lanes:origin/mainkarşısındaki diff tarafından tetiklenen mimari hatları gösterir. -
pnpm check:changed: CI dışında varsayılan olarak Crabbox/Testbox'a devreder, ardından uzak çocuk içindeorigin/mainkarşısındaki diff için akıllı değişiklik kontrol kapısını çalıştırır. Etkilenen mimari hatlar için typecheck, lint ve guard komutlarını çalıştırır, ancak Vitest testlerini çalıştırmaz. Test kanıtı içinpnpm test:changedveya açıkpnpm test <target>kullanın. -
Codex worktree'leri ve bağlı/sparse checkout'lar: pnpm'in bağımlılıkları uzlaştırmayacağını doğrulamadığınız sürece doğrudan yerel
pnpm test*,pnpm check*vepnpm crabbox:runkomutlarından kaçının. Çok küçük açık dosya kanıtı içinnode scripts/run-vitest.mjs <path-or-filter>kullanın; değişiklik kapıları veya geniş kanıt için pnpm'in Testbox içinde çalışması amacıylanode scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox ... -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changedkullanın. -
Testbox-through-Crabbox kanıtı: komut sonucu olarak wrapper'ın son
exitCodedeğerini ve zamanlama JSON'unu kullanın. Yetkilendirilen Blacksmith GitHub Actions çalıştırması, başarılı bir SSH komutundan sonracancelledgösterebilir çünkü Testbox keepalive action dışından durdurulur; bunu test hatası saymadan önce wrapper özetini ve komut çıktısını doğrulayın. -
OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree <local-heavy-check command>:pnpm check:changedve hedeflipnpm test ...gibi komutlarda heavy-check serileştirmesini Git ortak dizini yerine geçerli worktree içinde tutar. Bunu yalnızca yüksek kapasiteli yerel hostlarda, bağlı worktree'ler arasında bağımsız kontrolleri bilerek çalıştırdığınızda kullanın. -
pnpm test: açık dosya/dizin hedeflerini kapsamlı Vitest hatları üzerinden yönlendirir. Hedefsiz çalıştırmalar tam paket kanıtıdır: sabit shard grupları kullanır, yerel paralel yürütme için leaf config'lere genişler ve başlamadan önce beklenen yerel shard fanout'unu yazdırır. Extension grubu her zaman tek dev bir root-project işlemi yerine extension başına shard config'lerine genişler. -
Test wrapper çalıştırmaları kısa bir
[test] passed|failed|skipped ... in ...özetiyle biter. Vitest'in kendi süre satırı shard başına ayrıntı olarak kalır. -
Paylaşılan OpenClaw test durumu: Bir test yalıtılmış
HOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH, config fixture, workspace, ajan dizini veya auth-profile deposuna ihtiyaç duyduğunda Vitest'tensrc/test-utils/openclaw-test-state.tskullanın. -
pnpm test:env-mutations:report:HOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH,OPENCLAW_WORKSPACE_DIRveya ilgili OpenClaw env anahtarlarını doğrudan değiştiren testler ve harness'ler hakkında engellemeyen rapor. Paylaşılan test-state yardımcısına taşınacak adayları bulmak için kullanın. -
Control UI mocked E2E: Vite Control UI'yi başlatan ve mocked Gateway WebSocket'e karşı gerçek bir Chromium sayfasını süren Vitest + Playwright hattı için
pnpm test:ui:e2ekullanın. Testlerui/src/**/*.e2e.test.tsiçinde bulunur; paylaşılan mock'lar ve kontrollerui/src/test-helpers/control-ui-e2e.tsiçinde bulunur.pnpm test:e2ebu hattı içerir. Codex worktree'lerinde, bağımlılıklar yüklendikten sonra çok küçük hedefli kanıt içinnode scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.ts, daha geniş GUI kanıtı için Testbox/Crabbox tercih edin. -
İşlem E2E yardımcıları: Vitest işlem düzeyi E2E testi tek yerde çalışan bir Gateway, CLI env, log yakalama ve temizliğe ihtiyaç duyduğunda
test/helpers/openclaw-test-instance.tskullanın. -
TUI PTY testleri: hızlı fake-backend PTY hattı için
node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.tskullanın. Yalnızca harici model endpoint'ini mock'layan daha yavaştui --localsmoke içinOPENCLAW_TUI_PTY_INCLUDE_LOCAL=1veyapnpm tui:pty:test:watch --mode localkullanın. Ham ANSI snapshot'ları değil, kararlı görünen metni veya fixture çağrılarını assert edin. -
Docker/Bash E2E yardımcıları:
scripts/lib/docker-e2e-image.shkaynaklayan hatlar, container'adocker_e2e_test_state_shell_b64 <label> <scenario>geçirebilir ve bunuscripts/lib/openclaw-e2e-instance.shile decode edebilir; çok evli betiklerdocker_e2e_test_state_function_b64geçirebilir ve her flow içindeopenclaw_test_state_create <label> <scenario>çağırabilir. Daha düşük düzey çağırıcılar container içi shell snippet'i içinscripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>veya source edilebilir host env dosyası içinnode scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --jsonkullanabilir.createöncesindeki--, daha yeni Node runtime'larının--env-filedeğerini Node flag'i olarak değerlendirmesini engeller. Gateway başlatan Docker/Bash hatları entrypoint çözümleme, mock OpenAI başlangıcı, Gateway foreground/background başlatma, readiness probe'ları, state env dışa aktarma, log dökümleri ve işlem temizliği için container içindescripts/lib/openclaw-e2e-instance.shkaynaklayabilir. -
Tam, extension ve include-pattern shard çalıştırmaları yerel zamanlama verilerini
.artifacts/vitest-shard-timings.jsoniçinde günceller; sonraki whole-config çalıştırmaları yavaş ve hızlı shard'ları dengelemek için bu zamanlamaları kullanır. Include-pattern CI shard'ları shard adını zamanlama anahtarına ekler; bu, filtrelenmiş shard zamanlamalarını whole-config zamanlama verisini değiştirmeden görünür tutar. Yerel zamanlama artefaktını yok saymak içinOPENCLAW_TEST_PROJECTS_TIMINGS=0ayarlayın. -
Seçili
plugin-sdkvecommandstest dosyaları artık yalnızcatest/setup.tstutan özel hafif hatlardan yönlendirilir; runtime ağırlıklı durumlar mevcut hatlarında kalır. -
Kardeş testleri olan kaynak dosyaları, daha geniş dizin glob'larına geri düşmeden önce o kardeşe eşlenir.
src/channels/plugins/contracts/test-helpers,src/plugin-sdk/test-helpersvesrc/plugins/contractsaltındaki yardımcı düzenlemeleri, dependency yolu kesin olduğunda her shard'ı geniş çalıştırmak yerine import eden testleri çalıştırmak için yerel import grafiği kullanır. -
auto-replyartık üç özel config'e (core,top-level,reply) de ayrılır; böylece reply harness daha hafif top-level status/token/helper testlerine baskın gelmez. -
Temel Vitest config artık repo config'leri genelinde etkin olan paylaşılan yalıtılmamış runner ile birlikte varsayılan olarak
pool: "threads"veisolate: falsekullanır. -
pnpm test:channels,vitest.channels.config.tsçalıştırır. -
pnpm test:extensionsvepnpm test extensions, tüm extension/Plugin shard'larını çalıştırır. Ağır kanal Plugin'leri, browser Plugin'i ve OpenAI özel shard'lar olarak çalışır; diğer Plugin grupları toplu kalır. Tek bir paketlenmiş Plugin hattı içinpnpm test extensions/<id>kullanın. -
pnpm test:perf:imports: açık dosya/dizin hedefleri için kapsamlı hat yönlendirmesini kullanmaya devam ederken Vitest import süresi + import dökümü raporlamasını etkinleştirir. -
pnpm test:perf:imports:changed: aynı import profillemesi, ancak yalnızcaorigin/mainsonrasında değişen dosyalar için. -
pnpm test:perf:changed:bench -- --ref <git-ref>, yönlendirilmiş changed-mode yolunu aynı commit'lenmiş git diff için native root-project çalıştırmasına karşı benchmark eder. -
pnpm test:perf:changed:bench -- --worktree, önce commit etmeden geçerli worktree değişiklik kümesini benchmark eder. -
pnpm test:perf:profile:main: Vitest ana thread'i için CPU profili yazar (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: birim runner için CPU + heap profilleri yazar (.artifacts/vitest-runner-profile). -
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: her full-suite Vitest leaf config'i seri olarak çalıştırır ve gruplanmış süre verilerinin yanı sıra config başına JSON/log artefaktları yazar. Test Performance Agent bunu yavaş test düzeltmelerini denemeden önce baseline 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 gruplanmış raporları karşılaştırır. -
pnpm test:docker:timings <summary.json>, bir Docker all çalıştırmasından sonra yavaş Docker hatlarını inceler; aynı artefaktlardan ucuz hedefli yeniden çalıştırma komutlarını yazdırmak içinpnpm test:docker:rerun <run-id|summary.json|failures.json>kullanın. -
Gateway entegrasyonu:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testveyapnpm test:gatewayile opt-in. -
pnpm test:e2e: Repo E2E toplamını çalıştırır: gateway uçtan uca smoke testleri ve Control UI mocked browser E2E hattı. -
pnpm test:e2e:gateway: Gateway uçtan uca smoke testlerini çalıştırır (çoklu örnek WS/HTTP/node eşleştirmesi).vitest.e2e.config.tsiçinde uyarlamalı worker'larla varsayılan olarakthreads+isolate: falsekullanır;OPENCLAW_E2E_WORKERS=<n>ile ayarlayın ve ayrıntılı loglar içinOPENCLAW_E2E_VERBOSE=1ayarlayın. -
pnpm test:live: Sağlayıcı live testlerini (minimax/zai) çalıştırır. Atlamayı kaldırmak için API anahtarları veLIVE=1(veya sağlayıcıya özel*_LIVE_TEST=1) gerekir. -
pnpm test:docker:all: Paylaşılan canlı test imajını derler, OpenClaw'ı bir kez npm tarball'ı olarak paketler, yalın bir Node/Git çalıştırıcı imajı ile bu tarball'ı/appiçine yükleyen işlevsel bir imajı derler/yeniden kullanır, ardından ağırlıklı bir zamanlayıcı üzerindenOPENCLAW_SKIP_DOCKER_BUILD=1ile Docker smoke kulvarlarını çalıştırır. Yalın imaj (OPENCLAW_DOCKER_E2E_BARE_IMAGE) yükleyici/güncelleme/Plugin bağımlılığı kulvarları için kullanılır; bu kulvarlar kopyalanmış depo kaynakları kullanmak yerine önceden derlenmiş tarball'ı bağlar. İşlevsel imaj (OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE) normal derlenmiş uygulama işlevselliği kulvarları için kullanılır.scripts/package-openclaw-for-docker.mjs, tek yerel/CI paket paketleyicisidir ve Docker tüketmeden önce tarball'ı vedist/postinstall-inventory.jsondosyasını doğrular. Docker kulvar tanımlarıscripts/lib/docker-e2e-scenarios.mjsiçinde bulunur; planlayıcı mantığıscripts/lib/docker-e2e-plan.mjsiçinde bulunur;scripts/test-docker-all.mjsseçilen planı yürütür.node scripts/test-docker-all.mjs --plan-json, derleme yapmadan veya Docker çalıştırmadan seçilen kulvarlar, imaj türleri, paket/canlı imaj ihtiyaçları, durum senaryoları ve kimlik bilgisi kontrolleri için zamanlayıcıya ait CI planını üretir.OPENCLAW_DOCKER_ALL_PARALLELISM=<n>süreç yuvalarını kontrol eder ve varsayılanı 10'dur;OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>sağlayıcıya duyarlı kuyruk havuzunu kontrol eder ve varsayılanı 10'dur. Ağır kulvar sınırları varsayılan olarakOPENCLAW_DOCKER_ALL_LIVE_LIMIT=9,OPENCLAW_DOCKER_ALL_NPM_LIMIT=5veOPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7olur; sağlayıcı sınırları varsayılan olarakOPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4,OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4veOPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4üzerinden sağlayıcı başına bir ağır kulvar olur. Daha büyük ana makineler içinOPENCLAW_DOCKER_ALL_WEIGHT_LIMITveyaOPENCLAW_DOCKER_ALL_DOCKER_LIMITkullanın. Düşük paralellikli bir ana makinede bir kulvar etkili ağırlık veya kaynak sınırını aşarsa yine de boş bir havuzdan başlayabilir ve kapasiteyi serbest bırakana kadar tek başına çalışır. Yerel Docker daemon oluşturma fırtınalarından kaçınmak için kulvar başlangıçları varsayılan olarak 2 saniye aralıklandırılır;OPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>ile geçersiz kılın. Çalıştırıcı varsayılan olarak Docker ön kontrollerini yapar, eski OpenClaw E2E konteynerlerini temizler, her 30 saniyede etkin kulvar durumunu üretir, uyumlu kulvarlar arasında sağlayıcı CLI araç önbelleklerini paylaşır, geçici canlı sağlayıcı hatalarını varsayılan olarak bir kez yeniden dener (OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>) ve sonraki çalıştırmalarda en uzundan ilk sıraya dizim için kulvar sürelerini.artifacts/docker-tests/lane-timings.jsoniçinde saklar. Docker çalıştırmadan kulvar manifestini yazdırmak içinOPENCLAW_DOCKER_ALL_DRY_RUN=1, durum çıktısını ayarlamak içinOPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>veya süre yeniden kullanımını devre dışı bırakmak içinOPENCLAW_DOCKER_ALL_TIMINGS=0kullanın. Yalnızca deterministik/yerel kulvarlar içinOPENCLAW_DOCKER_ALL_LIVE_MODE=skipveya yalnızca canlı sağlayıcı kulvarları içinOPENCLAW_DOCKER_ALL_LIVE_MODE=onlykullanın; paket diğer adlarıpnpm test:docker:local:allvepnpm test:docker:live:allşeklindedir. Yalnızca canlı modu, sağlayıcı kovalarının Claude, Codex ve Gemini işlerini birlikte paketleyebilmesi için ana ve kuyruk canlı kulvarlarını en uzundan ilk sıraya tek bir havuzda birleştirir. Çalıştırıcı,OPENCLAW_DOCKER_ALL_FAIL_FAST=0ayarlanmadığı sürece ilk hatadan sonra yeni havuzlanmış kulvarları zamanlamayı durdurur ve her kulvarınOPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MSile geçersiz kılınabilen 120 dakikalık yedek zaman aşımı vardır; seçili canlı/kuyruk kulvarları daha sıkı kulvar başına sınırlar kullanır. CLI arka uç Docker kurulum komutlarınınOPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS(varsayılan 180) üzerinden kendi zaman aşımı vardır. Kulvar başına günlükler,summary.json,failures.jsonve aşama süreleri.artifacts/docker-tests/<run-id>/altına yazılır; yavaş kulvarları incelemek içinpnpm test:docker:timings <summary.json>ve ucuz hedefli yeniden çalıştırma komutlarını yazdırmak içinpnpm test:docker:rerun <run-id|summary.json|failures.json>kullanın. -
pnpm test:docker:browser-cdp-snapshot: Chromium destekli bir kaynak E2E konteyneri derler, ham CDP ile yalıtılmış bir Gateway başlatır,browser doctor --deepçalıştırır ve CDP rol anlık görüntülerinin bağlantı URL'leri, imleçle öne çıkarılmış tıklanabilir öğeler, iframe başvuruları ve çerçeve üst verileri içerdiğini doğrular. -
pnpm test:docker:skill-install: Paketlenmiş OpenClaw tarball'ını yalın bir Docker çalıştırıcısına yükler,skills.install.allowUploadedArchivesayarını devre dışı bırakır, canlı ClawHub aramasından güncel bir Skills slug'ı çözer, bunuopenclaw skills installüzerinden yükler veSKILL.md,.clawhub/origin.json,.clawhub/lock.jsonileskills info --jsonçıktısını doğrular. -
CLI arka uç canlı Docker yoklamaları odaklanmış kulvarlar olarak çalıştırılabilir; örneğin
pnpm test:docker:live-cli-backend:claude,pnpm test:docker:live-cli-backend:claude:resumeveyapnpm test:docker:live-cli-backend:claude:mcp. Gemini için eşleşen:resumeve:mcpdiğer adları vardır. -
pnpm test:docker:openwebui: Docker içinde OpenClaw + Open WebUI başlatır, Open WebUI üzerinden oturum açar,/api/modelskontrol eder, ardından/api/chat/completionsüzerinden gerçek bir vekilli sohbet çalıştırır. Kullanılabilir bir canlı model anahtarı gerektirir, harici bir Open WebUI imajı çeker ve normal unit/e2e paketleri gibi CI'da kararlı olması beklenmez. -
pnpm test:docker:mcp-channels: Önceden tohumlanmış bir Gateway konteyneri veopenclaw mcp servebaşlatan ikinci bir istemci konteyneri başlatır; ardından yönlendirilmiş konuşma keşfini, transkript okumalarını, ek üst verilerini, canlı olay kuyruğu davranışını, giden gönderim yönlendirmesini ve gerçek stdio köprüsü üzerinden Claude tarzı kanal + izin bildirimlerini doğrular. Claude bildirimi doğrulaması, smoke testin köprünün gerçekten ne ürettiğini yansıtması için ham stdio MCP çerçevelerini doğrudan okur. -
pnpm test:docker:upgrade-survivor: Paketlenmiş OpenClaw tarball'ını kirli bir eski kullanıcı fixture'ı üzerine yükler, canlı sağlayıcı veya kanal anahtarları olmadan paket güncellemesini ve etkileşimsiz doctor'ı çalıştırır, ardından bir local loopback Gateway başlatır ve agent'ların, kanal yapılandırmasının, Plugin izin listelerinin, çalışma alanı/oturum dosyalarının, eski miras Plugin bağımlılığı durumunun, başlatmanın ve RPC durumunun korunduğunu denetler. -
pnpm test:docker:published-upgrade-survivor: Varsayılan olarakopenclaw@latestyükler, canlı sağlayıcı veya kanal anahtarları olmadan gerçekçi mevcut kullanıcı dosyaları tohumlar, bu taban çizgisini gömülü biropenclaw config setkomut tarifiyle yapılandırır, yayımlanmış bu kurulumu paketlenmiş OpenClaw tarball'ına günceller, etkileşimsiz doctor çalıştırır,.artifacts/upgrade-survivor/summary.jsonyazar, ardından bir local loopback Gateway başlatır ve yapılandırılmış amaçların, çalışma alanı/oturum dosyalarının, eski Plugin yapılandırmasının ve miras bağımlılık durumunun, başlatmanın,/healthz,/readyzve RPC durumunun korunduğunu veya temiz biçimde onarıldığını denetler. Tek bir taban çizgisiniOPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECile geçersiz kılın,openclaw@2026.5.2 openclaw@2026.4.23 openclaw@2026.4.15gibiOPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPECSile tam bir yerel matrisi genişletin veyaOPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issuesile senaryo fixture'ları ekleyin; bildirilen sorunlar kümesi, yapılandırılmış harici OpenClaw Plugin'lerinin yükseltme sırasında otomatik olarak yüklendiğini doğrulamak içinconfigured-plugin-installsve yalnızca kaynak Plugin gölgelerinin başlatmayı bozmasını önlemek içinstale-source-plugin-shadowiçerir. Package Acceptance bunlarıpublished_upgrade_survivor_baseline,published_upgrade_survivor_baselinesvepublished_upgrade_survivor_scenariosolarak sunar ve tam paket belirtimlerini Docker kulvarlarına teslim etmeden öncelast-stable-4veyaall-since-2026.4.23gibi meta taban çizgisi belirteçlerini çözer. -
pnpm test:docker:update-migration: Published-upgrade survivor harness'ını, varsayılan olarakopenclaw@2026.4.23noktasından başlayarak temizlik ağırlıklıplugin-deps-cleanupsenaryosunda çalıştırır. AyrıUpdate Migrationworkflow'u bu kulvarıbaselines=all-since-2026.4.23ile genişletir; böylece.23ve sonrasındaki yayımlanmış her kararlı paket adaya güncellenir ve Full Release CI dışında yapılandırılmış Plugin bağımlılığı temizliğini kanıtlar. -
pnpm test:docker:plugins: Yerel yol,file:, yükseltilmiş bağımlılıkları olan npm registry paketleri, git hareketli başvuruları, ClawHub fixture'ları, marketplace güncellemeleri ve Claude paketini etkinleştirme/inceleme için yükleme/güncelleme smoke testlerini çalıştırır.
Yerel PR kapısı
Yerel PR land/gate kontrolleri için şunu çalıştırın:
pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
pnpm test yüklü bir host üzerinde aralıklı hata verirse, bunu regresyon olarak ele almadan önce bir kez yeniden çalıştırın, ardından pnpm test <path/to/test> ile izole edin. Bellek kısıtlı hostlar için şunu kullanın:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Model gecikme benchmark'ı (yerel anahtarlar)
Betik: scripts/bench-model.ts
Kullanım:
pnpm tsx scripts/bench-model.ts --runs 10- İsteğe bağlı env:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Varsayılan prompt: "Reply with a single word: ok. No punctuation or extra text."
Son çalıştırma (2025-12-31, 20 çalıştırma):
- minimax medyan 1279ms (min 1114, maks 2431)
- opus medyan 2454ms (min 1224, maks 3170)
CLI başlangıç benchmark'ı
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 --preset real --case tasksJson --case tasksListJson --case tasksAuditJson --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
Ö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: iki ön ayarın ikisi de
Çıktı her komut için sampleCount, ortalama, p50, p95, min/maks, exit-code/sinyal dağılımı ve maks RSS özetlerini içerir. İsteğe bağlı --cpu-prof-dir / --heap-prof-dir, zamanlama ve profil yakalama aynı harness'i kullansın diye her çalıştırma için V8 profilleri yazar.
Kaydedilmiş çıktı konvansiyonları:
pnpm test:startup:bench:smoke, hedeflenen smoke yapıtını.artifacts/cli-startup-bench-smoke.jsonkonumuna yazarpnpm test:startup:bench:save,runs=5vewarmup=1kullanarak tam paket yapıtını.artifacts/cli-startup-bench-all.jsonkonumuna yazarpnpm test:startup:bench:update,runs=5vewarmup=1kullanarak depoya işlenmiş baseline fixture'ınıtest/fixtures/cli-startup-bench.jsonkonumunda yeniler
Depoya işlenmiş fixture:
test/fixtures/cli-startup-bench.jsonpnpm test:startup:bench:updateile yenileyin- Güncel sonuçları fixture ile
pnpm test:startup:bench:checkkullanarak karşılaştırın
Gateway başlangıç benchmark'ı
Betik: scripts/bench-gateway-startup.ts
Benchmark varsayılan olarak dist/entry.js konumundaki derlenmiş CLI girişini kullanır; package-script komutlarını kullanmadan önce
pnpm build çalıştırın. Bunun yerine kaynak runner'ı ölçmek için --entry scripts/run-node.mjs geçin ve bu sonuçları derlenmiş giriş baseline'larından
ayrı tutun.
Kullanım:
pnpm test:startup:gateway -- --runs 5 --warmup 1pnpm test:startup:gateway -- --case default --runs 10 --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.jsonnode --import tsx scripts/bench-gateway-startup.ts --case default --runs 3 --cpu-prof-dir .artifacts/gateway-startup-cpu
Case kimlikleri:
default: normal Gateway başlangıcı.skipChannels: kanal başlangıcı atlanmış Gateway başlangıcı.oneInternalHook: yapılandırılmış bir internal hook.allInternalHooks: tüm internal hook'lar.fiftyPlugins: 50 manifest plugin'i.fiftyStartupLazyPlugins: 50 startup-lazy manifest plugin'i.
Çıktı ilk süreç çıktısını, /healthz, /readyz, HTTP dinleme log zamanını,
Gateway hazır log zamanını, CPU zamanını, CPU çekirdek oranını, maks RSS'i, heap'i, başlangıç izleme
metriklerini, event-loop gecikmesini ve Plugin arama tablosu ayrıntı metriklerini içerir. Betik,
alt Gateway ortamında OPENCLAW_GATEWAY_STARTUP_TRACE=1 etkinleştirir.
/healthz değerini liveness olarak okuyun: HTTP sunucusu yanıt verebilir. /readyz değerini
kullanılabilir readiness olarak okuyun: başlangıç Plugin sidecar'ları, kanallar ve ready-critical
post-attach işi tamamlanmıştır. Gateway başlangıç hook'ları asenkron gönderilir
ve readiness garantisinin parçası değildir. Hazır log zamanı,
Gateway'in dahili hazır log zaman damgasıdır; süreç tarafı ilişkilendirme için yararlıdır
ancak harici /readyz probe'unun yerine geçmez.
Değişiklikleri karşılaştırırken JSON çıktısı veya --output kullanın. --cpu-prof-dir seçeneğini yalnızca
izleme çıktısı import, compile veya yalnızca faz zamanlamalarıyla açıklanamayan CPU-bound işe
işaret ettikten sonra kullanın. Kaynak runner sonuçlarını derlenmiş dist/entry.js sonuçlarıyla
aynı baseline olarak karşılaştırmayın.
Gateway yeniden başlatma benchmark'ı
Betik: scripts/bench-gateway-restart.ts
Yeniden başlatma benchmark'ı yalnızca macOS ve Linux üzerinde desteklenir. Süreç içi yeniden başlatmalar için SIGUSR1 kullanır ve Windows üzerinde hemen başarısız olur.
Benchmark varsayılan olarak dist/entry.js konumundaki derlenmiş CLI girişini kullanır; package-script komutlarını kullanmadan önce
pnpm build çalıştırın. Bunun yerine kaynak runner'ı ölçmek için --entry scripts/run-node.mjs geçin ve bu sonuçları
derlenmiş giriş baseline'larından ayrı tutun.
Kullanım:
pnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5pnpm test:restart:gateway -- --case default --runs 3 --restarts 3 --warmup 1pnpm test:restart:gateway -- --case skipChannelsAcpxProbe --case skipChannelsNoAcpxProbe --runs 1 --restarts 5node --import tsx scripts/bench-gateway-restart.ts --case fiftyPlugins --runs 1 --restarts 5 --output .artifacts/gateway-restart.jsonnode --import tsx scripts/bench-gateway-restart.ts --json
Case kimlikleri:
skipChannels: kanallar atlanmış yeniden başlatma.skipChannelsAcpxProbe: kanallar atlanmış ve ACPX başlangıç probe'u açık yeniden başlatma.skipChannelsNoAcpxProbe: kanallar atlanmış ve ACPX başlangıç probe'u kapalı yeniden başlatma.default: normal yeniden başlatma.fiftyPlugins: 50 manifest plugin'iyle yeniden başlatma.
Çıktı bir sonraki /healthz, bir sonraki /readyz, kesinti süresi, yeniden başlatma hazır zamanlaması,
CPU, RSS, replacement süreç için başlangıç izleme metrikleri ve sinyal işleme, aktif iş boşaltma,
kapatma fazları, bir sonraki başlangıç, hazır zamanlaması ve bellek anlık görüntüleri için yeniden başlatma izleme
metriklerini içerir. Betik,
alt Gateway ortamında OPENCLAW_GATEWAY_STARTUP_TRACE=1 ve OPENCLAW_GATEWAY_RESTART_TRACE=1 etkinleştirir.
Bir değişiklik yeniden başlatma sinyallemesini, kapatma handler'larını,
startup-after-restart, sidecar kapatmayı, servis devrini veya yeniden başlatma sonrası readiness'i
etkilediğinde bu benchmark'ı kullanın. Gateway mekaniklerini kanal
başlangıcından izole ederken skipChannels ile başlayın. default veya Plugin ağırlıklı case'leri yalnızca dar case
yeniden başlatma yolunu açıkladıktan sonra kullanın.
İzleme metrikleri ilişkilendirme ipuçlarıdır, hüküm değildir. Bir yeniden başlatma değişikliği
birden fazla örnekten, eşleşen sahip span'inden, /healthz ve /readyz
davranışından ve kullanıcıya görünür yeniden başlatma sözleşmesinden değerlendirilmelidir.
Onboarding E2E (Docker)
Docker isteğe bağlıdır; bu yalnızca containerized onboarding smoke testleri için gereklidir.
Temiz bir Linux container'ında tam cold-start akışı:
scripts/e2e/onboard-docker.shBu betik etkileşimli wizard'ı bir pseudo-tty üzerinden yürütür, config/workspace/session dosyalarını doğrular, ardından gateway'i başlatır ve openclaw health çalıştırır.
QR import smoke (Docker)
Bakımı yapılan QR runtime helper'ının desteklenen Docker Node runtime'ları altında yüklendiğinden emin olur (varsayılan Node 24, uyumlu Node 22):
pnpm test:docker:qr