Skip to content

release: 15.1 QA test checklist — framework 15.1.0 + console (objectui 14.1) #3072

Description

@os-zhuang

背景

准备发布 15.1:framework 15.0.0 → 15.1.0(87 commits / 65 changesets,60 minor + 62 patch,无 major)+ 配套 Console objectui 14.0.0 → 14.1.0(94 commits,framework 已钉 b8967495be73,console dist 校验一致)。

本 issue 是发布前的完整测试清单,逐项验证后勾选。配套产物:

  • release docs 增补:content/docs/releases/v15.mdx 新增 "What's new in 15.1.0" 章节(分支 release/15.1-docs,待 PR)
  • 测试计划长文:docs/plans/release-15.1-test-plan.md(同分支)

测试环境:examples/app-showcase + objectstack dev --ui --seed-admin -p 3901 -d file:/tmp/showcase-rel151-3901/data.db,workspace 全量构建 71/71 绿,console dist == .objectui-sha。

图例:🖥 浏览器验证 · 🔌 API/CLI 验证 · 🤖 已有自动化钉死(CI)

A. 安全加固

B. 声明式 Connector(ADR-0096/0097)

C. 附件 v1

D. Dashboard 全局筛选

  • D1 🖥 Revenue Pulse:filter bar 驱动多图表 ✅ 已验:Region 全部→AMER:Invoices 7→4、Accounts Signed 3→2;→EMEA:Subtotal 1920→0(证明绑定生效);opt-out 的 "Accounts (all time)" 恒为 14;dirty 时出现"重置"且重置正确;optionsFrom 服务端 distinct(全部/AMER/EMEA/APAC);filter bar zh 本地化(近90天/重置)
  • D2 🖥 Studio widget inspector 可视化 filterBindings 编辑器(objectui#2586)
  • D3 🖥 spec-form {value,label} options 不再崩 dashboard,select 显示 label(objectui#2597)

E. Console 核心体验(objectui 14.1)

F. Studio(设计期)

G. 平台 / 协议 / 部署(API·CLI)

回归门(发布前必须全绿)

  • pnpm build 全绿(71/71,console dist == .objectui-sha ✅)
  • pnpm test 全绿(含全部 dogfood 套件)
  • objectui e2e/live/showcase-smoke.spec.ts
  • pnpm check:release-notes
  • os validate examples 三道门

已发现的观察项(非阻塞,待分诊)

  1. 发票列表 Owner id 列显示裸 FK id(he9M1IJv…)而非用户名——view 配置或 lookup display 解析,观感问题。
  2. 登录页/顶栏品牌仍为 "ObjectOS"——15.1 已把 'ObjectOS' 从 spec 公开面退役(refactor(spec): retire 'ObjectOS' from the spec's public surface — Kernel naming #2963,ObjectOS 专指商业发行),OSS console 品牌是否要跟随改名需拍板。
  3. E7 级联表单选 China 后 Province 仍显示 "Select country first" 占位——待确认是选项集未刷新还是占位文案未更新(功能本身有 live e2e 钉着)。

Activity

  1. os-zhuang commented on Jul 16, 2026

    @os-zhuang
    ContributorAuthor

    ✅ E7 级联选项 — 已验证 + 修复了一个 bug

    发现 bug:在真实创建/编辑表单里,B3 级联 select(#2284 / #1583)失效——选了 Country 后 Province 永远停在 "Select country first" 不解锁。

    根因:form 渲染器只对 DATA_SOURCE_FIELD_TYPES(lookup 等)注入实时表单记录 dependentValues;注册的 option widget(field:select/radio/multiselect)被排除,stripRegisteredFieldProps 在到达 SelectField 前就把它 strip 了。加上 SchemaRendererContext 从无 formValues 兜底,SelectField 的 dependsOn 门永远看不到父字段。builtin case 'select' 回退路径正常,但 ObjectForm 实际走的注册 field:select 路径坏了——所以此前的 form-cascading-select 测试(用 builtin 路径)没抓到。

    修复:objectui#2620 — 把 dependentValues 也转发给 option 字段(镜像 lookup 修复 #2215/#2216)。

    验证(objectui console dev 连真后端,真实 SelectField widget):

    • Province 未选国家时 gated ✅
    • Country=China → 只列 Zhejiang/Guangdong ✅
    • Country→US → 重过滤成 California/Texas ✅
    • 红/绿回归测试钉死(驱动注册 field:select 路径)✅

    顺带验证 F6 unsaved 守卫(Esc 关表单时弹"放弃更改?")✅

    影响面说明:该 bug 早于 15.1(#2284 引入,约 7 月初),非本次回归,但 15.1 主打 B3 级联,应带上此修复。opt-in live e2e cascading-options.spec.ts 不在默认 CI,所以此前无人发现。


    回归门批量结果

    • ✅ pnpm build 71/71,console dist == .objectui-sha
    • ✅ dogfood 全套 52 文件 / 285 tests 全绿(覆盖 A1–A6/A8/A10、C3/C4、B1 等安全+自动化项)
    • ✅ pnpm check:release-notes OK
    • ✅ os validate showcase 三道门通过(21 objects / 4 views / 23 flows …)
  2. os-zhuang commented on Jul 16, 2026

    @os-zhuang
    ContributorAuthor

    第二轮验证结果(浏览器 + API)

    ✅ Console / Studio 浏览器验证

    ✅ API / CLI 验证(curl + cookie)

    • G3 packages REST ✅ — POST 重复 id→409;PATCH /packages/:id→200(路由存在,非 404)
    • G5 discovery honest capabilities ✅ — realtime 标记 enabled:false, status:unavailable;无 phantom /realtime 路由、无 websockets 虚报(ADR-0076)
    • G10 未知 $ 参数 400 ✅ — ?$bogus=1→400
    • G9 拼音 __search 伴随列 ✅ — 见 E5

    📋 观察项(非阻塞)

    1. Setup 系统概览仪表盘所有指标显示 0(用户总数/活跃会话/登录事件)——但 /sys_user 列表正常显示 admin,故为 system_overview 分析查询问题,非数据问题。待确认是否 scoping/by-design。
    2. 发票 Owner id 列显示裸 FK — 已排除:App 视图"负责人"列正确显示 email(ada.chen@example.com);Studio 原始数据网格显示存储 id 属预期(不同 surface)。
    3. 登录页/顶栏品牌仍为 ObjectOS — 15.1 已把 ObjectOS 从 spec 公开面退役(refactor(spec): retire 'ObjectOS' from the spec's public surface — Kernel naming #2963),OSS console 品牌是否跟随改名需产品拍板。

    覆盖小结

    • A 组安全:A1-A6/A8/A10/A13 + C3/C4 + B1 由 dogfood 285 tests 全绿覆盖;A14 浏览器✅
    • 数据面 marquee:D1/E1/E5/E7(+fix)/C2 浏览器✅
    • Studio:F1/F5/F6/F7/F8/F12 浏览器✅(F2/F3/F4 共用 F1 已验的 CelPredicateField;F9-F11/F13 未逐一点)
    • API:G3/G5/G9/G10✅(G1/G2/G4/G6-G8 需 MCP/CLI 场景)
    • 回归门:build 71/71 · dogfood 285 · check:release-notes · os validate 全绿
    • 发现并修复 1 个真 bug:E7 级联 select(objectui#2620)

    剩余未逐一点的项(B3-B6 connector 降级/stdio、E2/E3/E4/E6/E8/E10/E11/E13、D2/D3、F9-F13、A7/A11)多为同类组件变体或需特定 CLI/多用户场景,核心机制已由上述代表项或 dogfood 覆盖。

  3. os-zhuang commented on Jul 16, 2026

    @os-zhuang
    ContributorAuthor

    第三轮 — 非浏览器项改为「实跑单测」权威覆盖 + 诚实完成度矩阵

    坦白:并非所有 50 项都逐一浏览器点过。以下是精确状态。非浏览器项(安全/MCP/connector/boot)本轮实际跑了相关包单测(不再是推断),全绿:

    包 结果 覆盖清单项
    dogfood(qa) 285 ✅ A1-A6/A8/A10/A13、C3/C4、B1
    plugin-security 481 ✅ A7 public-form、A9(部分)、A11 OWD authoring gate(object-posture-gate.test)、A13
    mcp 72 ✅ G1 aggregate_records、A9 ai.exposed gate、G2 standalone action bridge
    connector-mcp 23 ✅ B1/B3/B4 declarative/degrade/stdio
    core 350 ✅ G6 kernel:bootstrapped/app:seeded
    platform-objects 197 ✅ A11 OWD posture
    objectql 904 ✅ 写路径安全、G2
    runtime 544 ✅ G4 ADR-0087/migrate、G2、G10

    (本轮合计 2856 测试绿;ERROR 日志均为测试故意触发的 fail-closed 断言。)

    本轮新增浏览器验证

    • F9 flow palette 搜索 ✅ — add-node 面板搜索框 + 本地化分组(数据/逻辑/人工),输 email→过滤到 Notify 一项
    • B1 connector API + origin ✅ — GET /api/v1/automation/connectors 返回 showcase_status_api {origin:declarative, state:ready}
    • B2 connector picker:组件(app-showcase: showcase_task.tabular carries a wrong-context userFilters block that ADR-0053 suppresses (P0-30 reclassified) #2563 = 090839106)确在钉住 console;数据端点正常带 origin 标记。flow-designer 内联节点面板的 Connector Id 渲染为文本框(picker 是 FlowReferenceField/metadata-admin 面,kind==='connector' 时渲染)——非缺陷,不同 surface

    诚实完成度矩阵(50 项)

    • ✅ 直接验证(浏览器/API)约 22 项:A14 · B1 · C2 · D1 · E1/E5/E7/E9/E12 · F1/F5/F6/F7/F8/F9/F12 · G3/G5/G9/G10 · (E7 附 fix)
    • ✅ 自动化覆盖(本轮实跑单测/dogfood)约 18 项:A1-A13(写路径全套)· A9/A11 · B3/B4/B6 · C3/C4 · G1/G2/G4/G6
    • ⚠️ 未直接点,属同族组件变体或需特定场景约 10 项:E2 多按钮头 · E3 related-list 权限门(需非管理员)· E4 kanban lane · E6 conditional tabs · E8 GB18030 导入(需 CSV 文件)· E10 locale 切换 · E11 audit i18n · E13 record_more · F2/F3/F4(共用 F1 已验的 CelPredicateField)· F10/F11/F13 · D2/D3 · C1(C2 已验同上传管线)

    结论:安全/后端/MCP/connector 面 = 单测+dogfood 权威全绿;marquee UI = 直接浏览器验证;剩 ~10 项纯 UI 变体未逐一点,机制已由同族或自动化覆盖。若需要我把这 ~10 项也逐一浏览器点完,说一声即可。

  4. os-zhuang commented on Jul 16, 2026

    @os-zhuang
    ContributorAuthor

    第四轮 — 补齐剩余浏览器 UI 项

    最终完成度

    • 直接验证(浏览器/API)~26 项
    • 自动化权威覆盖(本轮实跑 2856 单测/dogfood)~18 项
    • 剩 ~8 项纯 UI 变体未单独点:E3(需非管理员用户)· E8(需 GBK CSV 文件)· E10/E11(locale/audit i18n)· F10(decision 分支目标)· F13(feature-gated action)· D2/D3(dashboard widget inspector)· C1(RecordAttachmentsPanel,C2 已验同上传管线)—— 机制均由同族已验项或单测覆盖,需要的话可继续逐一点。

    发布结论:安全/后端/MCP/connector = 单测+dogfood 全绿;全部 marquee + 绝大多数 UI 项 = 直接浏览器验证;发现并修复 1 真 bug(objectui#2620)。15.1 可发布,前置条件:①.objectui-sha 重钉含 #2620;②两 PR(objectui#2620、framework#3079)CI 绿后合并。

  5. os-zhuang commented on Jul 16, 2026

    @os-zhuang
    ContributorAuthor

    第五轮 — 剩余 8 项全部补齐 ✅

    本轮浏览器直接验证

    本轮单测权威覆盖(实跑,全绿)

    项 测试 结果
    E8 GBK/GB18030 CSV objectui importParsers.test 30 ✅(含 "decodes GBK/GB18030 via fallback")
    E11 audit i18n plugin-audit(audit-writers) 38 ✅
    E3 related-list 权限门 deriveRelatedLists + record-details (48 含 D2)✅
    D2 filterBindings 编辑器 DashboardWidgetInspector + dashboard-filters 48 ✅(#2586 在钉住 console)
    F10 decision 分支目标 flow-decision-edges.test 16 ✅(#2568 在钉住 console)
    F13 feature-gated action feature-gate-guard + public-feature-registry 82 ✅

    ✅ 最终结论:issue 全部 50 项均已覆盖

    • 直接浏览器/API 验证 ~30 项(全部 marquee + 主要 UI + API)
    • 实跑单测/dogfood 权威覆盖 ~20 项(安全写路径、MCP、connector、boot、CSV、i18n、feature-gate、related-list、filterBindings、decision-branch)
    • 本会话实跑测试合计 ~3000+(dogfood 285 + plugin-security 481 + mcp 72 + connector-mcp 23 + core 350 + platform-objects 197 + objectql 904 + runtime 544 + importParsers 30 + plugin-audit 38 + app-shell/plugin-detail 64 + feature-gate 82 + cascade 回归 …)
    • 发现并修复 1 真 bug:B3 级联 select(objectui#2620,CI 绿)

    发布前置:①.objectui-sha 重钉含 #2620 ②两 PR(objectui#2620、framework#3079)CI 绿后合并。15.1 可发布。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions