Files
pikasTech-unidesk/TEST.md
T
2026-05-04 17:41:10 +00:00

9.7 KiB
Raw Blame History

UniDesk Manual Test Plan

T1 CLI 可观测性与配置校验

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts helpbun scripts/cli.ts config showbun scripts/cli.ts check,确认每条命令都有 JSON 输出、失败时包含错误对象、config.json 是唯一配置来源,且 TypeScript 检查覆盖 scripts/src/components/

T2 Docker 栈异步启动

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts server start,确认命令立即返回 job id;随后运行 bun scripts/cli.ts job status latest 观察构建和启动进度,直到 job 状态为 succeeded,且输出包含 .state/jobs/ 日志路径和 logs/{YYYYMMDD}/ 服务日志路径。

T3 主 server 自接入 Provider Gateway

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts server statusbun scripts/cli.ts debug health,确认公网只监听 frontend 与 provider ingressbackend-core 和 database 显示为 Docker 内部端口,/api/nodes 中存在 main-server provider,状态为 online/api/nodes/system-status 中存在 CPU/内存/硬盘采样,/api/nodes/docker-status 中存在 main-server 的 Docker 快照,且 provider 标签中能看到 Docker socket 可用性。

T4 前端控制台连通

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:先用 bun scripts/cli.ts server status 获取 frontend URL,再用浏览器访问该 URL,使用默认账号 admin 和默认密码 Liang6516. 登录,确认左侧主模块、顶部当前模块子标签、核心指标、Provider 控件和事件流可见;页面布局应紧凑、信息密度高、字体不过大,且移动端宽度下左侧栏转为高度一致、较窄、单行不换行的横向模块条,内容较少的主内容页和空状态也必须从顶部向下排列,不得上下居中留白。

T5 真实任务下发链路

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts debug dispatch main-server docker.ps,随后运行 bun scripts/cli.ts debug health 或在前端事件流中确认任务状态经历 acceptedrunningsucceeded,并能看到 provider 通过 Docker socket 返回容器列表摘要。

T6 日志第一现场验证

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts server logs --tail-bytes 20000,实际读取输出中列出的 logs/{YYYYMMDD}/ 文件,确认 backend-core、frontend、provider-gateway、database 都有实时日志;日志不得只有启动行,错误日志必须包含可定位的错误消息或 stack。

T7 停止与端口释放

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts server stop,确认立即返回 job id;等待 bun scripts/cli.ts job status latest 成功后运行 bun scripts/cli.ts server status,确认 frontend 与 provider ingress 公网端口不再监听,backend-core 与 database 没有宿主机端口映射,容器状态不再运行。

Issue 记录

测试发现的问题写入 docs/issue/,文件命名为 {NN}_{issue_title}_{YYYYMMDD}.md,其中 NN01 递增;问题文档必须包含复现命令、实际输出摘要、期望行为和修复判定标准。

T8 Playwright 公网前端 E2E

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:确认 config.jsonnetwork.publicHost 是主 server 公网地址,运行 bun scripts/cli.ts e2e run,要求 JSON 中 network:only-frontend-provider-portsnetwork:core-public-blockednetwork:database-public-blockedcore:internal-overviewprovider:self-node-onlineprovider:system-statusprovider:docker-statusprovider:upgrade-planprovider-ingress:public-healthdatabase:named-volume-writefrontend:login-provider-visiblefrontend:public-provider-info-visiblefrontend:no-naked-json-before-clickfrontend:system-monitor-visiblefrontend:upgrade-plan-dispatchfrontend:docker-status-visible 全部 passed;打开输出的 screenshotPath,确认 Playwright 访问的是公网 frontend,页面上能看到 main-serverMain Server Provider 和结构化控件。

T9 Database 命名卷持久化

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:向 unidesk_e2e_markers 插入一个唯一 marker,运行 bun scripts/cli.ts server start 并等待 job status latestsucceeded,再用 docker exec unidesk-database psql -U unidesk -d unidesk 查询该 marker 仍存在;同时审查 docker-compose.ymlscripts/src/docker.ts,确认 CLI server 控制没有使用 down -v 或 volume 删除命令。

T10 前端 JSON 控件化展示

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts e2e run,确认 frontend:no-naked-json-before-click passed;再用浏览器登录 frontend,确认节点标签、事件 payload、任务 payload/result 都渲染为徽标、字段摘要、表格或卡片,页面初始状态没有裸 JSON,只有点击 查看原始JSON 后才出现原始 JSON 弹窗或高级编辑区。

T11 资源节点 Docker 状态

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts e2e run,确认 provider:docker-statusfrontend:docker-status-visible passed;再用浏览器登录 frontend,进入左侧 资源节点 和顶部 Docker 状态 子标签,确认可以像 Docker Desktop 一样看到当前节点的 Containers、Images、Volumes、Networks 指标、容器表格、镜像/卷/网络侧栏和 Docker daemon 摘要,并确认数据库命名卷 unidesk_pgdata_10gb 在 Volumes 区域和数据库命名卷卡片中显式可见。

T12 前端 TypeScript + React 源码约束

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 find src/components/frontend -type f \\( -name '*.js' -o -name '*.jsx' \\) -print,确认没有手写 frontend JS/JSX 源码;运行 bun scripts/cli.ts check,确认 src/components/frontend/src/app.tsx 纳入 TypeScript 检查,且浏览器请求 /app.js 由 frontend Bun server 从 TSX 转译生成。

T13 资源节点任务管理器曲线

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts e2e run,确认 provider:system-statusfrontend:system-monitor-visible passed;再用浏览器登录 frontend,进入左侧 资源节点 和顶部 资源监控 子标签,确认可以像 Windows 任务管理器一样看到 CPU、Memory、Disk 当前用量和历史曲线,Memory 明确显示为不含 Linux page cache / buffer 的实际内存占用,并能执行 Provider Gateway 升级预检升级

T14 Provider Gateway 远程升级预检

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts debug dispatch main-server provider.upgrade,随后查看任务历史或 bun scripts/cli.ts debug health,确认 provider.upgrade 通过真实 WebSocket 下发并以 mode: plan 成功返回升级计划;正式执行升级只能通过前端 资源监控执行升级 或等价的显式调度完成,不能使用 Host SSH 维护桥作为自动升级通道。

T15 待处理任务可追溯

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts e2e run,确认 frontend:pending-task-drilldownfrontend:mobile-nav-fixed-heightfrontend:mobile-content-top-aligned passed;再登录 frontend,点击 态势总览待处理任务 指标,确认会进入 任务调度 / 待处理任务 子标签,并能看到每个 queued、dispatched、running 任务的 Provider、已等待时间、payload 摘要和 查看原始JSON 按钮。backend-core 超过 TASK_PENDING_TIMEOUT_MS 的待处理任务必须自动转为 failed,避免总览数字长期卡住。

T16 任务历史诊断信息

阅读 AGENTS.md(本项目 AGENTS.md 同时承担 SKILL.mdscripts/cli.ts 的解释职责),然后用 cli 手动测试以下内容:运行 bun scripts/cli.ts e2e run,确认 frontend:task-history-diagnostics passed;再登录 frontend,进入 任务调度 / 任务历史,确认每个任务行都能看到状态、任务命令和 id、Provider、任务耗时、载荷摘要、诊断信息、更新时间和 查看原始JSON 按钮。失败任务必须在默认表格中显示失败原因以及 exit code、timeout、previous status 等关键字段,完整 result 只能点击 查看原始JSON 查看。