# Web Blender 全功能一次性烟测计划 ## 目标 对已完成的 34 个产品功能各执行一次最小生产路径烟测。烟测只回答“入口是否可达、主路径是否能完成、失败边界是否保持关闭”,不替代完整 API、性能、安全或跨浏览器验收。 功能内部的命令/子模块使用独立的一次性计划 [`WEB_INTERNAL_SUBMODULE_SMOKE_PLAN.md`](WEB_INTERNAL_SUBMODULE_SMOKE_PLAN.md),两层合计覆盖 34 个产品功能、101 个唯一子模块和 111 条功能绑定。 唯一执行清单是 [`tests/golden/WBV2/feature-smoke-plan.json`](../tests/golden/WBV2/feature-smoke-plan.json)。清单为每个功能分配唯一 `featureId`、唯一 `smokeId` 和 `maxAttempts=1`;运行器拒绝重复功能、重复烟测或隐式重试。 ## 执行分层 1. **前置门禁(只执行一次)** - Blender 路由目录完整性:3745/3745,UNAVAILABLE=0。 - WebEngine 命令注册表、SERVER_NATIVE HTTP 路由和浏览器等价动作组。 2. **Chromium 生产烟测(29 个功能)** - 复用已有的 source-backed production spec。 - 同一 spec 文件内的多个功能合并为一次 Playwright 启动,但每个功能标题只选择一次。 - 浏览器固定 Chromium,`workers=1`,失败后不重试。 3. **命令/服务烟测(5 个功能)** - 运行已存在的 server-job、路由、调度器和覆盖检查入口。 - 仅验证对应功能入口,不启动完整回归矩阵。 4. **失败处理** - 第一轮全部按计划执行一次;失败项记录在 `tests/golden/WBV2/feature-smoke-report.json`。 - 失败项标记为 `FAILED_FOCUSED_FIX_REQUIRED`,不伪造通过,也不在同一轮重复执行。 - 修复必须建立新的聚焦任务和新的烟测批次;已通过功能不重跑。 - 同一 `planId` 已存在尝试记录时,运行器会拒绝再次执行;必须更换批次 ID 或使用独立的聚焦修复入口。 ## 执行命令 生成并检查清单: ```bash node tools/web/generate-wbv2-feature-smoke-plan.mjs node tools/web/run-wbv2-feature-smoke-plan.mjs ``` 执行一次完整烟测批次: ```bash node tools/web/run-wbv2-feature-smoke-plan.mjs --execute ``` 结果文件: - 计划:[feature-smoke-plan.json](../tests/golden/WBV2/feature-smoke-plan.json) - 报告:[feature-smoke-report.json](../tests/golden/WBV2/feature-smoke-report.json) - 定点修复报告:[feature-smoke-fix-report.json](../tests/golden/WBV2/feature-smoke-fix-report.json) ## 本轮执行结果 首次烟测按 34 个功能各执行一次:31 个通过,3 个进入定点处理。其中操作搜索已修复并通过定点验证;序列器原始分组中的用例实际通过;IO 路由暴露的旧 WASM `importScene` 缺口已通过 source-matched 重建和聚焦 Chromium 验证解决。 IO 修复按既定顺序完成:修复 Blender WebEngine 源码/API 编译一致性,重建并 SHA-256 绑定 WASM,最后只重跑 IO 聚焦验证。其余 31 个已通过功能没有重跑。 ## 范围与边界 - 覆盖:16 个工作流模块、34 个产品实现功能、WEB_MAIN、SERVER_NATIVE、BROWSER_EQUIVALENT 三类入口。 - 内部覆盖:101 个唯一子模块各一次,失败只进入独立定点修复,不重跑已通过子模块。 - 不重复:每个产品功能仅有一个烟测 ID、一次尝试预算和一个代表性生产入口。 - 不混入:完整行为矩阵、性能 soak、安全/fuzz、Firefox/WebKit、全量历史 6900 条回归项。 - 历史源码单元的 `1025 verified / 2720 unverified` 仍单独记录;路由分类不被烟测结果冒充为逐单元行为证明。