Тести
- Повний набір інструментів тестування (набори, live, Docker): Тестування
-
pnpm test:force: завершує всі завислі процеси gateway, які утримують типовий контрольний порт, а потім запускає повний набір Vitest з ізольованим портом gateway, щоб серверні тести не конфліктували із запущеним екземпляром. Використовуйте це, якщо попередній запуск gateway залишив порт 18789 зайнятим. -
pnpm test:coverage: запускає набір unit-тестів із покриттям V8 (черезvitest.unit.config.ts). Глобальні пороги становлять 70% для lines/branches/functions/statements. Покриття виключає entrypoint-и з великою часткою інтеграції (обв’язка CLI, мости gateway/telegram, статичний сервер webchat), щоб ціль залишалася зосередженою на логіці, придатній для unit-тестування. -
pnpm test:coverage:changed: запускає покриття unit-тестів лише для файлів, змінених відносноorigin/main. -
pnpm test:changed: запускає нативну конфігурацію проєктів Vitest з--changed origin/main. Базова конфігурація розглядає файли проєктів/конфігурації якforceRerunTriggers, тому зміни в обв’язці за потреби все одно спричиняють ширший повторний запуск. -
pnpm test: напряму запускає нативну кореневу конфігурацію проєктів Vitest. Фільтри файлів нативно працюють у всіх налаштованих проєктах. -
Базова конфігурація Vitest тепер типово використовує
pool: "threads"іisolate: false, із увімкненим спільним неізольованим runner-ом у конфігураціях репозиторію. -
pnpm test:channelsзапускаєvitest.channels.config.ts. -
pnpm test:extensionsзапускаєvitest.extensions.config.ts. -
pnpm test:extensions: запускає набори для extensions/plugins. -
pnpm test:perf:imports: вмикає звітність Vitest про тривалість імпорту та деталізацію імпортів для нативного запуску кореневих проєктів. -
pnpm test:perf:imports:changed: те саме профілювання імпортів, але лише для файлів, змінених відносноorigin/main. -
pnpm test:perf:profile:main: записує CPU-профіль для головного потоку Vitest (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: записує CPU- і heap-профілі для unit runner-а (.artifacts/vitest-runner-profile). -
Інтеграція gateway: вмикається через
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testабоpnpm test:gateway. -
pnpm test:e2e: запускає наскрізні smoke-тести gateway (парування кількох екземплярів WS/HTTP/node). Типово використовуєthreads+isolate: falseз адаптивною кількістю workers уvitest.e2e.config.ts; налаштовується черезOPENCLAW_E2E_WORKERS=<n>, а для докладних логів установітьOPENCLAW_E2E_VERBOSE=1. -
pnpm test:live: запускає live-тести провайдерів (minimax/zai). Потрібні API-ключі таLIVE=1(або специфічний для провайдера*_LIVE_TEST=1), щоб зняти пропуск. -
pnpm test:docker:openwebui: запускає Dockerized OpenClaw + Open WebUI, виконує вхід через Open WebUI, перевіряє/api/models, а потім запускає реальний проксійований чат через/api/chat/completions. Потребує придатного ключа live-моделі (наприклад, OpenAI у~/.profile), завантажує зовнішній образ Open WebUI і не вважається стабільним для CI так, як звичайні набори unit/e2e. -
pnpm test:docker:mcp-channels: запускає контейнер Gateway із наповненими даними та другий клієнтський контейнер, який запускаєopenclaw mcp serve, а потім перевіряє виявлення маршрутизованих розмов, читання транскриптів, метадані вкладень, поведінку черги live-подій, маршрутизацію вихідного надсилання та сповіщення про channel + permission у стилі Claude через реальний міст stdio. Перевірка сповіщень Claude читає сирі stdio MCP-кадри напряму, щоб smoke-тест відображав те, що міст справді надсилає.
Локальний PR gate
Для локальних перевірок land/gate PR запустіть:pnpm checkpnpm buildpnpm testpnpm check:docs
pnpm test нестабільно працює на завантаженому хості, перезапустіть його один раз, перш ніж вважати це регресією, а потім ізолюйте через pnpm test <path/to/test>. Для хостів з обмеженою пам’яттю використовуйте:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Бенч затримки моделі (локальні ключі)
Скрипт:scripts/bench-model.ts
Використання:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Необов’язкові env:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Типовий prompt: “Відповідай одним словом: ok. Без розділових знаків чи додаткового тексту.”
- minimax median 1279ms (min 1114, max 2431)
- opus median 2454ms (min 1224, max 3170)
Бенч запуску CLI
Скрипт:scripts/bench-cli-startup.ts
Використання:
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 --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
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: обидва preset-и
sampleCount, avg, p50, p95, min/max, розподіл exit-code/signal і зведення максимального RSS для кожної команди. Необов’язкові --cpu-prof-dir / --heap-prof-dir записують V8-профілі для кожного запуску, щоб вимірювання часу та збір профілів використовували однаковий harness.
Умовні правила для збереженого виводу:
pnpm test:startup:bench:smokeзаписує цільовий smoke-артефакт у.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:saveзаписує артефакт повного набору в.artifacts/cli-startup-bench-all.jsonзruns=5іwarmup=1pnpm test:startup:bench:updateоновлює зафіксований у репозиторії baseline fixture уtest/fixtures/cli-startup-bench.jsonзruns=5іwarmup=1
test/fixtures/cli-startup-bench.json- Оновити:
pnpm test:startup:bench:update - Порівняти поточні результати з fixture:
pnpm test:startup:bench:check
Onboarding E2E (Docker)
Docker необов’язковий; це потрібно лише для контейнеризованих onboarding smoke-тестів. Повний cold-start-процес у чистому Linux-контейнері:openclaw health.
Smoke-тест імпорту QR (Docker)
Переконується, щоqrcode-terminal завантажується в підтримуваних Docker runtime Node (типово Node 24, сумісний Node 22):