Довідка щодо тестових утиліт, патернів і забезпечення lint для Plugin OpenClaw.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Тестові утиліти
Ці підшляхи тестових помічників є локальними для репозиторію вихідними точками входу для власних тестів вбудованих Plugin OpenClaw. Вони не є експортами пакета для сторонніх Plugin. Імпорт mock для Plugin API:openclaw/plugin-sdk/plugin-test-api
Імпорт контракту runtime агента: openclaw/plugin-sdk/agent-runtime-test-contracts
Імпорт контракту каналу: openclaw/plugin-sdk/channel-contract-testing
Імпорт тестового помічника каналу: openclaw/plugin-sdk/channel-test-helpers
Імпорт тесту цілі каналу: openclaw/plugin-sdk/channel-target-testing
Імпорт контракту Plugin: openclaw/plugin-sdk/plugin-test-contracts
Імпорт тесту runtime Plugin: openclaw/plugin-sdk/plugin-test-runtime
Імпорт контракту провайдера: openclaw/plugin-sdk/provider-test-contracts
Імпорт HTTP mock провайдера: openclaw/plugin-sdk/provider-http-test-mocks
Імпорт тесту середовища/мережі: openclaw/plugin-sdk/test-env
Імпорт універсальної фікстури: openclaw/plugin-sdk/test-fixtures
Імпорт mock вбудованого модуля Node: openclaw/plugin-sdk/test-node-mocks
Для нових тестів Plugin надавайте перевагу наведеним нижче цільовим підшляхам. Широкий barrel
openclaw/plugin-sdk/testing призначений лише для застарілої сумісності.
Запобіжники репозиторію відхиляють нові реальні імпорти з plugin-sdk/testing і
plugin-sdk/test-utils; ці назви залишаються лише як застарілі поверхні
сумісності для тестів записів сумісності.
Доступні експорти
| Експорт | Призначення |
|---|---|
createTestPluginApi | Створює мінімальний мок API Plugin для модульних тестів прямої реєстрації. Імпортуйте з plugin-sdk/plugin-test-api |
AUTH_PROFILE_RUNTIME_CONTRACT | Спільна фікстура контракту auth-profile для адаптерів середовища виконання нативного агента. Імпортуйте з plugin-sdk/agent-runtime-test-contracts |
DELIVERY_NO_REPLY_RUNTIME_CONTRACT | Спільна фікстура контракту пригнічення доставлення для адаптерів середовища виконання нативного агента. Імпортуйте з plugin-sdk/agent-runtime-test-contracts |
OUTCOME_FALLBACK_RUNTIME_CONTRACT | Спільна фікстура контракту класифікації резервного варіанта для адаптерів середовища виконання нативного агента. Імпортуйте з plugin-sdk/agent-runtime-test-contracts |
createParameterFreeTool | Створює фікстури схем динамічних інструментів для тестів контрактів нативного середовища виконання. Імпортуйте з plugin-sdk/agent-runtime-test-contracts |
expectChannelInboundContextContract | Перевіряє форму вхідного контексту каналу. Імпортуйте з plugin-sdk/channel-contract-testing |
installChannelOutboundPayloadContractSuite | Встановлює випадки контракту вихідного корисного навантаження каналу. Імпортуйте з plugin-sdk/channel-contract-testing |
createStartAccountContext | Створює контексти життєвого циклу облікового запису каналу. Імпортуйте з plugin-sdk/channel-test-helpers |
installChannelActionsContractSuite | Встановлює загальні випадки контракту дій із повідомленнями каналу. Імпортуйте з plugin-sdk/channel-test-helpers |
installChannelSetupContractSuite | Встановлює загальні випадки контракту налаштування каналу. Імпортуйте з plugin-sdk/channel-test-helpers |
installChannelStatusContractSuite | Встановлює загальні випадки контракту стану каналу. Імпортуйте з plugin-sdk/channel-test-helpers |
expectDirectoryIds | Перевіряє ідентифікатори каталогу каналу з функції списку каталогів. Імпортуйте з plugin-sdk/channel-test-helpers |
assertBundledChannelEntries | Перевіряє, що вбудовані точки входу каналу надають очікуваний публічний контракт. Імпортуйте з plugin-sdk/channel-test-helpers |
formatEnvelopeTimestamp | Форматує детерміновані часові мітки конверта. Імпортуйте з plugin-sdk/channel-test-helpers |
expectPairingReplyText | Перевіряє текст відповіді сполучення каналу та витягує його код. Імпортуйте з plugin-sdk/channel-test-helpers |
describePluginRegistrationContract | Встановлює перевірки контракту реєстрації Plugin. Імпортуйте з plugin-sdk/plugin-test-contracts |
registerSingleProviderPlugin | Реєструє один Plugin провайдера в smoke-тестах завантажувача. Імпортуйте з plugin-sdk/plugin-test-runtime |
registerProviderPlugin | Захоплює всі типи провайдерів з одного Plugin. Імпортуйте з plugin-sdk/plugin-test-runtime |
registerProviderPlugins | Захоплює реєстрації провайдерів у кількох Plugin. Імпортуйте з plugin-sdk/plugin-test-runtime |
requireRegisteredProvider | Перевіряє, що колекція провайдерів містить ідентифікатор. Імпортуйте з plugin-sdk/plugin-test-runtime |
createRuntimeEnv | Створює змодельоване середовище виконання CLI/Plugin. Імпортуйте з plugin-sdk/plugin-test-runtime |
createPluginSetupWizardStatus | Створює допоміжні засоби стану налаштування для Plugin каналів. Імпортуйте з plugin-sdk/plugin-test-runtime |
describeOpenAIProviderRuntimeContract | Встановлює перевірки контракту середовища виконання сімейства провайдерів. Імпортуйте з plugin-sdk/provider-test-contracts |
expectPassthroughReplayPolicy | Перевіряє, що політики повторного відтворення провайдера пропускають інструменти та метадані, якими володіє провайдер. Імпортуйте з plugin-sdk/provider-test-contracts |
runRealtimeSttLiveTest | Запускає live-тест провайдера STT у реальному часі зі спільними аудіофікстурами. Імпортуйте з plugin-sdk/provider-test-contracts |
normalizeTranscriptForMatch | Нормалізує live-вивід транскрипту перед нечіткими перевірками. Імпортуйте з plugin-sdk/provider-test-contracts |
expectExplicitVideoGenerationCapabilities | Перевіряє, що відеопровайдери оголошують явні можливості режиму генерації. Імпортуйте з plugin-sdk/provider-test-contracts |
expectExplicitMusicGenerationCapabilities | Перевіряє, що музичні провайдери оголошують явні можливості генерації/редагування. Імпортуйте з plugin-sdk/provider-test-contracts |
mockSuccessfulDashscopeVideoTask | Встановлює успішну відповідь відеозавдання, сумісну з DashScope. Імпортуйте з plugin-sdk/provider-test-contracts |
getProviderHttpMocks | Надає доступ до opt-in HTTP/auth моків Vitest для провайдера. Імпортуйте з plugin-sdk/provider-http-test-mocks |
installProviderHttpMockCleanup | Скидає HTTP/auth моки провайдера після кожного тесту. Імпортуйте з plugin-sdk/provider-http-test-mocks |
installCommonResolveTargetErrorCases | Спільні тестові випадки для обробки помилок розв’язання цілі. Імпортуйте з plugin-sdk/channel-target-testing |
shouldAckReaction | Перевіряє, чи канал має додати реакцію підтвердження. Імпортуйте з plugin-sdk/channel-feedback |
removeAckReactionAfterReply | Видаляє реакцію підтвердження після доставлення відповіді. Імпортуйте з plugin-sdk/channel-feedback |
createTestRegistry | Створює фікстуру реєстру Plugin каналу. Імпортуйте з plugin-sdk/plugin-test-runtime або plugin-sdk/channel-test-helpers |
createEmptyPluginRegistry | Створює порожню фікстуру реєстру Plugin. Імпортуйте з plugin-sdk/plugin-test-runtime або plugin-sdk/channel-test-helpers |
setActivePluginRegistry | Встановлює фікстуру реєстру для тестів середовища виконання Plugin. Імпортуйте з plugin-sdk/plugin-test-runtime або plugin-sdk/channel-test-helpers |
createRequestCaptureJsonFetch | Захоплює JSON-запити fetch у тестах допоміжних засобів медіа. Імпортуйте з plugin-sdk/test-env |
withServer | Запускає тести проти одноразового локального HTTP-сервера. Імпортуйте з plugin-sdk/test-env |
createMockIncomingRequest | Створює мінімальний об’єкт вхідного HTTP-запиту. Імпортуйте з plugin-sdk/test-env |
withFetchPreconnect | Запускає тести fetch з установленими хуками попереднього з’єднання. Імпортуйте з plugin-sdk/test-env |
withEnv / withEnvAsync | Тимчасово змінює змінні середовища. Імпортуйте з plugin-sdk/test-env |
createTempHomeEnv / withTempHome / withTempDir | Створює ізольовані фікстури файлової системи для тестів. Імпортуйте з plugin-sdk/test-env |
createMockServerResponse | Створює мінімальний мок відповіді HTTP-сервера. Імпортуйте з plugin-sdk/test-env |
createCliRuntimeCapture | Захоплює вивід середовища виконання CLI у тестах. Імпортуйте з plugin-sdk/test-fixtures |
importFreshModule | Імпортує модуль ESM зі свіжим токеном запиту, щоб обійти кеш модулів. Імпортуйте з plugin-sdk/test-fixtures |
bundledPluginRoot / bundledPluginFile | Розв’язує шляхи до фікстур джерела або dist вбудованого Plugin. Імпортуйте з plugin-sdk/test-fixtures |
mockNodeBuiltinModule | Встановлює вузькі моки Vitest для вбудованих модулів Node. Імпортуйте з plugin-sdk/test-node-mocks |
createSandboxTestContext | Створює контексти тестів пісочниці. Імпортуйте з plugin-sdk/test-fixtures |
writeSkill | Записує фікстури Skills. Імпортуйте з plugin-sdk/test-fixtures |
makeAgentAssistantMessage | Створює фікстури повідомлень транскрипту агента. Імпортуйте з plugin-sdk/test-fixtures |
peekSystemEvents / resetSystemEventsForTest | Переглядає та скидає фікстури системних подій. Імпортуйте з plugin-sdk/test-fixtures |
sanitizeTerminalText | Очищає вивід термінала для перевірок. Імпортуйте з plugin-sdk/test-fixtures |
countLines / hasBalancedFences | Перевіряє форму виводу фрагментації. Імпортуйте з plugin-sdk/test-fixtures |
runProviderCatalog | Виконує хук каталогу провайдера з тестовими залежностями |
resolveProviderWizardOptions | Розв’язує варіанти майстра налаштування провайдера в тестах контрактів |
resolveProviderModelPickerEntries | Розв’язує записи засобу вибору моделей провайдера в тестах контрактів |
buildProviderPluginMethodChoice | Створює ідентифікатори вибору майстра провайдера для перевірок |
setProviderWizardProvidersResolverForTest | Впроваджує провайдери майстра провайдера для ізольованих тестів |
createProviderUsageFetch | Створює фікстури отримання даних про використання провайдера |
useFrozenTime / useRealTime | Заморожує та відновлює таймери для тестів, чутливих до часу. Імпортуйте з plugin-sdk/test-env |
createTestWizardPrompter | Створює імітований промптер майстра налаштування |
createRuntimeTaskFlow | Створює ізольований стан потоку завдань середовища виконання |
typedCases | Зберігає літеральні типи для таблично-керованих тестів. Імпортуйте з plugin-sdk/test-fixtures |
src/plugins/contracts.
Тримайте нові тести розширень на документованому сфокусованому підшляху SDK, як-от
plugin-sdk/plugin-test-api, plugin-sdk/channel-contract-testing,
plugin-sdk/agent-runtime-test-contracts, plugin-sdk/channel-test-helpers,
plugin-sdk/plugin-test-contracts, plugin-sdk/plugin-test-runtime,
plugin-sdk/provider-test-contracts, plugin-sdk/provider-http-test-mocks,
plugin-sdk/test-env або plugin-sdk/test-fixtures, замість прямого імпорту
широкого сумісного barrel plugin-sdk/testing, файлів репозиторію src/** або
мостів репозиторію test/helpers/*.
Типи
Сфокусовані тестові підшляхи також повторно експортують типи, корисні в тестових файлах:Визначення цілі тестування
ВикористовуйтеinstallCommonResolveTargetErrorCases, щоб додати стандартні випадки помилок для
визначення цілі каналу:
Шаблони тестування
Тестування контрактів реєстрації
Модульні тести, які передають написаний вручну mockapi до register(api), не перевіряють
приймальні шлюзи завантажувача OpenClaw. Додайте принаймні один smoke test на основі завантажувача
для кожної реєстраційної поверхні, від якої залежить ваш плагін, особливо hooks і
ексклюзивні capabilities, як-от memory.
Справжній завантажувач завершує реєстрацію плагіна з помилкою, коли бракує обов’язкових метаданих або
плагін викликає capability API, яким він не володіє. Наприклад,
api.registerHook(...) вимагає назву hook, а
api.registerMemoryCapability(...) вимагає, щоб маніфест плагіна або експортований
entry оголошував kind: "memory".
Тестування доступу до runtime config
Надавайте перевагу спільному mock runtime плагіна зopenclaw/plugin-sdk/channel-test-helpers
під час тестування вбудованих канальних плагінів. Його застарілі mocks runtime.config.loadConfig() і
runtime.config.writeConfigFile(...) типово викидають помилку, щоб тести виявляли нове
використання compatibility APIs. Перевизначайте ці mocks лише тоді, коли тест
явно покриває поведінку legacy-сумісності.
Модульне тестування канального плагіна
Модульне тестування provider-плагіна
Mocking runtime плагіна
Для коду, який використовуєcreatePluginRuntimeStore, створюйте mock runtime у тестах:
Тестування з per-instance stubs
Надавайте перевагу per-instance stubs замість мутації prototype:Контрактні тести (плагіни в репозиторії)
Вбудовані плагіни мають контрактні тести, які перевіряють володіння реєстрацією:- Які плагіни реєструють яких providers
- Які плагіни реєструють яких speech providers
- Коректність форми реєстрації
- Відповідність runtime-контракту
Запуск scoped tests
Для конкретного плагіна:Примусове застосування lint (плагіни в репозиторії)
Три правила застосовуютьсяpnpm check для плагінів у репозиторії:
- Без монолітних root imports — root barrel
openclaw/plugin-sdkвідхиляється - Без прямих імпортів
src/— плагіни не можуть напряму імпортувати../../src/ - Без self-imports — плагіни не можуть імпортувати власний підшлях
plugin-sdk/<name>
Конфігурація тестів
OpenClaw використовує Vitest із порогами покриття V8. Для тестів плагінів:Пов’язане
- Огляд SDK — домовленості щодо імпортів
- Канальні плагіни SDK — інтерфейс канального плагіна
- Provider-плагіни SDK — hooks provider-плагіна
- Створення плагінів — посібник для початку роботи