Testing
Test etme: güncellemeler ve pluginler
Güncelleme ve Plugin doğrulaması için kontrol listesi: kurulabilir paketin gerçek
kullanıcı durumunu güncelleyebildiğini, eski kalmış önceki durumu doctor
aracılığıyla onarabildiğini ve desteklenen her kaynaktan Plugin kurmaya,
yüklemeye, güncellemeye ve kaldırmaya devam edebildiğini kanıtlayın.
Daha geniş test çalıştırıcısı haritası için Testler bölümüne bakın. Canlı sağlayıcı anahtarları ve ağa erişen paketler için Canlı testler bölümüne bakın.
Neleri koruyoruz
- Paket tarball'ı eksiksizdir, geçerli bir
dist/postinstall-inventory.jsoniçerir ve açılmış depo dosyalarına bağımlı değildir. - Kullanıcı; yapılandırmayı, ajanları, oturumları, çalışma alanlarını, Plugin izin listelerini veya kanal yapılandırmasını kaybetmeden daha eski yayımlanmış bir paketten aday pakete geçebilir.
- Eski durumu temizleme ve onarma yollarının sahibi
openclaw doctor --fix --non-interactivekomutudur. Başlangıç, eski kalmış Plugin durumu için gizli uyumluluk geçişleri eklememelidir. - Plugin kurulumları yerel dizinlerden, git depolarından, npm paketlerinden ve ClawHub kayıt defteri yolundan çalışır.
- Plugin npm bağımlılıkları Plugin başına yönetilen tek bir npm projesine
kurulur, güvenilmeden önce taranır ve Plugin kaldırılırken
npm uninstallaracılığıyla kaldırılır; böylece yukarı taşınmış bağımlılıklar geride kalmaz. - Hiçbir şey değişmediğinde Plugin güncellemesi işlem yapmaz: kurulum kayıtları, çözümlenmiş kaynak, kurulu bağımlılık düzeni ve etkinlik durumu olduğu gibi kalır.
Geliştirme sırasında yerel kanıt
Dar kapsamla başlayın:
pnpm changed:lanes --jsonpnpm check:changedpnpm test:changedPlugin kurulumu, kaldırılması, bağımlılığı veya paket envanteri değişiklikleri için düzenlenen bağlantı noktasını kapsayan odaklanmış testleri de çalıştırın:
pnpm test src/plugins/uninstall.test.ts src/infra/package-dist-inventory.test.ts test/scripts/package-acceptance-workflow.test.tsHerhangi bir paket Docker hattı bir tarball'ı kullanmadan önce paket yapıtını doğrulayın:
pnpm release:checkrelease:check; yapılandırma/belgeler/API sapma denetimlerini (yapılandırma
şeması, yapılandırma belgeleri temel çizgisi, Plugin SDK API temel çizgisi ve dışa
aktarımları, Plugin sürümleri/envanteri) çalıştırır, paket dağıtım envanterini
yazar, npm pack --dry-run komutunu çalıştırır, yasaklanmış paketlenmiş dosyaları
reddeder, tarball'ı geçici bir ön eke kurar, kurulum sonrasını çalıştırır ve
paketlenmiş kanal giriş noktalarında duman testi gerçekleştirir.
Docker hatları
Docker hatları ürün düzeyindeki kanıttır. Linux kapsayıcıları içinde gerçek bir paketi kurar veya günceller ve davranışı CLI komutları, Gateway başlangıcı, HTTP yoklamaları, RPC durumu ve dosya sistemi durumu aracılığıyla doğrular.
Yineleme sırasında odaklanmış hatları kullanın:
pnpm test:docker:pluginspnpm test:docker:plugin-lifecycle-matrixpnpm test:docker:plugin-updatepnpm test:docker:upgrade-survivorpnpm test:docker:published-upgrade-survivorpnpm test:docker:update-restart-authpnpm test:docker:update-migrationÖnemli hatlar:
test:docker:plugins; Plugin kurulumu duman testini, yerel klasör kurulumlarını, yerel klasör güncellemesini atlama davranışını, önceden kurulu bağımlılıkları olan yerel klasörleri,file:paket kurulumlarını, CLI yürütmeli git kurulumlarını, hareketli git referansı güncellemelerini, yukarı taşınmış geçişli bağımlılıklara sahip npm kayıt defteri kurulumlarını, işlem yapmayan npm güncellemelerini, hatalı biçimlendirilmiş npm paket meta verilerinin reddedilmesini, yerel ClawHub sabit verisi kurulumlarını ve işlem yapmayan güncellemeleri, pazar yeri güncelleme davranışını ve Claude paketini etkinleştirme/incelemeyi kapsar. ClawHub bloğunu yalıtılmış/çevrimdışı tutmak içinOPENCLAW_PLUGINS_E2E_CLAWHUB=0ayarını kullanın.test:docker:plugin-lifecycle-matrix, aday paketi boş bir kapsayıcıya kurar ve bir npm Pluginini kurma, inceleme, devre dışı bırakma, etkinleştirme, açık sürüm yükseltme, açık sürüm düşürme ve Plugin kodunu sildikten sonra kaldırma aşamalarından geçirir. Aşama başına RSS ve CPU ölçümlerini günlüğe kaydeder.test:docker:plugin-update, değiştirilmemiş kurulu bir Plugininopenclaw plugins updatesırasında yeniden kurulmadığını veya kurulum meta verilerini kaybetmediğini doğrular.test:docker:upgrade-survivor, aday tarball'ı eski ve düzenli olmayan bir kullanıcı sabit verisinin üzerine kurar, paket güncellemesini ve etkileşimsiz doctor işlemini çalıştırır, ardından bir local loopback Gateway başlatır ve durumun korunduğunu denetler.test:docker:published-upgrade-survivorönce yayımlanmış bir temel sürümü kurar, bunu hazırlanmış biropenclaw config settarifi aracılığıyla yapılandırır, aday tarball'a günceller, doctor işlemini çalıştırır, eski durumun temizlendiğini denetler, Gateway'i başlatır ve/healthz,/readyzile RPC durumunu yoklar.test:docker:update-restart-auth, aday paketi kurar, yönetilen belirteç kimlik doğrulamalı bir Gateway başlatır,openclaw update --yes --jsoniçin çağıranın Gateway kimlik doğrulaması ortam değişkenini kaldırır ve aday güncelleme komutunun normal yoklamalardan önce Gateway'i yeniden başlatmasını gerektirir.test:docker:update-migration, temizleme ağırlıklı yayımlanmış güncelleme hattıdır. Yapılandırılmış Discord/Telegram tarzı bir kullanıcı durumuyla başlar, yapılandırılmış Plugin bağımlılıklarının oluşturulma fırsatı bulması için temel sürüm doctor işlemini çalıştırır, yapılandırılmış paketlenmiş bir Plugin için eski Plugin bağımlılığı artıklarını yerleştirir, aday tarball'a günceller ve güncelleme sonrası doctor işleminin eski bağımlılık köklerini kaldırmasını gerektirir.
Yararlı yayımlanmış yükseltme dayanıklılığı çeşitleri:
OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC=openclaw@2026.4.23 \OPENCLAW_UPGRADE_SURVIVOR_SCENARIO=versioned-runtime-deps \pnpm test:docker:published-upgrade-survivor OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC=openclaw@latest \OPENCLAW_UPGRADE_SURVIVOR_SCENARIO=bootstrap-persona \pnpm test:docker:published-upgrade-survivorKullanılabilir senaryolar: base, acpx-openclaw-tools-bridge,
feishu-channel, bootstrap-persona, channel-post-core-restore,
plugin-deps-cleanup, configured-plugin-installs,
stale-source-plugin-shadow, tilde-log-path ve
versioned-runtime-deps. Toplu çalıştırmalarda
OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues (far-reaching takma adı),
yapılandırılmış Plugin kurulumu geçişi dâhil tüm senaryolara genişler.
Tam güncelleme geçişi, Tam Sürüm CI'dan kasıtlı olarak ayrıdır. Sürümle ilgili
soru "2026.4.23 ve sonrasında yayımlanan her kararlı sürüm bu adaya güncellenip
Plugin bağımlılığı artıklarını temizleyebilir mi?" olduğunda manuel
Update Migration iş akışını kullanın:
gh workflow run update-migration.yml \ --ref main \ -f workflow_ref=main \ -f package_ref=main \ -f baselines=all-since-2026.4.23 \ -f scenarios=plugin-deps-cleanupPaket Kabulü
Paket Kabulü, GitHub'a özgü paket kapısıdır. Tek bir aday paketi
package-under-test tarball'ına çözümler, sürümü ve SHA-256 değerini kaydeder,
ardından yeniden kullanılabilir Docker uçtan uca hatlarını tam olarak bu
tarball üzerinde çalıştırır. İş akışı düzeneği referansı paket kaynak
referansından ayrıdır; böylece güncel test mantığı eski güvenilir sürümleri
doğrulayabilir.
Aday kaynakları:
source=npm:openclaw@extended-stable,openclaw@beta,openclaw@latestveya tam bir yayımlanmış sürümü doğrular.source=ref: seçili güncel düzenekle güvenilir bir dalı, etiketi veya commit'i paketler.source=url: zorunlupackage_sha256ile genel bir HTTPS tarball'ını doğrular. Bu yol URL kimlik bilgilerini, varsayılan olmayan HTTPS bağlantı noktalarını, özel/dahili ana bilgisayar adlarını veya DNS/IP sonuçlarını, özel kullanımlı IP alanını ve güvenli olmayan yönlendirmeleri reddeder.source=trusted-url: zorunlupackage_sha256vetrusted_source_idile bir HTTPS tarball'ını.github/package-trusted-sources.jsoniçindeki bakımcıya ait politikaya göre doğrular. Girdi düzeyinde özel erişime izin veren bir anahtarlasource=urlgüvenliğini zayıflatmak yerine kurumsal/özel yansılar için bunu kullanın. Politika tarafından yapılandırıldığında taşıyıcı kimlik doğrulaması, sabitOPENCLAW_TRUSTED_PACKAGE_TOKENgizli değerini kullanır.source=artifact: başka bir Actions çalıştırması tarafından yüklenen tarball'ı yeniden kullanır.
Tam Sürüm Doğrulaması, çözümlenen sürüm SHA'sından oluşturulan
source=artifact değerini varsayılan olarak kullanır. Yayımlama sonrası kanıt
için package_acceptance_package_spec=openclaw@YYYY.M.PATCH geçirin; böylece
aynı yükseltme matrisi bunun yerine yayımlanan npm paketini hedefler.
Sürüm denetimleri, Paket Kabulünü paket/güncelleme/yeniden başlatma/Plugin kümesiyle çağırır:
doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor root-managed-vps-upgrade update-restart-auth plugins-offline plugin-update plugin-binding-command-escapeSürüm bekletme testi etkinleştirildiğinde (release_profile=stable ve full
için zorunlu olarak açıktır) şunları da geçirir:
published_upgrade_survivor_baselines=last-stable-4 2026.4.23 2026.5.2 2026.4.15published_upgrade_survivor_scenarios=reported-issuestelegram_mode=mock-openaiBu, varsayılan sürüm paket kapısının yayımlanmış her sürümü dolaşmasına neden olmadan paket geçişini, güncelleme kanalı değiştirmeyi, bozuk yönetilen Plugin toleransını, eski Plugin bağımlılığı temizliğini, çevrimdışı Plugin kapsamını, Plugin güncelleme davranışını ve Telegram paket kalite güvencesini aynı çözümlenmiş yapıt üzerinde tutar.
last-stable-4, npm'de yayımlanmış en son dört kararlı OpenClaw sürümüne
çözümlenir. Sürüm paketi kabulü, ilk Plugin güncelleme uyumluluk sınırı olarak
2026.4.23 sürümünü, Plugin mimarisi değişim sınırı olarak 2026.5.2 sürümünü
ve daha eski bir 2026.4.1x yayımlanmış güncelleme temel sürümü olarak
2026.4.15 sürümünü sabitler; çözümleyici, zaten en son dört sürüm arasında
bulunan sabitleri yinelenenlerden arındırır. Kapsamlı yayımlanmış güncelleme
geçişi kapsamı için Tam Sürüm CI yerine ayrı Güncelleme Geçişi iş akışında
all-since-2026.4.23 kullanın. Eski tarih öncesi dayanak noktasını da istediğiniz
manuel geniş örnekleme için release-history kullanılabilir olmaya devam eder.
Birden fazla yayımlanmış yükseltme dayanıklılığı temel sürümü seçildiğinde, yeniden kullanılabilir Docker iş akışı her temel sürümü kendi hedefli çalıştırıcı işine böler. Her temel sürüm parçası seçili senaryo kümesini yine çalıştırır, ancak günlükler ve yapıtlar temel sürüm başına ayrı kalır ve toplam süre büyük bir seri iş yerine en yavaş parçayla sınırlanır.
Sürüm öncesinde bir adayı doğrularken paket profilini manuel olarak çalıştırın:
gh workflow run package-acceptance.yml \ --ref main \ -f workflow_ref=main \ -f source=npm \ -f package_spec=openclaw@beta \ -f suite_profile=package \ -f published_upgrade_survivor_baselines="last-stable-4 2026.4.23 2026.5.2 2026.4.15" \ -f published_upgrade_survivor_scenarios=reported-issues \ -f telegram_mode=mock-openaiYayımlanmış bir genişletilmiş kararlı kanarya sürümü için
package_spec=openclaw@extended-stable ayarını kullanın. Paket Kabulü, Docker
hatları çalışmadan önce bu seçiciyi tam bir tarball'a çözümler.
Sürümle ilgili soru MCP kanallarını, cron/alt ajan temizliğini, OpenAI web
aramasını veya OpenWebUI'ı içerdiğinde suite_profile=product kullanın. Yalnızca
tam Docker sürüm yolu kapsamına ihtiyaç duyduğunuzda suite_profile=full
kullanın.
Sürüm varsayılanı
Sürüm adayları için varsayılan kanıt yığını şöyledir:
- Kaynak düzeyindeki gerilemeler için
pnpm check:changedvepnpm test:changed. - Paket yapıtı bütünlüğü için
pnpm release:check. - Kurulum/güncelleme/yeniden başlatma/Plugin sözleşmeleri için Paket Kabulü
packageprofili veya sürüm denetiminin özel paket hatları. - İşletim sistemine özgü kurucu, ilk katılım ve platform davranışı için işletim sistemleri arası sürüm denetimleri.
- Yalnızca değiştirilen yüzey sağlayıcı veya barındırılan hizmet davranışına dokunduğunda canlı paketler.
Bakımcı makinelerinde geniş kapılar ve Docker/paket ürün kanıtı, açıkça yerel kanıt yapılmadığı sürece Testbox'ta çalıştırılmalıdır.
Eski sürüm uyumluluğu
Uyumluluk esnekliği dar kapsamlıdır ve süreyle sınırlıdır:
2026.4.25-beta.*dâhil2026.4.25sürümüne kadar olan paketler, Paket Kabulünde önceden yayımlanmış paket meta verisi eksiklerini tolere edebilir.- Yayımlanmış
2026.4.26paketi, önceden gönderilmiş yerel derleme meta verisi damga dosyaları için uyarı verebilir. - Sonraki paketler modern sözleşmeleri karşılamalıdır. Aynı eksikler için uyarı vermek veya atlamak yerine işlem başarısız olur.
Bu eski şekiller için yeni başlangıç geçişleri eklemeyin. Bir doctor onarımı
ekleyin veya genişletin, ardından güncelleme komutu yeniden başlatmanın
sahibiyse bunu upgrade-survivor, published-upgrade-survivor veya
update-restart-auth ile kanıtlayın.
Kapsam ekleme
Güncelleme veya Plugin davranışını değiştirirken kapsamı, doğru nedenle başarısız olabilecek en alt katmana ekleyin:
- Yalnızca yol veya meta veri mantığı: kaynak dosyanın yanında birim testi.
- Paket envanteri veya paketlenmiş dosya davranışı:
package-dist-inventoryveya tar arşivi denetleyici testi. - CLI kurulum/güncelleme davranışı: Docker hattı doğrulaması veya fikstürü.
- Yayımlanmış sürüm geçişi davranışı:
published-upgrade-survivorsenaryosu. - Güncellemenin yönettiği yeniden başlatma davranışı:
update-restart-auth. - Kayıt defteri/paket kaynağı davranışı:
test:docker:pluginsfikstürü veya ClawHub fikstür sunucusu. - Bağımlılık yerleşimi veya temizleme davranışı: hem çalışma zamanı yürütmesini hem de
dosya sistemi sınırını doğrulayın. npm bağımlılıkları Plugin'in
yönetilen npm projesi içinde üst seviyeye taşınabilir; bu nedenle testler, yalnızca Plugin paketine yerel
node_modulesağacının kullanıldığını varsaymak yerine bu projenin tarandığını/temizlendiğini kanıtlamalıdır.
Yeni Docker fikstürlerini varsayılan olarak yalıtılmış tutun. Testin amacı canlı kayıt defteri davranışı olmadıkça yerel fikstür kayıt defterleri ve sahte paketler kullanın.
Hata triyajı
Yapıt kimliğiyle başlayın:
- Package Acceptance
resolve_packageözeti: kaynak, sürüm, SHA-256 ve yapıt adı. - Docker yapıtları:
.artifacts/docker-tests/**/summary.json,failures.json, hat günlükleri ve yeniden çalıştırma komutları. - Yükseltmeden sağ çıkma özeti:
.artifacts/upgrade-survivor/summary.json; temel sürüm, aday sürüm, senaryo, aşama süreleri ve yapılandırma tarifi kapsamı dâhildir.
Tüm sürüm kapsamını yeniden çalıştırmak yerine, aynı paket yapıtıyla başarısız olan tam hattı yeniden çalıştırmayı tercih edin.