mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-06-09 01:30:40 +08:00
feat(hermes): add browser tool settings
This commit is contained in:
80
tests/hermes-browser-config.test.js
Normal file
80
tests/hermes-browser-config.test.js
Normal file
@@ -0,0 +1,80 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
|
||||
import {
|
||||
buildHermesBrowserConfigValues,
|
||||
mergeHermesBrowserConfig,
|
||||
} from '../scripts/dev-api.js'
|
||||
|
||||
test('Hermes 浏览器配置读取会提供上游默认值', () => {
|
||||
const values = buildHermesBrowserConfigValues({})
|
||||
|
||||
assert.deepEqual(values, {
|
||||
browserInactivityTimeout: 120,
|
||||
browserCommandTimeout: 30,
|
||||
browserRecordSessions: false,
|
||||
browserEngine: 'auto',
|
||||
})
|
||||
})
|
||||
|
||||
test('Hermes 浏览器配置读取会回显 YAML 字段', () => {
|
||||
const values = buildHermesBrowserConfigValues({
|
||||
browser: {
|
||||
inactivity_timeout: 300,
|
||||
command_timeout: 45,
|
||||
record_sessions: true,
|
||||
engine: 'lightpanda',
|
||||
},
|
||||
})
|
||||
|
||||
assert.equal(values.browserInactivityTimeout, 300)
|
||||
assert.equal(values.browserCommandTimeout, 45)
|
||||
assert.equal(values.browserRecordSessions, true)
|
||||
assert.equal(values.browserEngine, 'lightpanda')
|
||||
})
|
||||
|
||||
test('Hermes 浏览器配置保存会保留未知字段并写入上游结构', () => {
|
||||
const next = mergeHermesBrowserConfig({
|
||||
model: { provider: 'anthropic' },
|
||||
browser: {
|
||||
inactivity_timeout: 120,
|
||||
command_timeout: 30,
|
||||
record_sessions: false,
|
||||
engine: 'auto',
|
||||
cdp_url: 'ws://127.0.0.1:9222/devtools/browser/demo',
|
||||
camofox: { managed_persistence: true },
|
||||
custom_flag: 'keep-browser',
|
||||
},
|
||||
streaming: { enabled: true },
|
||||
}, {
|
||||
browserInactivityTimeout: '180',
|
||||
browserCommandTimeout: '60',
|
||||
browserRecordSessions: true,
|
||||
browserEngine: 'chrome',
|
||||
})
|
||||
|
||||
assert.deepEqual(next.model, { provider: 'anthropic' })
|
||||
assert.deepEqual(next.streaming, { enabled: true })
|
||||
assert.equal(next.browser.inactivity_timeout, 180)
|
||||
assert.equal(next.browser.command_timeout, 60)
|
||||
assert.equal(next.browser.record_sessions, true)
|
||||
assert.equal(next.browser.engine, 'chrome')
|
||||
assert.equal(next.browser.cdp_url, 'ws://127.0.0.1:9222/devtools/browser/demo')
|
||||
assert.deepEqual(next.browser.camofox, { managed_persistence: true })
|
||||
assert.equal(next.browser.custom_flag, 'keep-browser')
|
||||
})
|
||||
|
||||
test('Hermes 浏览器配置保存会拒绝非法引擎和越界值', () => {
|
||||
assert.throws(
|
||||
() => mergeHermesBrowserConfig({}, { browserEngine: 'firefox' }),
|
||||
/browser\.engine/,
|
||||
)
|
||||
assert.throws(
|
||||
() => mergeHermesBrowserConfig({}, { browserInactivityTimeout: '0' }),
|
||||
/browser\.inactivity_timeout/,
|
||||
)
|
||||
assert.throws(
|
||||
() => mergeHermesBrowserConfig({}, { browserCommandTimeout: '4' }),
|
||||
/browser\.command_timeout/,
|
||||
)
|
||||
})
|
||||
@@ -159,6 +159,18 @@ test('Hermes 配置页会暴露隐私脱敏结构化配置字段', () => {
|
||||
}
|
||||
})
|
||||
|
||||
test('Hermes 配置页会暴露浏览器基础结构化配置字段', () => {
|
||||
for (const id of [
|
||||
'hm-browser-save',
|
||||
'hm-browser-inactivity-timeout',
|
||||
'hm-browser-command-timeout',
|
||||
'hm-browser-record-sessions',
|
||||
'hm-browser-engine',
|
||||
]) {
|
||||
assert.match(source, new RegExp(`id="${id}"`), `缺少 ${id}`)
|
||||
}
|
||||
})
|
||||
|
||||
test('Hermes 配置页会暴露终端执行结构化配置字段', () => {
|
||||
for (const id of [
|
||||
'hm-terminal-save',
|
||||
@@ -194,6 +206,7 @@ test('Hermes 配置页新增结构化配置不会暴露翻译 key', () => {
|
||||
key.includes('StreamingConfig') ||
|
||||
key.includes('ExecutionLimits') ||
|
||||
key.includes('PrivacyConfig') ||
|
||||
key.includes('BrowserConfig') ||
|
||||
key.includes('TerminalConfig')
|
||||
)))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user