Skip to main content
Referensi untuk utilitas pengujian, pola, dan penegakan lint bagi plugin OpenClaw.
Mencari contoh pengujian? Panduan cara kerja menyertakan contoh pengujian lengkap: Pengujian plugin saluran dan Pengujian plugin penyedia.

Utilitas pengujian

Subpath ini merupakan titik masuk sumber lokal repositori untuk pengujian plugin bundel milik OpenClaw. Subpath ini bukan ekspor package.json yang dipublikasikan untuk plugin pihak ketiga, dan dapat mengimpor Vitest atau dependensi pengujian lain yang hanya tersedia di repositori.
Gunakan subpath terfokus ini untuk pengujian plugin bundel. Barrel openclaw/plugin-sdk/testing sebelumnya bersifat lokal repositori, dikecualikan dari paket yang didistribusikan, dan telah dihapus. Alias openclaw/plugin-sdk/test-utils sebelumnya turut dihapus. pnpm run lint:plugins:no-extension-test-core-imports (scripts/check-no-extension-test-core-imports.ts) mempertahankan pengujian ekstensi pada subpath pengujian terfokus di atas.

Ekspor yang tersedia

Suite kontrak Plugin terbundel juga menggunakan subjalur pengujian SDK ini untuk helper registri khusus pengujian, manifes, artefak publik, dan fixture runtime. Suite khusus inti yang bergantung pada inventaris OpenClaw terbundel tetap berada di src/plugins/contracts sebagai gantinya.

Tipe

Subjalur pengujian terfokus juga mengekspor ulang tipe yang berguna dalam file pengujian:

Resolusi target pengujian

Gunakan installCommonResolveTargetErrorCases untuk menambahkan kasus kesalahan standar bagi resolusi target kanal:

Pola pengujian

Menguji kontrak pendaftaran

Pengujian unit yang meneruskan mock api buatan tangan ke register(api) tidak menjalankan gerbang penerimaan pemuat OpenClaw. Tambahkan setidaknya satu uji asap berbasis pemuat untuk setiap permukaan pendaftaran yang menjadi dependensi Plugin Anda, terutama hook dan kapabilitas eksklusif seperti memori. Pemuat sebenarnya menggagalkan pendaftaran Plugin ketika metadata wajib tidak tersedia atau Plugin memanggil API kapabilitas yang bukan miliknya. Sebagai contoh, api.registerHook(...) memerlukan nama hook, dan api.registerMemoryCapability(...) mengharuskan manifes Plugin atau entri yang diekspor mendeklarasikan kind: "memory".

Menguji akses konfigurasi runtime

Utamakan mock runtime Plugin bersama dari openclaw/plugin-sdk/plugin-test-runtime. Helper konfigurasi runtime-nya memodelkan API snapshot dan mutasi saat ini.

Pengujian unit Plugin kanal

Pengujian unit Plugin penyedia

Membuat mock runtime Plugin

Untuk kode yang menggunakan createPluginRuntimeStore, buat mock runtime dalam pengujian:

Menguji dengan stub per instans

Utamakan stub per instans daripada mutasi prototipe:

Pengujian kontrak (Plugin dalam repo)

Plugin terbundel memiliki pengujian kontrak yang memverifikasi kepemilikan pendaftaran:
Pengujian ini memastikan:
  • Plugin mana yang mendaftarkan penyedia tertentu
  • Plugin mana yang mendaftarkan penyedia ucapan tertentu
  • Ketepatan bentuk pendaftaran
  • Kepatuhan kontrak runtime

Menjalankan pengujian terbatas

Untuk Plugin tertentu:
Hanya untuk pengujian kontrak:

Penegakan lint (Plugin dalam repo)

scripts/run-additional-boundary-checks.mjs menjalankan serangkaian pemeriksaan batas impor lint:plugins:* di CI; masing-masing juga dapat dijalankan secara mandiri secara lokal: Plugin eksternal tidak tunduk pada aturan lint ini, tetapi mengikuti pola yang sama tetap disarankan.

Konfigurasi pengujian

OpenClaw menggunakan Vitest 4 dengan pelaporan cakupan V8 yang bersifat informatif. Untuk pengujian Plugin:
Jika proses lokal menyebabkan tekanan memori:

Terkait