feat: 配置变量系统与 target id/name 双字段标识
- 新增顶层 variables 段支持 string/number/boolean 字面量
- target 字符串字段支持 、、{...} 转义语法
- 变量解析优先级: variables -> process.env -> 默认值 -> 报错
- 完整引用保留原始类型,部分引用拼接为字符串
- 变量替换在 YAML 解析后、AJV 校验前执行
- 替换仅作用于 targets,跳过 id/type 字段
- target 新增必填 id 字段作为唯一标识,name 改为可选展示名称
- 数据库存储/API/前端全面迁移到 id 标识
- 统一 checker 运行时类型检查为 es-toolkit predicates
- 同步 delta specs 到主 specs,归档 config-variables 变更
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
# yaml-language-server: $schema=./probe-config.schema.json
|
||||
|
||||
server:
|
||||
host: "127.0.0.1"
|
||||
port: 3000
|
||||
@@ -14,10 +16,17 @@ defaults:
|
||||
cmd:
|
||||
maxOutputBytes: "1MB"
|
||||
|
||||
variables:
|
||||
env_name: "演示"
|
||||
httpbin_base: "https://httpbin.org"
|
||||
api_token: "Bearer demo-token"
|
||||
sqlite_url: "sqlite://:memory:"
|
||||
|
||||
targets:
|
||||
# ========== HTTP targets ==========
|
||||
|
||||
- name: "Baidu 首页可用"
|
||||
- id: "baidu-home"
|
||||
name: "Baidu 首页可用"
|
||||
type: http
|
||||
group: "搜索引擎"
|
||||
http:
|
||||
@@ -26,15 +35,17 @@ targets:
|
||||
status: [200]
|
||||
maxDurationMs: 5000
|
||||
|
||||
- name: "JSON API — 完整流水线"
|
||||
- id: "httpbin-json"
|
||||
name: "${env_name} JSON API — 完整流水线"
|
||||
type: http
|
||||
group: "后端服务"
|
||||
interval: "1m"
|
||||
timeout: "15s"
|
||||
http:
|
||||
url: "https://httpbin.org/json"
|
||||
url: "${httpbin_base}/json"
|
||||
headers:
|
||||
Accept: "application/json"
|
||||
Authorization: "${api_token|Bearer fallback-token}"
|
||||
expect:
|
||||
headers:
|
||||
Content-Type:
|
||||
@@ -49,10 +60,11 @@ targets:
|
||||
contains: "Wake"
|
||||
- regex: '"title"'
|
||||
|
||||
- name: "POST 接口测试"
|
||||
- id: "httpbin-post"
|
||||
name: "POST 接口测试"
|
||||
type: http
|
||||
http:
|
||||
url: "https://httpbin.org/post"
|
||||
url: "${httpbin_base}/post"
|
||||
method: POST
|
||||
headers:
|
||||
Content-Type: "application/json"
|
||||
@@ -69,7 +81,8 @@ targets:
|
||||
|
||||
# ========== Cmd targets ==========
|
||||
|
||||
- name: "Bun 版本输出匹配"
|
||||
- id: "bun-version"
|
||||
name: "Bun 版本输出匹配"
|
||||
type: cmd
|
||||
group: "系统检查"
|
||||
cmd:
|
||||
@@ -80,7 +93,8 @@ targets:
|
||||
stdout:
|
||||
- match: "^\\d+\\.\\d+\\.\\d+"
|
||||
|
||||
- name: "多规则 stdout 顺序校验"
|
||||
- id: "bun-stdout-rules"
|
||||
name: "多规则 stdout 顺序校验"
|
||||
type: cmd
|
||||
interval: "5m"
|
||||
cmd:
|
||||
@@ -92,7 +106,8 @@ targets:
|
||||
- match: "\\d+\\.\\d+\\.\\d+"
|
||||
- contains: "healthy"
|
||||
|
||||
- name: "stderr 内容检查"
|
||||
- id: "bun-stderr"
|
||||
name: "stderr 内容检查"
|
||||
type: cmd
|
||||
cmd:
|
||||
exec: "bun"
|
||||
@@ -104,18 +119,20 @@ targets:
|
||||
|
||||
# ========== DB targets ==========
|
||||
|
||||
- name: "SQLite 内存数据库连接测试"
|
||||
- id: "sqlite-connect"
|
||||
name: "SQLite 内存数据库连接测试"
|
||||
type: db
|
||||
group: "数据库"
|
||||
db:
|
||||
url: "sqlite://:memory:"
|
||||
url: "${sqlite_url}"
|
||||
expect:
|
||||
maxDurationMs: 1000
|
||||
|
||||
- name: "SQLite 内存数据库多列结果校验"
|
||||
- id: "sqlite-query"
|
||||
name: "SQLite 内存数据库多列结果校验"
|
||||
type: db
|
||||
db:
|
||||
url: "sqlite://:memory:"
|
||||
url: "${sqlite_url}"
|
||||
query: "SELECT 1 as id, 'Alice' as name, 'engineer' as role"
|
||||
expect:
|
||||
rowCount:
|
||||
|
||||
Reference in New Issue
Block a user