टेस्टिंग
OpenClaw में तीन Vitest सूट्स (unit/integration, e2e, live) और Docker रनर्स का एक छोटा सेट है। यह दस्तावेज़ “हम कैसे टेस्ट करते हैं” के लिए एक मार्गदर्शिका है:- प्रत्येक सूट क्या कवर करता है (और क्या जानबूझकर कवर नहीं करता)
- सामान्य वर्कफ़्लो के लिए कौन-से कमांड चलाने हैं (लोकल, प्री-पुश, डिबगिंग)
- लाइव टेस्ट क्रेडेंशियल्स कैसे खोजते हैं और मॉडल/प्रदाता कैसे चुनते हैं
- वास्तविक दुनिया के मॉडल/प्रदाता मुद्दों के लिए रिग्रेशन कैसे जोड़ें
त्वरित प्रारंभ
अधिकांश दिनों में:- पूर्ण गेट (पुश से पहले अपेक्षित):
pnpm build && pnpm check && pnpm test
- कवरेज गेट:
pnpm test:coverage - E2E सूट:
pnpm test:e2e
- लाइव सूट (मॉडल + Gateway टूल/इमेज प्रोब्स):
pnpm test:live
टेस्ट सूट्स (कहाँ क्या चलता है)
सूट्स को “यथार्थवाद में वृद्धि” (और अस्थिरता/लागत में वृद्धि) के रूप में सोचें:यूनिट / इंटीग्रेशन (डिफ़ॉल्ट)
- कमांड:
pnpm test - कॉन्फ़िग:
vitest.config.ts - फ़ाइलें:
src/**/*.test.ts - दायरा:
- शुद्ध यूनिट टेस्ट्स
- इन-प्रोसेस इंटीग्रेशन टेस्ट्स (gateway auth, routing, tooling, parsing, config)
- ज्ञात बग्स के लिए निर्धारक रिग्रेशन
- अपेक्षाएँ:
- CI में चलता है
- वास्तविक कुंजियों की आवश्यकता नहीं
- तेज़ और स्थिर होना चाहिए
- पूल नोट:
- तेज़ यूनिट शार्ड्स के लिए OpenClaw Node 22/23 पर Vitest
vmForksका उपयोग करता है। - Node 24+ पर, OpenClaw Node VM लिंकिंग त्रुटियों (
ERR_VM_MODULE_LINK_FAILURE/module is already linked) से बचने के लिए स्वचालित रूप से नियमितforksपर वापस चला जाता है। OPENCLAW_TEST_VM_FORKS=0(forceforks) याOPENCLAW_TEST_VM_FORKS=1(forcevmForks) के साथ मैन्युअल रूप से ओवरराइड करें।
- तेज़ यूनिट शार्ड्स के लिए OpenClaw Node 22/23 पर Vitest
E2E (gateway स्मोक)
- कमांड:
pnpm test:e2e - कॉन्फ़िग:
vitest.e2e.config.ts - फ़ाइलें:
src/**/*.e2e.test.ts - दायरा:
- मल्टी-इंस्टेंस gateway एंड-टू-एंड व्यवहार
- WebSocket/HTTP सतहें, नोड पेयरिंग, और भारी नेटवर्किंग
- कंसोल I/O ओवरहेड कम करने के लिए डिफ़ॉल्ट रूप से साइलेंट मोड में चलता है।
- अपेक्षाएँ:
- CI में चलता है (जब पाइपलाइन में सक्षम हो)
- वास्तविक कुंजियों की आवश्यकता नहीं
- दायरा:
- मल्टी-इंस्टेंस gateway एंड-टू-एंड व्यवहार
- WebSocket/HTTP सतहें, नोड पेयरिंग, और भारी नेटवर्किंग
- अपेक्षाएँ:
- CI में चलता है (जब पाइपलाइन में सक्षम हो)
- वास्तविक कुंजियों की आवश्यकता नहीं
- यूनिट टेस्ट्स से अधिक मूविंग पार्ट्स (धीमा हो सकता है)
लाइव (वास्तविक प्रदाता + वास्तविक मॉडल)
- कमांड:
pnpm test:live - कॉन्फ़िग:
vitest.live.config.ts - फ़ाइलें:
src/**/*.live.test.ts - डिफ़ॉल्ट:
pnpm test:liveद्वारा सक्षम (सेट करता हैOPENCLAW_LIVE_TEST=1) - दायरा:
- “क्या यह प्रदाता/मॉडल आज वास्तविक क्रेड्स के साथ काम करता है?”
- प्रदाता फ़ॉर्मैट बदलाव, टूल-कॉलिंग की बारीकियाँ, auth समस्याएँ, और रेट लिमिट व्यवहार पकड़ना
- अपेक्षाएँ:
- डिज़ाइन के अनुसार CI-स्थिर नहीं (वास्तविक नेटवर्क, वास्तविक प्रदाता नीतियाँ, कोटा, आउटेज)
- पैसा खर्च करता है / रेट लिमिट्स उपयोग करता है
- “सब कुछ” चलाने के बजाय सीमित सबसेट्स चलाना बेहतर
- लाइव रन
~/.profileको सोर्स करेंगे ताकि गायब API कुंजियाँ मिल सकें - Anthropic कुंजी रोटेशन:
OPENCLAW_LIVE_ANTHROPIC_KEYS="sk-...,sk-..."(याOPENCLAW_LIVE_ANTHROPIC_KEY=sk-...) या कईANTHROPIC_API_KEY*vars सेट करें; टेस्ट्स रेट लिमिट पर रिट्राई करेंगे
मुझे कौन-सा सूट चलाना चाहिए?
इस निर्णय तालिका का उपयोग करें:- लॉजिक/टेस्ट्स संपादित कर रहे हैं:
pnpm testचलाएँ (और यदि बहुत बदलाव किया है तोpnpm test:coverage) - gateway नेटवर्किंग / WS प्रोटोकॉल / पेयरिंग को छू रहे हैं:
pnpm test:e2eजोड़ें - “मेरा बॉट डाउन है” / प्रदाता-विशिष्ट विफलताएँ / टूल कॉलिंग डिबग कर रहे हैं: सीमित
pnpm test:liveचलाएँ
लाइव: मॉडल स्मोक (प्रोफ़ाइल कुंजियाँ)
लाइव टेस्ट्स दो लेयर्स में विभाजित हैं ताकि विफलताओं को अलग किया जा सके:- “डायरेक्ट मॉडल” बताता है कि प्रदाता/मॉडल दी गई कुंजी के साथ उत्तर दे सकता है या नहीं।
- “Gateway स्मोक” बताता है कि पूरा gateway+agent पाइपलाइन उस मॉडल के लिए काम करता है (सेशन्स, इतिहास, टूल्स, sandbox नीति, आदि)।
लेयर 1: डायरेक्ट मॉडल कम्प्लीशन (gateway नहीं)
- टेस्ट:
src/agents/models.profiles.live.test.ts - लक्ष्य:
- खोजे गए मॉडलों की गणना
getApiKeyForModelका उपयोग करके वे मॉडल चुनना जिनके लिए आपके पास क्रेड्स हैं- प्रति मॉडल एक छोटा कम्प्लीशन चलाना (और जहाँ आवश्यक हो लक्षित रिग्रेशन)
- सक्षम कैसे करें:
pnpm test:live(या यदि Vitest सीधे चला रहे हों तोOPENCLAW_LIVE_TEST=1)
- वास्तव में यह सूट चलाने के लिए
OPENCLAW_LIVE_MODELS=modern(या आधुनिक के लिए उपनामall) सेट करें; अन्यथा यह स्किप हो जाता है ताकिpnpm test:livegateway स्मोक पर केंद्रित रहे - मॉडल कैसे चुनें:
- आधुनिक allowlist चलाने के लिए
OPENCLAW_LIVE_MODELS=modern(Opus/Sonnet/Haiku 4.5, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.1, Grok 4) OPENCLAW_LIVE_MODELS=allआधुनिक allowlist का उपनाम है- या
OPENCLAW_LIVE_MODELS="openai/gpt-5.2,anthropic/claude-opus-4-6,..."(कॉमा allowlist)
- आधुनिक allowlist चलाने के लिए
- प्रदाता कैसे चुनें:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(कॉमा allowlist)
- कुंजियाँ कहाँ से आती हैं:
- डिफ़ॉल्ट रूप से: प्रोफ़ाइल स्टोर और env फ़ॉलबैक्स
- केवल प्रोफ़ाइल स्टोर लागू करने के लिए
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1सेट करें
- यह क्यों मौजूद है:
- “प्रदाता API टूटा है / कुंजी अमान्य है” को “gateway एजेंट पाइपलाइन टूटी है” से अलग करता है
- छोटे, पृथक रिग्रेशन शामिल करता है (उदाहरण: OpenAI Responses/Codex Responses reasoning replay + tool-call फ़्लोज़)
लेयर 2: Gateway + dev एजेंट स्मोक (जो “@openclaw” वास्तव में करता है)
- टेस्ट:
src/gateway/gateway-models.profiles.live.test.ts - लक्ष्य:
- इन-प्रोसेस gateway स्पिन अप करना
- एक
agent:dev:*सत्र बनाना/पैच करना (प्रति रन मॉडल ओवरराइड) - कुंजियों वाले मॉडलों पर इटरेट करना और यह सत्यापित करना:
- “अर्थपूर्ण” प्रतिक्रिया (बिना टूल्स)
- एक वास्तविक टूल इन्वोकेशन काम करता है (read प्रोब)
- वैकल्पिक अतिरिक्त टूल प्रोब्स (exec+read प्रोब)
- OpenAI रिग्रेशन पाथ्स (केवल टूल-कॉल → फॉलो-अप) काम करते रहें
- प्रोब विवरण (ताकि आप विफलताओं को जल्दी समझा सकें):
readप्रोब: टेस्ट वर्कस्पेस में एक nonce फ़ाइल लिखता है और एजेंट से उसेreadकरने और nonce वापस इको करने को कहता है।exec+readप्रोब: टेस्ट एजेंट सेexec-राइट करके एक temp फ़ाइल में nonce लिखने, फिर उसेreadकरने को कहता है।- इमेज प्रोब: टेस्ट एक जेनरेटेड PNG (बिल्ली + रैंडमाइज़्ड कोड) अटैच करता है और मॉडल से
cat <CODE>लौटाने की अपेक्षा करता है। - इम्प्लीमेंटेशन संदर्भ:
src/gateway/gateway-models.profiles.live.test.tsऔरsrc/gateway/live-image-probe.ts।
- सक्षम कैसे करें:
pnpm test:live(या यदि Vitest सीधे चला रहे हों तोOPENCLAW_LIVE_TEST=1)
- मॉडल कैसे चुनें:
- डिफ़ॉल्ट: आधुनिक allowlist (Opus/Sonnet/Haiku 4.5, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.1, Grok 4)
OPENCLAW_LIVE_GATEWAY_MODELS=allआधुनिक allowlist का उपनाम है- या
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(या कॉमा सूची) सेट करके सीमित करें
- प्रदाता कैसे चुनें (“OpenRouter सब कुछ” से बचें):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(कॉमा allowlist)
- इस लाइव टेस्ट में टूल + इमेज प्रोब्स हमेशा चालू रहते हैं:
readप्रोब +exec+readप्रोब (टूल स्ट्रेस)- इमेज प्रोब तब चलता है जब मॉडल इमेज इनपुट सपोर्ट विज्ञापित करता है
- फ़्लो (उच्च स्तर):
- टेस्ट “CAT” + रैंडम कोड के साथ एक छोटा PNG बनाता है (
src/gateway/live-image-probe.ts) - इसे
agentattachments: [{ mimeType: "image/png", content: "<base64>" }]के माध्यम से भेजता है - Gateway अटैचमेंट्स को
images[]में पार्स करता है (src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - एम्बेडेड एजेंट मल्टीमॉडल यूज़र संदेश मॉडल को फ़ॉरवर्ड करता है
- असर्शन: उत्तर में
cat+ कोड शामिल हो (OCR सहनशीलता: छोटी गलतियाँ स्वीकार्य)
- टेस्ट “CAT” + रैंडम कोड के साथ एक छोटा PNG बनाता है (
provider/model IDs) देखने के लिए चलाएँ:
लाइव: Anthropic setup-token स्मोक
- टेस्ट:
src/agents/anthropic.setup-token.live.test.ts - लक्ष्य: Claude Code CLI setup-token (या पेस्ट किया हुआ setup-token प्रोफ़ाइल) Anthropic प्रॉम्प्ट पूरा कर सकता है, यह सत्यापित करना।
- सक्षम करें:
pnpm test:live(या यदि Vitest सीधे चला रहे हों तोOPENCLAW_LIVE_TEST=1)OPENCLAW_LIVE_SETUP_TOKEN=1
- टोकन स्रोत (एक चुनें):
- प्रोफ़ाइल:
OPENCLAW_LIVE_SETUP_TOKEN_PROFILE=anthropic:setup-token-test - रॉ टोकन:
OPENCLAW_LIVE_SETUP_TOKEN_VALUE=sk-ant-oat01-...
- प्रोफ़ाइल:
- मॉडल ओवरराइड (वैकल्पिक):
OPENCLAW_LIVE_SETUP_TOKEN_MODEL=anthropic/claude-opus-4-6
लाइव: CLI बैकएंड स्मोक (Claude Code CLI या अन्य लोकल CLIs)
- टेस्ट:
src/gateway/gateway-cli-backend.live.test.ts - लक्ष्य: आपकी डिफ़ॉल्ट कॉन्फ़िग को छुए बिना, लोकल CLI बैकएंड का उपयोग करके Gateway + एजेंट पाइपलाइन को वैलिडेट करना।
- सक्षम करें:
pnpm test:live(या यदि Vitest सीधे चला रहे हों तोOPENCLAW_LIVE_TEST=1)OPENCLAW_LIVE_CLI_BACKEND=1
- डिफ़ॉल्ट्स:
- मॉडल:
claude-cli/claude-sonnet-4-5 - कमांड:
claude - आर्ग्स:
["-p","--output-format","json","--dangerously-skip-permissions"]
- मॉडल:
- ओवरराइड्स (वैकल्पिक):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-opus-4-6"OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.3-codex"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/claude"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["-p","--output-format","json","--permission-mode","bypassPermissions"]'OPENCLAW_LIVE_CLI_BACKEND_CLEAR_ENV='["ANTHROPIC_API_KEY","ANTHROPIC_API_KEY_OLD"]'- वास्तविक इमेज अटैचमेंट भेजने के लिए
OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1(पाथ्स प्रॉम्प्ट में इंजेक्ट किए जाते हैं)। - इमेज फ़ाइल पाथ्स को प्रॉम्प्ट इंजेक्शन के बजाय CLI आर्ग्स के रूप में पास करने के लिए
OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"। IMAGE_ARGसेट होने पर इमेज आर्ग्स कैसे पास हों, इसे नियंत्रित करने के लिएOPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(या"list")।- दूसरे टर्न को भेजने और रिज़्यूम फ़्लो को वैलिडेट करने के लिए
OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1।
- Claude Code CLI MCP कॉन्फ़िग को सक्षम रखने के लिए
OPENCLAW_LIVE_CLI_BACKEND_DISABLE_MCP_CONFIG=0(डिफ़ॉल्ट एक अस्थायी खाली फ़ाइल के साथ MCP कॉन्फ़िग को अक्षम करता है)।
अनुशंसित लाइव रेसिपीज़
सीमित, स्पष्ट allowlists सबसे तेज़ और कम अस्थिर होती हैं:-
एकल मॉडल, डायरेक्ट (gateway नहीं):
OPENCLAW_LIVE_MODELS="openai/gpt-5.2" pnpm test:live src/agents/models.profiles.live.test.ts
-
एकल मॉडल, gateway स्मोक:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
कई प्रदाताओं में टूल कॉलिंग:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,zai/glm-4.7,minimax/minimax-m2.1" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Google फ़ोकस (Gemini API कुंजी + Antigravity):
- Gemini (API कुंजी):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3-flash-preview" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts - Antigravity (OAuth):
OPENCLAW_LIVE_GATEWAY_MODELS="google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-pro-high" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
- Gemini (API कुंजी):
google/...Gemini API (API कुंजी) का उपयोग करता है।google-antigravity/...Antigravity OAuth ब्रिज (Cloud Code Assist-स्टाइल एजेंट एंडपॉइंट) का उपयोग करता है।google-gemini-cli/...आपकी मशीन पर लोकल Gemini CLI का उपयोग करता है (अलग auth + tooling quirks)।- Gemini API बनाम Gemini CLI:
- API: OpenClaw Google के होस्टेड Gemini API को HTTP पर कॉल करता है (API कुंजी / प्रोफ़ाइल auth); अधिकांश उपयोगकर्ता “Gemini” से यही समझते हैं।
- CLI: OpenClaw लोकल
geminiबाइनरी को शेल करता है; इसकी अपनी auth होती है और व्यवहार अलग हो सकता है (स्ट्रीमिंग/टूल सपोर्ट/वर्ज़न स्क्यू)।
लाइव: मॉडल मैट्रिक्स (हम क्या कवर करते हैं)
कोई स्थिर “CI मॉडल सूची” नहीं है (लाइव ऑप्ट-इन है), लेकिन ये अनुशंसित मॉडल हैं जिन्हें कुंजियों के साथ डेवलपर मशीन पर नियमित रूप से कवर करना चाहिए।आधुनिक स्मोक सेट (टूल कॉलिंग + इमेज)
यह “कॉमन मॉडल्स” रन है जिसे हम कार्यरत बनाए रखने की अपेक्षा करते हैं:- OpenAI (नॉन-Codex):
openai/gpt-5.2(वैकल्पिक:openai/gpt-5.1) - OpenAI Codex:
openai-codex/gpt-5.3-codex(वैकल्पिक:openai-codex/gpt-5.3-codex-codex) - Anthropic:
anthropic/claude-opus-4-6(याanthropic/claude-sonnet-4-5) - Google (Gemini API):
google/gemini-3-pro-previewऔरgoogle/gemini-3-flash-preview(पुराने Gemini 2.x मॉडलों से बचें) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingऔरgoogle-antigravity/gemini-3-flash - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/minimax-m2.1
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,openai-codex/gpt-5.3-codex,anthropic/claude-opus-4-6,google/gemini-3-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,zai/glm-4.7,minimax/minimax-m2.1" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
बेसलाइन: टूल कॉलिंग (Read + वैकल्पिक Exec)
प्रदाता परिवार प्रति कम से कम एक चुनें:- OpenAI:
openai/gpt-5.2(याopenai/gpt-5-mini) - Anthropic:
anthropic/claude-opus-4-6(याanthropic/claude-sonnet-4-5) - Google:
google/gemini-3-flash-preview(याgoogle/gemini-3-pro-preview) - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/minimax-m2.1
- xAI:
xai/grok-4(या नवीनतम उपलब्ध) - Mistral:
mistral/… (pick one “tools” capable model you have enabled) - Cerebras:
cerebras/… (if you have access) - LM Studio:
lmstudio/… (local; tool calling API mode पर निर्भर करता है)
विज़न: इमेज भेजना (अटैचमेंट → मल्टीमॉडल संदेश)
Include at least one image-capable model inOPENCLAW_LIVE_GATEWAY_MODELS (Claude/Gemini/OpenAI vision-capable variants, etc.) इमेज प्रोब को अभ्यास करने के लिए।
एग्रीगेटर्स / वैकल्पिक gateways
यदि आपके पास कुंजियाँ सक्षम हैं, तो हम इनके माध्यम से भी टेस्टिंग सपोर्ट करते हैं:- OpenRouter:
openrouter/...(सैकड़ों मॉडल; टूल+इमेज सक्षम उम्मीदवार खोजने के लिएopenclaw models scanका उपयोग करें) - OpenCode Zen:
opencode/...(auth viaOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
- बिल्ट-इन:
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,xai,groq,cerebras,mistral,github-copilot models.providersके माध्यम से (कस्टम एंडपॉइंट्स):minimax(क्लाउड/API), साथ ही कोई भी OpenAI/Anthropic-संगत प्रॉक्सी (LM Studio, vLLM, LiteLLM, आदि)
discoverModels(...) आपकी मशीन पर लौटाता है + जो भी keys उपलब्ध हों।
क्रेडेंशियल्स (कभी कमिट न करें)
Live tests credentials को उसी तरह discover करते हैं जैसे CLI करता है। व्यावहारिक प्रभाव:- यदि CLI काम करता है, तो लाइव टेस्ट्स को वही कुंजियाँ मिलनी चाहिए।
-
यदि कोई लाइव टेस्ट “no creds” कहता है, तो उसी तरह डिबग करें जैसे आप
openclaw models list/ मॉडल चयन को करते। -
प्रोफ़ाइल स्टोर:
~/.openclaw/credentials/(प्राथमिक; टेस्ट्स में “प्रोफ़ाइल कुंजियाँ” का यही अर्थ है) -
कॉन्फ़िग:
~/.openclaw/openclaw.json(याOPENCLAW_CONFIG_PATH)
~/.profile में एक्सपोर्टेड), तो source ~/.profile के बाद लोकल टेस्ट्स चलाएँ, या नीचे दिए गए Docker रनर्स का उपयोग करें (वे कंटेनर में ~/.profile माउंट कर सकते हैं)।
Deepgram लाइव (ऑडियो ट्रांसक्रिप्शन)
- टेस्ट:
src/media-understanding/providers/deepgram/audio.live.test.ts - Enable:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live src/media-understanding/providers/deepgram/audio.live.test.ts
Docker रनर्स (वैकल्पिक “Linux में काम करता है” जाँच)
ये रेपो Docker इमेज के भीतरpnpm test:live चलाते हैं, आपकी लोकल कॉन्फ़िग डायरेक्टरी और वर्कस्पेस को माउंट करते हुए (और यदि माउंट किया गया हो तो ~/.profile को सोर्स करते हुए):
- डायरेक्ट मॉडल्स:
pnpm test:docker:live-models(स्क्रिप्ट:scripts/test-live-models-docker.sh) - Gateway + dev एजेंट:
pnpm test:docker:live-gateway(स्क्रिप्ट:scripts/test-live-gateway-models-docker.sh) - ऑनबोर्डिंग विज़ार्ड (TTY, पूर्ण स्कैफ़ोल्डिंग):
pnpm test:docker:onboard(स्क्रिप्ट:scripts/e2e/onboard-docker.sh) - Gateway नेटवर्किंग (दो कंटेनर, WS auth + हेल्थ):
pnpm test:docker:gateway-network(स्क्रिप्ट:scripts/e2e/gateway-network-docker.sh) - प्लगइन्स (कस्टम एक्सटेंशन लोड + रजिस्ट्री स्मोक):
pnpm test:docker:plugins(स्क्रिप्ट:scripts/e2e/plugins-docker.sh)
OPENCLAW_CONFIG_DIR=...(डिफ़ॉल्ट:~/.openclaw) को/home/node/.openclawपर माउंट किया जाता हैOPENCLAW_WORKSPACE_DIR=...(डिफ़ॉल्ट:~/.openclaw/workspace) को/home/node/.openclaw/workspaceपर माउंट किया जाता हैOPENCLAW_PROFILE_FILE=...(डिफ़ॉल्ट:~/.profile) को/home/node/.profileपर माउंट किया जाता है और टेस्ट्स चलाने से पहले सोर्स किया जाता है- रन को सीमित करने के लिए
OPENCLAW_LIVE_GATEWAY_MODELS=.../OPENCLAW_LIVE_MODELS=... - यह सुनिश्चित करने के लिए
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1कि क्रेड्स प्रोफ़ाइल स्टोर से आएँ (env से नहीं)
डॉक्स सैनीटी
डॉक्स एडिट्स के बाद डॉक्स चेक्स चलाएँ:pnpm docs:list।
ऑफ़लाइन रिग्रेशन (CI-सुरक्षित)
ये “वास्तविक पाइपलाइन” रिग्रेशन हैं, बिना वास्तविक प्रदाताओं के:- Gateway टूल कॉलिंग (mock OpenAI, वास्तविक gateway + एजेंट लूप):
src/gateway/gateway.tool-calling.mock-openai.test.ts - Gateway विज़ार्ड (WS
wizard.start/wizard.next, कॉन्फ़िग लिखता है + auth लागू):src/gateway/gateway.wizard.e2e.test.ts
एजेंट विश्वसनीयता evals (Skills)
हमारे पास पहले से कुछ CI-सुरक्षित टेस्ट्स हैं जो “एजेंट विश्वसनीयता evals” जैसे व्यवहार करते हैं:- वास्तविक gateway + एजेंट लूप के माध्यम से mock टूल-कॉलिंग (
src/gateway/gateway.tool-calling.mock-openai.test.ts)। - एंड-टू-एंड विज़ार्ड फ़्लोज़ जो सत्र वायरिंग और कॉन्फ़िग प्रभावों को वैलिडेट करते हैं (
src/gateway/gateway.wizard.e2e.test.ts)।
- निर्णय-निर्धारण: जब प्रॉम्प्ट में skills सूचीबद्ध हों, तो क्या एजेंट सही skill चुनता है (या अप्रासंगिक से बचता है)?
- अनुपालन: क्या एजेंट उपयोग से पहले
SKILL.mdपढ़ता है और आवश्यक चरणों/आर्ग्स का पालन करता है? - वर्कफ़्लो अनुबंध: मल्टी-टर्न परिदृश्य जो टूल क्रम, सत्र इतिहास कैरीओवर, और sandbox सीमाओं को असर्ट करते हैं।
- mock प्रदाताओं का उपयोग करके टूल कॉल्स + क्रम, skill फ़ाइल रीड्स, और सत्र वायरिंग असर्ट करने वाला एक परिदृश्य रनर।
- skill-केंद्रित परिदृश्यों का एक छोटा सूट (उपयोग बनाम परहेज़, गेटिंग, प्रॉम्प्ट इंजेक्शन)।
- CI-सुरक्षित सूट के स्थापित होने के बाद ही वैकल्पिक लाइव evals (opt-in, env-gated)।
रिग्रेशन जोड़ना (मार्गदर्शन)
जब आप लाइव में खोजे गए किसी प्रदाता/मॉडल मुद्दे को ठीक करते हैं:- यदि संभव हो तो CI-सुरक्षित रिग्रेशन जोड़ें (प्रदाता को mock/stub करें, या सटीक request-shape ट्रांसफ़ॉर्मेशन कैप्चर करें)
- यदि यह स्वभावतः केवल लाइव है (रेट लिमिट्स, auth नीतियाँ), तो लाइव टेस्ट को संकीर्ण रखें और env vars के माध्यम से opt-in करें
- उस सबसे छोटे लेयर को लक्षित करना पसंद करें जो बग पकड़ता है:
- प्रदाता request conversion/replay बग → डायरेक्ट मॉडल्स टेस्ट
- gateway सत्र/इतिहास/टूल पाइपलाइन बग → gateway लाइव स्मोक या CI-सुरक्षित gateway mock टेस्ट