Files
skill-lib/tools/browser_smoke/fake_deepseek_server.test.mjs

99 lines
3.5 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import {
buildChatCompletionResponse,
buildSmokeEnv,
} from './fake_deepseek_server.mjs'
test('buildChatCompletionResponse returns Baidu tool calls for the first round', () => {
const response = buildChatCompletionResponse({
messages: [
{role: 'system', content: 'You are sgClaw'},
{role: 'user', content: '打开百度搜索天气'},
],
})
const message = response.choices[0].message
assert.equal(message.content, '')
assert.equal(message.tool_calls.length, 3)
assert.equal(message.tool_calls[0].function.name, 'browser_action')
assert.match(message.tool_calls[0].function.arguments, /"action":"navigate"/)
assert.match(message.tool_calls[1].function.arguments, /"action":"type"/)
assert.match(message.tool_calls[2].function.arguments, /"action":"click"/)
})
test('buildChatCompletionResponse returns Zhihu navigate tool call for the first round', () => {
const response = buildChatCompletionResponse({
messages: [
{role: 'system', content: 'You are sgClaw'},
{role: 'user', content: '打开知乎搜索天气'},
],
})
const message = response.choices[0].message
assert.equal(message.content, '')
assert.equal(message.tool_calls.length, 1)
assert.match(
message.tool_calls[0].function.arguments,
/https:\/\/www\.zhihu\.com\/search\?type=content&q=%E5%A4%A9%E6%B0%94/,
)
})
test('buildChatCompletionResponse returns final summaries expected by the existing smoke script', () => {
const baiduResponse = buildChatCompletionResponse({
messages: [
{role: 'system', content: 'You are sgClaw'},
{role: 'user', content: '打开百度搜索天气'},
{role: 'assistant', content: '', tool_calls: [{id: 'call_baidu_1'}]},
{role: 'tool', tool_call_id: 'call_baidu_1', content: '{"ok":true}'},
],
})
assert.equal(baiduResponse.choices[0].message.content, '已在百度搜索天气')
const zhihuResponse = buildChatCompletionResponse({
messages: [
{role: 'system', content: 'You are sgClaw'},
{role: 'user', content: '打开知乎搜索天气'},
{role: 'assistant', content: '', tool_calls: [{id: 'call_zhihu_1'}]},
{role: 'tool', tool_call_id: 'call_zhihu_1', content: '{"ok":true}'},
],
})
assert.equal(zhihuResponse.choices[0].message.content, '已在知乎搜索天气')
})
test('buildChatCompletionResponse rejects unsupported instructions clearly', () => {
assert.throws(
() =>
buildChatCompletionResponse({
messages: [{role: 'user', content: '打开豆瓣搜索天气'}],
}),
/unsupported smoke instruction: 打开豆瓣搜索天气/,
)
})
test('buildChatCompletionResponse accepts ZeroClaw timestamp-prefixed instructions', () => {
const response = buildChatCompletionResponse({
messages: [
{role: 'user', content: '[2026-03-26 16:11:26 +08:00] 打开百度搜索天气'},
],
})
const message = response.choices[0].message
assert.equal(message.tool_calls.length, 3)
assert.match(message.tool_calls[0].function.arguments, /https:\/\/www\.baidu\.com/)
})
test('buildSmokeEnv injects DeepSeek environment variables for the local fake server', () => {
const env = buildSmokeEnv('http://127.0.0.1:32123', {
PATH: '/usr/bin',
HOME: '/tmp/home',
})
assert.equal(env.PATH, '/usr/bin')
assert.equal(env.HOME, '/tmp/home')
assert.equal(env.DEEPSEEK_API_KEY, 'sgclaw-smoke-test-key')
assert.equal(env.DEEPSEEK_BASE_URL, 'http://127.0.0.1:32123')
assert.equal(env.DEEPSEEK_MODEL, 'deepseek-chat')
})