Repository navigation
Releases: Xumi0920/dsh-browser-harness
Releases · Xumi0920/dsh-browser-harness
Release list
dsh-browser-harness v1.9.4
更新日志
新增
- CLI 补齐工具面:
status、navigate、snapshot(offset/limit/role/name)、act、wait、extract、shot/pdf/diagnose、upload/download、task、tabs new/use/close - CLI 支持结果断言参数,如
act click --expect-text - 新增 T50 覆盖 CLI 真实浏览器工具面
修复
- 截图前激活 target,修复输入后对后台 target 执行
Page.captureScreenshot可能挂起的问题
测试与验收
npm run test:all:179 单测 + 50 集成 = 229/229 通过npm run verify:VERIFY_OKnpm pack --dry-run:55 files- CI 门禁更新为 50 条集成场景
dsh-browser-harness v1.9.3
更新日志
新增
browser_snapshot完整分页:offset/limit对 role/name 过滤后的节点集分页,可越过 400total返回过滤后的完整数量,truncated按分页边界计算- refs 按全量偏移编号(如 offset=400 时首条为 e401),继续返回
snapshotId/snapshotVersion
说明
- refs 仍属于最近一次返回页;跨页使用旧 ref 需重新快照
- drag/复杂表单能力继续保留(v1.9.2)
测试
- 179 单测 + 49 集成场景 = 228 通过;CI 门禁更新为 49 条
- 新增 450 按钮的 offset=400 完整分页测试与 T49 真机场景
- live verify:
VERIFY_OK
dsh-browser-harness v1.9.2
更新日志
新增
browser_act {action:"drag", ref|selector, toRef|toSelector, steps}:真实鼠标拖拽序列- 支持源/目标 ref 或 selector;默认 10 步,最多 100 步
- 复杂表单测试:自定义下拉通过 click + expectation 驱动
说明
- drag 使用 pointer/mouse 序列,面向鼠标/指针拖拽 UI;不实现原生 HTML5 drag-and-drop 数据传输
- 结果断言与只读模式继续保留
测试
- 178 单测 + 48 集成场景 = 226 通过;CI 门禁更新为 48 条
- 新增拖拽/复杂表单单测、T47/T48 真实浏览器场景
- live verify:
VERIFY_OK
dsh-browser-harness v1.9.1
更新日志
新增
- 工具层只读模式:
readOnly: true - 阻止
browser_act、browser_extract js、上传/下载、browser_tabs new/close、browser_task生命周期变更 - 新错误
E_READ_ONLY;读取/导航/快照/截图/PDF/诊断仍可用
说明
- 只读模式是页面写操作边界,不保证 GET 导航没有服务端副作用
browser_act结果断言已在 v1.9.0 提供,本版继续保留
测试
- 176 单测 + 46 集成场景 = 222 通过;CI 门禁更新为 46 条
- 新增只读单测与 T46 真实浏览器场景
- live verify:
VERIFY_OK
dsh-browser-harness v1.9.0
更新日志
新增
browser_act结果断言:expectUrl/expectText/expectSelector- 断言默认等待 5s,可通过
expectTimeoutMs调整(上限 30s) - 新错误
E_EXPECTATION_FAILED:动作完成但页面未达到预期时不再返回假成功 - 成功时返回
expectation摘要(耗时、最终 URL、期望值)
测试
- 175 单测 + 45 集成场景 = 220 通过;CI 门禁更新为 45 条
- 新增单测覆盖成功/失败断言;T45 真实浏览器表单断言场景
- live verify:
VERIFY_OK
dsh-browser-harness v1.8.3
更新日志
修复
- L2 contextId 持久化到 TaskRecord;新 manager 恢复时通过
Target.getBrowserContexts校验 - 恢复/新 manager 的
closeTask可通过持久化 contextId dispose 旧 context startTask会 dispose 遗留 context;closed Task 清空 browserContextId- contextId 失效时清空并新建 context,不静默复用
测试
- 173 单测 + 44 集成场景 = 217 通过;CI 门禁 44 条
- 新增 T44:跨 manager 持久化 contextId 的校验与 dispose
- live verify:
VERIFY_OK
dsh-browser-harness v1.8.2
更新日志
新增
- 可选 L2 隔离:
isolation: "context",每 Task 一个Target.createBrowserContext - context 模式新 tab 创建在独立 context;
closeTask时 dispose context - 新错误:
E_L2_UNSUPPORTED(不支持 createBrowserContext 时 fail-closed)
行为边界(已实测)
- shared 模式:同源页面共享 cookies,保持现有登录态体验
- context 模式:不同 Task 的 cookies 隔离,不共享登录态;每个 Task 一个 context,不是独立 browser 进程
- context 模式不允许借用主 profile tab;扩展/下载/截图/上传目录仍为全局
- contextId 不保证跨浏览器重启恢复;L3 独立 profile 未实现
测试
- 173 单测 + 43 集成场景 = 216 通过;CI 门禁更新为 43 条
- 新增 T43:shared/context cookie 隔离与 context 数量验证
- live verify:
VERIFY_OK
dsh-browser-harness v1.8.1
更新日志
修复
- 放宽文件租约测试的 heartbeat/stale 时序,适配 Windows CI 启动抖动;运行时代码无变化
- 文件租约仍保持 5s 心跳 / 30s stale / token 校验释放语义
测试
- 173 单测 + 42 集成场景 = 215 通过
- 验证覆盖跨 manager 文件租约互斥、stale 回收和 T42 集成场景
dsh-browser-harness v1.8.0
更新日志
新增
- 默认文件租约:
<stateDir>/locks/<sha256(targetId)>.json - 文件
wx原子获取、token 校验释放、5s 心跳、30s stale 回收、同宿主 pid 检查 - 配置
fileLease/fileLeaseDir/fileLeaseHeartbeatMs/fileLeaseStaleMs - 跨 manager 文件租约失败返回
E_LEASE_FAILED(fail-closed,不回退内存锁)
变更
- 插件默认
fileLease: true;文件租约与内存 lease 叠加 - v1.8.0 文件租约设计已写入
docs/task-lifecycle.md - L2
isolation: "context"仍在下一阶段,本次未启用
测试
- 173 单测 + 42 集成场景 = 215 通过;CI 门禁更新为 42 条
- 新增文件租约 stale/互斥单测和 T42 双 manager 集成场景
- live verify:
VERIFY_OK
dsh-browser-harness v1.7.0
更新日志
新增
- 严格标签页所有权:插件默认
strictTabOwnership: true browser_tabs use {borrow:true}显式借用非自建用户 tab- 新错误:
E_TAB_OWNER_CONFLICT/E_TAB_BORROW_REQUIRED - 配置:
allowBorrowUserTabs;借用 tab 归属与其他 Task 冲突检测
变更
- 其他 Task 自建 tab 默认拒绝;借用中的用户 tab 禁止其他 Task 借用,close 不会关闭用户 tab
browser_diagnose返回 task/current lock/owned tabs 摘要browser_task新增start,closed Task 可重新创建任务壳
测试
- 172 单测 + 41 集成场景 = 213 通过;CI 门禁更新为 41 条
- 新增 T39 重启恢复、T40 高级 wait、T41 strict ownership 集成场景
- live verify:
VERIFY_OK