Testing
Test: 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ış legacy durumu doctor aracılığıyla onarabildiğini ve yine de
desteklenen her kaynaktan plugin kurabildiğini, yükleyebildiğini, güncelleyebildiğini ve kaldırabildiğini kanıtlayın.
Daha kapsamlı test çalıştırıcısı haritası için Test bölümüne bakın. Canlı sağlayıcı anahtarları ve ağa erişen paketler için Canlı test bölümüne bakın.
Neleri koruyoruz
- Paket tarball'ı eksiksizdir, geçerli bir
dist/postinstall-inventory.jsoniçerir ve paketlenmemiş depo dosyalarına bağımlı değildir. - Kullanıcı; yapılandırmasını, ajanlarını, oturumlarını, çalışma alanlarını, plugin izin listelerini veya kanal yapılandırmasını kaybetmeden yayımlanmış eski bir paketten aday pakete geçebilir.
openclaw doctor --fix --non-interactive, legacy temizleme ve onarım yollarının sahibidir. Başlatma, eski kalmış plugin durumu için gizli uyumluluk geçişleri oluşturmamalıdır.- Plugin kurulumları yerel dizinlerden, git depolarından, npm paketlerinden ve ClawHub kayıt yolu üzerinden çalışır.
- Plugin npm bağımlılıkları plugin başına tek bir yönetilen 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ümlenen kaynak, kurulu bağımlılık düzeni ve etkinlik durumu değişmeden 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ıkları veya paket envanteri değişiklikleri için, düzenlenen bağlantı noktasını kapsayan odaklı 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ı kanıtlayın:
pnpm release:checkrelease:check; yapılandırma/belgeler/API sapması denetimlerini (yapılandırma şeması, yapılandırma belgeleri
temel çizgisi, plugin SDK API sözleşmesi manifesti 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, postinstall işlemini çalıştırır ve
paketle gelen kanal giriş noktalarında smoke testi yapar.
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 CLI komutları, Gateway başlatma, HTTP yoklamaları, RPC durumu ve dosya sistemi durumu üzerinden davranışı doğrular.
Yineleme sırasında odaklı 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 kurulum smoke testini, yerel klasör kurulumlarını, yerel klasör güncellemesinin atlanma davranışını, önceden kurulmuş bağımlılıkları olan yerel klasörleri,file:paket kurulumlarını, CLI yürütmeli git kurulumlarını, git hareketli referans güncellemelerini, yukarı taşınmış geçişli bağımlılıkları olan npm kayıt defteri kurulumlarını, işlem yapmayan npm güncellemelerini, hatalı biçimlendirilmiş npm paket meta verilerinin reddedilmesini, yerel ClawHub fikstürü kurulumlarını ve işlem yapmayan güncellemeleri, pazar yeri güncelleme davranışını ve Claude paketini etkinleştirme/incelemeyi kapsar. ClawHub bloğunu hermetik/çevrimdışı tutmak içinOPENCLAW_PLUGINS_E2E_CLAWHUB=0değerini ayarlayın.test:docker:plugin-lifecycle-matrix, aday paketi boş bir kapsayıcıya kurar; bir npm pluginini kurma, inceleme, devre dışı bırakma, etkinleştirme, açık yükseltme, açık düşürme ve plugin kodunu sildikten sonra kaldırma adımlarından geçirir. Her aşama için RSS ve CPU metriklerini günlüğe kaydeder.test:docker:plugin-update, değişmemiş kurulu bir plugininopenclaw plugins updatesırasında yeniden kurulmadığını veya kurulum meta verilerini kaybetmediğini doğrular.test:docker:upgrade-survivor, aday tarball'ı değiştirilmiş bir eski kullanıcı fikstürünün üzerine kurar, paket güncellemesini ve etkileşimsiz doctor işlemini çalıştırır, ardından bir geri döngü Gateway'i başlatır ve durumun korunduğunu denetler.test:docker:published-upgrade-survivor, önce yayımlanmış bir temel sürümü kurar, bunu yerleşik biropenclaw config settarifi üzerinden yapılandırır, aday tarball'a günceller, doctor işlemini çalıştırır, legacy temizliğini denetler, Gateway'i başlatır ve/healthz,/readyzile RPC durumunu yoklar.test:docker:update-restart-auth, aday paketi kurar, yönetilen token kimlik doğrulamalı bir Gateway başlatır,openclaw update --yes --jsoniçin çağıranın Gateway kimlik doğrulama ortam değişkenini kaldırır ve normal yoklamalardan önce aday güncelleme komutunun Gateway'i yeniden başlatmasını zorunlu kılar.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ı durumundan başlar, yapılandırılmış plugin bağımlılıklarının oluşturulmasına fırsat vermek için temel sürümün doctor işlemini çalıştırır, yapılandırılmış paketli bir plugin için legacy plugin bağımlılığı kalıntıları ekler, aday tarball'a günceller ve güncelleme sonrası doctor işleminin legacy bağımlılık köklerini kaldırmasını zorunlu kılar.
Yararlı yayımlanmış yükseltme dayanıklılığı varyantları:
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 diğer adıyla), yapılandırılmış plugin kurulum geçişi de dahil olmak üzere
tüm senaryolara genişler.
Tam güncelleme geçişi, Tam Sürüm CI'dan bilinçli olarak ayrıdır. Sürüm sorusu "2026.4.23'ten
itibaren yayımlanan her kararlı sürüm bu adaya güncellenebilir ve plugin bağımlılığı
kalıntıları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 geçididir. 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 E2E hatlarını tam olarak bu tarball'a karşı çalıştırır. İş akışı test
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 test düzeneğiyle güvenilir bir dalı, etiketi veya commit'i paketler.source=url: zorunlupackage_sha256ile herkese açık bir HTTPS tarball'ını doğrular. Bu yol; URL kimlik bilgilerini, varsayılan olmayan HTTPS portları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ı, bakımcıların sahip olduğu.github/package-trusted-sources.jsonilkesine göre doğrular. Bunu,source=urlseçeneğini girdi düzeyinde özel erişime izin veren bir anahtarla zayıflatmak yerine kurumsal/özel yansılar için kullanın. Taşıyıcı kimlik doğrulaması, ilke tarafından yapılandırıldığında sabitOPENCLAW_TRUSTED_PACKAGE_TOKENgizli bilgisini kullanır.source=artifact: başka bir Actions çalıştırmasının yüklediği tarball'ı yeniden kullanır.
Tam Sürüm Doğrulaması varsayılan olarak çözümlenen sürüm SHA'sından oluşturulan
source=artifact değerini kullanır. Yayım sonrası kanıt için
package_acceptance_package_spec=openclaw@YYYY.M.PATCH değerini geçirin; böylece aynı yükseltme matrisi
gönderilmiş 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), ayrıca şunları 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 paketi geçidini yayımlanmış her sürümde dolaştırmadan paket geçişini, güncelleme kanalı değiştirmeyi, bozuk yönetilen plugin toleransını, eski kalmış 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 uyumluluğu sınırı olarak
2026.4.23 değerini, plugin mimarisi değişim sınırı olarak 2026.5.2
değerini ve daha eski bir 2026.4.1x yayımlanmış güncelleme temel sürümü olarak
2026.4.15 değerini sabitler; çözümleyici, zaten 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 değerini kullanın.
Legacy tarih öncesi bağlantı noktasını da istediğiniz manuel geniş örnekleme için
release-history kullanılabilir durumda kalır.
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 çalıştırmaya devam eder; ancak günlükler ve yapıtlar temel sürüm başına ayrı kalır ve duvar saati süresi tek bir büyük 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 extended-stable canary için
package_spec=openclaw@extended-stable değerini ayarlayın. Paket Kabulü, Docker hatları çalışmadan önce bu
seçiciyi tam bir tarball'a çözümler.
Sürüm sorusu MCP kanallarını, cron/alt ajan temizliğini, OpenAI web aramasını veya OpenWebUI'ı
içerdiğinde suite_profile=product değerini kullanın. suite_profile=full değerini yalnızca
tam Docker sürüm yolu kapsamına ihtiyaç duyduğunuzda kullanın.
Sürüm varsayılanı
Sürüm adayları için varsayılan kanıt yığını şöyledir:
- Kaynak düzeyindeki regresyonlar 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ü yükleyici, ilk katılım ve platform davranışı için işletim sistemleri arası sürüm denetimleri.
- Canlı paketler yalnızca değiştirilen yüzey sağlayıcı veya barındırılan hizmet davranışına dokunduğunda çalıştırılır.
Bakımcı makinelerinde, açıkça yerel kanıt yürütülmediği sürece geniş geçitler ve Docker/paket ürün kanıtı Testbox içinde çalıştırılmalıdır.
Legacy uyumluluk
Uyumluluk esnekliği dar kapsamlı ve zaman sınırlıdır:
2026.4.25-beta.*dahil olmak üzere2026.4.25sürümüne kadarki paketler, Paket Kabulünde daha önce gönderilmiş paket meta verisi eksiklerini tolere edebilir.- Yayımlanmış
2026.4.26paketi, daha önce gönderilmiş yerel derleme meta verisi damga dosyaları için uyarı verebilir. - Daha sonraki paketler modern sözleşmeleri karşılamalıdır. Aynı eksikler uyarı verilmesi veya atlanması yerine başarısızlığa neden olur.
Bu eski şekiller için yeni başlatma geçişleri eklemeyin. Bir doctor onarımı ekleyin veya mevcut
onarımı genişletin; ardından yeniden başlatma güncelleme komutuna ait olduğunda 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, doğru nedenle başarısız olabilecek en alt katmana kapsam ekleyin:
- Saf yol veya meta veri mantığı: kaynağın yanında birim testi.
- Paket envanteri veya paketlenmiş dosya davranışı:
package-dist-inventoryya da tarball denetleyici testi. - CLI yükleme/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 özgü
node_modulesağacını varsaymak yerine bu projenin tarandığını/temizlendiğini kanıtlamalıdır.
Yeni Docker fikstürlerini varsayılan olarak dış etkenlerden yalıtılmış tutun. Testin amacı canlı kayıt defteri davranışı olmadığı sürece yerel fikstür kayıt defterleri ve sahte paketler kullanın.
Hata triyajı
Artefakt kimliğiyle başlayın:
- Package Acceptance
resolve_packageözeti: kaynak, sürüm, SHA-256 ve artefakt adı. - Docker artefaktları:
.artifacts/docker-tests/**/summary.json,failures.json, hat günlükleri ve yeniden çalıştırma komutları. - Yükseltmeden sağ kalanlar özeti: temel sürüm, aday sürüm, senaryo, aşama süreleri ve
yapılandırma tarifi kapsamı dâhil olmak üzere
.artifacts/upgrade-survivor/summary.json.
Tüm sürüm şemsiyesini yeniden çalıştırmak yerine, başarısız olan tam hattı aynı paket artefaktıyla yeniden çalıştırmayı tercih edin.