Slate v2 的 WPT 收获测试加工:五大浏览器基座队列驱动的浏览器测试计划方法论 Slate v2 的 WPT 收获测试加工五大浏览器基座队列驱动的浏览器测试计划方法论【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate导读本文基于 Plate 仓库中的 Slate v2 WPT Harvest Test Processing Ralplan 及其配套的行账目文档完整还原一条从 Web Platform TestsWPT聚焦收获、到行级账目核算、再到五条浏览器基座队列落地执行的原始 Slate 浏览器测试计划。读者将掌握为什么 1,139 个 WPT 文件不应被直接移植为 1,139 个测试、如何用行账目把收获文件归类为 portable / harness / skip / defer / uncertain 五类、WPT-1 至 WPT-5 五条执行队列各自的目标不变量与验证命令以及浏览器行为必须用浏览器证明、包级测试不替代浏览器证明的决策边界。一、问题背景收获Harvest不等于可执行测试Slate v2 在重构浏览器基座层时面临一个典型的测试工程问题上游 WPTWeb Platform Tests为 contenteditable 编辑行为提供了海量素材但收获原始素材 ≠ 获得可执行的测试计划。原始收获是面向 WPT 仓库自身组织结构的文件清单而 Slate v2 需要的是每条测试行都有 owner、action、proof kind、目标位置和验证命令的执行级计划。本 Ralplan 的意图边界Intent Boundary写得非常明确意图把 WPT 聚焦编辑器收获转化为可执行的原始 Slate v2 测试计划结果每条被提升promoted的 WPT 矩阵行都具备 Slate owner、action、proof kind、目标位置与验证命令范围内原始 Slate 的浏览器输入、选区、剪贴板、contenteditable 结构性编辑、焦点与 Shadow DOM 行为当前.tmp/slate-v2包与浏览器测试 owner带有 WPT 路径来源的本地不变量措辞范围外Plate 插件/产品行为、上游 WPT 的 helper / fixture / snapshot / 文案、超出聚焦收获的广泛 WPT 仓库挖掘、实时 GitHub issue 认领。这一边界划分是本计划的灵魂原始 Slate 只拥有基座substrate行为Plate 产品行为一律排除在行之外。二、核心判断五条浏览器基座队列而非 1,139 个直接移植本计划最关键的战略结论Current Verdict是把 WPT 加工进 Slate v2 的方式是五条浏览器基座队列five browser-substrate queues而不是把 1,139 个文件直接移植为 1,139 个测试。起点应放在原生输入native input与 DOM Selection/Range因为它们是原始 Slate 浏览器风险中杠杆率最高的两个面且已有强 owner 测试可供去重dedupe。这一判断的底层逻辑是WPT 素材以浏览器行为为单位组织而 Slate v2 的测试以不变量 owner为单位组织。直接按文件数量移植会产生大量与现有 owner 测试重复的用例而按基座行为归类则可以把 1,139 个素材收敛为 5 条可执行、可验证、可去重的队列。同时计划自身声明ready for Ralph execution不产生任何实现编辑no implementation edits、不认领 Slate issue、不产生 Plate/产品积压认领。它是一份纯测试加工计划。三、收获落地Harvest Grounding素材的出处、版本与许可约束计划对素材来源做了完整登记这是证据可追溯的基础字段值收获报告.tmp/editor-test-harvester/wpt/report.md库存清单.tmp/editor-test-harvester/wpt/inventory.md测试索引.tmp/editor-test-harvester/wpt/test-index.md收获报告进入时的状态pendinglane 级映射被推迟到本计划处理WPT 检出目录../wptWPT 修订版本dd54691426许可模式permissive宽松许可证据见../wpt/LICENSE.md输出模式scratch-forced-by-user用户强制 scratch 输出版本化策略仅使用本地重新措辞的不变量不复制上游代码、helper、fixture、snapshot 或文案其中版本化策略值得强调即使上游 WPT 是宽松许可版本化输出也只用带有 WPT 路径来源的本地措辞绝不照抄上游内容。这一许可/来源纪律License/Provenance Discipline贯穿整个计划并在置信度评分中获得最高的 0.96 分。需要注意的是收获报告、库存清单与测试索引均位于.tmp/editor-test-harvester/wpt/这一开发中间工作区当前仓库快照中保留的永久化成果是行账目文档本身仓库中另有docs/editor-test-harvester/目录记录 lexical、portabletext、prosemirror、tiptap、yjs-collaboration 等同类收获工作。四、行账目Row Accounting1,139 个文件的五分类核算计划对聚焦收获的全部 1,139 个文件做了行级核算完整账目见行账目文档。汇总如下源类别数量车道决策提升的矩阵行5全部在车道内编为 WPT-1 至 WPT-5聚焦库存文件1,139按类别/动作分组并非全部是 Slate 测试可移植行518分组进 WPT-1 至 WPT-5可移植-混合行198拆分原始基座部分产品/插件行为排除测试框架行172跳过跳过行182车道外延迟行7显式延迟不确定行62不提升为 Slate v2 行等待未来收获 pass 提升这组数字揭示了1,139 不等于 1,139 个测试的直接证据518 198 716 行进入五条队列的候选池172 行是 WPT 自身的测试框架/基础设施与 Slate 行为无关182 行是明确的 lane 外内容7 行被显式延迟defer62 行因归属不明确而不被提升等待后续收获 pass 再行裁决。五、当前 owner 覆盖先搜索现状再决定补什么计划遵循先搜索现有测试再标记行动行的纪律Ralplan gate对.tmp/slate-v2的现行测试按输入、选区、剪贴板、删除、焦点、Shadow DOM 等关键词做了 owner 搜索。五类基座行为各自映射到的现有 owner 文件如下原生输入Native inputpackages/slate-react/test/model-input-strategy-contract.test.ts、packages/slate-react/test/selection-controller-contract.ts、packages/slate-react/test/editing-kernel-contract.ts、playwright/integration/examples/plaintext.test.ts、playwright/integration/examples/rendering-strategy-runtime.test.ts选区/RangeSelection/Rangepackages/slate-browser/test/browser/selection.browser.test.ts、packages/slate-browser/test/core/selection.test.ts、packages/slate-react/test/selection-controller-contract.ts、packages/slate-react/test/dom-coverage-boundary-contract.tsx、playwright/integration/examples/dom-coverage-boundaries.test.ts、playwright/integration/examples/inlines.test.ts、playwright/integration/examples/shadow-dom.test.ts剪贴板/DataTransferpackages/slate/test/clipboard-contract.ts、packages/slate-dom/test/clipboard-boundary.ts、packages/slate-dom/test/clipboard-boundary.test.ts、packages/slate-react/test/dom-coverage-native-bridge-contract.test.ts、playwright/integration/examples/paste-html.test.ts结构性编辑/删除/插入packages/slate/test/delete-contract.ts、packages/slate/test/transforms-contract.ts、packages/slate/test/transforms/**、packages/slate-react/test/dom-coverage-native-bridge-contract.test.ts、playwright/integration/examples/inlines.test.ts、playwright/integration/examples/rendering-strategy-runtime.test.ts焦点/Shadow DOMpackages/slate-react/src/editable/runtime-focus-mouse-events.ts、packages/slate-react/src/editable/selection-controller.ts、playwright/integration/examples/shadow-dom.test.ts、playwright/integration/examples/iframe.test.ts、playwright/integration/examples/read-only.test.ts。这些路径均位于.tmp/slate-v2开发工作区当前仓库快照未包含该中间目录属于收获加工过程中的内部产物当前仓库中对应的永久源码与测试组织可从 packages/slate、packages/slate-react、packages/slate-dom 等目录进一步查阅。owner 覆盖搜索的意义在于每条队列的默认动作是重构现有测试 只补缺口而不是无脑新增这直接控制了测试膨胀。六、执行队列WPT-1 至 WPT-5 的目标不变量与落地动作这是整个计划的核心可执行部分。五条队列每条都明确了收获行、目标不变量、动作、目标文件与证明方式队列 1WPT-1 beforeinput/input原生输入目标不变量原生输入必须保留事件类型event type、目标范围target range、DataTransfer 所有权、取消cancellation以及 readOnly / model / native 所有权语义动作先重构现有测试仅为缺失的 DataTransfer / cancel / readOnly 行新建测试目标文件packages/slate-react/test/model-input-strategy-contract.test.ts、packages/slate-react/test/selection-controller-contract.ts、playwright/integration/examples/plaintext.test.ts、playwright/integration/examples/rendering-strategy-runtime.test.ts证明方式package Chromium 浏览器。队列 2WPT-2 DOM Selection/Range选区导入导出目标不变量DOM Selection/Range 的导入/导出必须在 hidden、removed、shadow、detached、odd range 状态下fail closed失败即关闭宁可拒绝也不导入脏状态动作重构现有测试为 selection / dom-coverage 测试未覆盖的状态补窄缺口行目标文件packages/slate-browser/test/browser/selection.browser.test.ts、packages/slate-react/test/selection-controller-contract.ts、playwright/integration/examples/dom-coverage-boundaries.test.ts、playwright/integration/examples/shadow-dom.test.ts证明方式browser package。队列 3WPT-3 clipboard/DataTransfer剪贴板所有权目标不变量剪贴板/DataTransfer 事件在取消时归应用所有app-owned、仅在接受时归模型所有model-owned复制/粘贴不得泄漏渲染包装器也不得丢失换行动作重构现有测试仅在取消与 DataTransfer 载荷路径周围补缺口行目标文件packages/slate/test/clipboard-contract.ts、packages/slate-dom/test/clipboard-boundary.ts、packages/slate-react/test/dom-coverage-native-bridge-contract.test.ts、playwright/integration/examples/paste-html.test.ts证明方式package 桌面浏览器。队列 4WPT-4 contenteditable 结构性编辑目标不变量删除delete、插入insert、分割split、noneditable、void、SVG/table/hidden/removed-node 等场景不得崩溃且必须路由到明确的 core 或 browser owner动作重构现有测试去重之后才创建浏览器压力测试行目标文件packages/slate/test/delete-contract.ts、packages/slate/test/transforms-contract.ts、packages/slate/test/transforms/**、playwright/integration/examples/inlines.test.ts、playwright/integration/examples/rendering-strategy-runtime.test.ts证明方式package browser。队列 5WPT-5 focus/Shadow DOM焦点与影子 DOM目标不变量焦点、activeElement、shadow-root 内选区、iframe、blur、detached host 移动不得导入陈旧或外部foreignDOM 选区动作重构现有测试为 detached / shadow host 缺口补 fail-closed 行目标文件packages/slate-react/src/editable/selection-controller.ts、playwright/integration/examples/shadow-dom.test.ts、playwright/integration/examples/iframe.test.ts、playwright/integration/examples/read-only.test.ts证明方式browser。从五条队列的目标不变量可以归纳出两条贯穿性的安全语义fail closed失败即关闭——遇到无法可靠解释的 DOM 状态宁可拒绝导入app-owned vs model-owned——事件所有权必须随接受/取消状态切换这是剪贴板与原生输入行为正确性的分水岭。七、聚焦验证命令先窄后宽的执行纪律计划为执行者 Ralph 给出了明确的命令执行顺序先跑聚焦门focused gates只有当实现触及共享运行时代码时才放宽范围。slate-react 包级聚焦命令在.tmp/slate-v2/packages/slate-react下执行bun test:vitest test/model-input-strategy-contract.test.ts test/selection-controller-contract.test.ts test/editing-kernel-contract.ts test/dom-coverage-native-bridge-contract.test.ts test/dom-coverage-boundary-contract.tsx工作区级组合命令在.tmp/slate-v2下执行bun --filter slate-browser test:selection bun test ./packages/slate/test/clipboard-contract.ts ./packages/slate-dom/test/clipboard-boundary.ts ./packages/slate/test/delete-contract.ts ./packages/slate/test/transforms-contract.ts bunx playwright test playwright/integration/examples/plaintext.test.ts playwright/integration/examples/dom-coverage-boundaries.test.ts playwright/integration/examples/paste-html.test.ts playwright/integration/examples/shadow-dom.test.ts playwright/integration/examples/inlines.test.ts playwright/integration/examples/rendering-strategy-runtime.test.ts --projectchromium其中bunx playwright test ... --projectchromium是浏览器证明的主体手段覆盖 plaintext、dom-coverage-boundaries、paste-html、shadow-dom、inlines、rendering-strategy-runtime 六个 Playwright 示例。命令清单的搭配方式本身就是方法论同一批不变量同时接受包级测试与 Chromium 浏览器测试双重检验。计划还特别给出了一条 IME 红线如果某条 WPT 行成为 IME/组合composition行必须使用真实浏览器组合证明real browser composition proof。不要把 jsdom 的 contenteditable composition 当作权威。这条红线与仓库中既有 IME/移动端浏览器证明工作见 docs/plans 下 2026-04-11 至 2026-04-12 的 IME/mobile browser 系列计划一脉相承jsdom 对组合输入行为的模拟不可作为浏览器行为证据。八、排除行与决策边界什么不该进 Slate v2计划对不进车的行做了显式登记防止范围蔓延家族决策WPT support/resources/reference 文件skip手动manual文件skip剪贴板权限、权限策略、grants车道外浏览器策略通用 Shadow DOM slots/style/layout车道外除非与选区、焦点、caret、输入或编辑宿主行为绑定编辑数据 fixtures延迟待收获解释产生直接不变量后再处理EditContext tentative API延迟Plate 插件/产品行为车道外同时计划明确了决策边界Decision boundary包级测试可以关闭 model/core 行为而浏览器、剪贴板、选区、焦点、Shadow DOM、IME、原生输入等声明必须有浏览器证明。这意味着在验收标准上包级测试通过 ≠ 浏览器行为正确二者不可互相替代。九、Ralplan 门控与通行状态账目Pass-State Ledger作为一份 ralplanralph plan类型的计划文档末尾完整列示了所应用的 Ralplan 门控清单与各 pass 的完成状态应用的 Ralplan 门控Slate Ralplan Gates Applied意图、结果、范围、非目标、决策边界均显式原始 Slate 只拥有基座行为Plate/产品行保持排除行动行被标记前已先搜索当前.tmp/slate-v2测试浏览器声明具备浏览器证明命令包级检查不计入浏览器证明无 issue 认领变更无需为 WPT 来源编辑docs/slate-issues/**上游 WPT 的代码、helper、fixture、snapshot、期望输出与文案均不复制进版本化输出执行交给 Ralph本技能不编辑.tmp/slate-v2。Pass 状态账目节选关键项Pass状态证据参数解析complete依据先前请求的下一步推断出slate-v2 .tmp/editor-test-harvester/wpt/report.md产物验证complete读取了 report、inventory、test-index 与 harvester 完成文件行账目complete附录核算了提升的矩阵行与全部 1,139 个库存文件当前 owner 搜索complete按 input/selection/clipboard/delete/focus/shadow 术语搜索了实时.tmp/slate-v2测试与源码下游 Slate Ralplan 应用complete浏览器证明、owner 拆分、无 issue 认领、无源码编辑Ralph 全量执行completeWPT-1 至 WPT-5 已加工进.tmp/slate-v2聚焦 package、typecheck、lint 与 Chromium 浏览器门全部通过十、Ralph 执行结果五条队列的落地实况计划附带执行后的结果账目逐队列给出最终处置与证据队列结果证据WPT-1 beforeinput/inputimplemented在.tmp/slate-v2/packages/slate-react/test/editing-kernel-contract.ts新增了beforeinputDataTransfer 命令覆盖Slate React 聚焦 owner 套件通过WPT-2 DOM Selection/RangeimplementedtakeEditorSelectionSnapshot现在对外部/部分外部 DOM 选区返回nullfail closedslate-browser选区套件 7 个测试通过WPT-3 clipboard/DataTransferdeduped plus payload row现有 native bridge、Slate clipboard、Slate DOM clipboard 套件已覆盖 readOnly/app-owned/copy/paste/drop 所有权DataTransfer beforeinput 载荷路由在 WPT-1 下补入WPT-4 contenteditable 结构性编辑deduped现有 delete、transforms、inlines、rendering-strategy、void、table、DOM coverage 行已覆盖被提升的结构性编辑队列package 与 Chromium 浏览器门通过WPT-5 focus/Shadow DOMimplemented plus deduped新增 shadow-root 选区快照行现有 shadow DOM 与 iframe 浏览器行覆盖浏览器焦点/根行为执行后的新鲜验证命令fresh verification全部在.tmp/slate-v2工作区执行bun --filter slate-browser test:selectionbun test:vitest test/editing-kernel-contract.test.ts test/model-input-strategy-contract.test.ts test/selection-controller-contract.test.ts test/dom-coverage-native-bridge-contract.test.ts test/dom-coverage-boundary-contract.test.tsxbun test ./packages/slate/test/clipboard-contract.ts ./packages/slate-dom/test/clipboard-boundary.test.ts ./packages/slate/test/delete-contract.ts ./packages/slate/test/transforms-contract.ts bun test ./packages/slate/test/transforms-contract.ts bunx playwright test playwright/integration/examples/plaintext.test.ts playwright/integration/examples/dom-coverage-boundaries.test.ts playwright/integration/examples/paste-html.test.ts playwright/integration/examples/shadow-dom.test.ts playwright/integration/examples/inlines.test.ts playwright/integration/examples/rendering-strategy-runtime.test.ts --projectchromium bun --filter slate-browser typecheck bun --filter slate-react typecheck bun lint:fix注意执行结果中的一个重要模式五条队列中只有 WPT-1、WPT-2、WPT-5 新增了测试行implementedWPT-3 与 WPT-4 以去重deduped为主。这正是先搜索 owner、默认重构、只补缺口纪律的实证——收获素材的多数价值在于确认既有覆盖并暴露少量真实缺口而非无限堆测试。十一、置信度评分0.94 的依据计划以五维置信度评分收尾总分为 0.94维度得分证据收获源就绪度0.95记录了 report、inventory、test-index、修订版本、许可与输出模式车道过滤完备性0.93五条提升矩阵行全部路由完整库存按需分组/排除/延迟当前 owner 覆盖映射0.92实时.tmp/slate-v2测试/源码已搜索并映射到每行执行队列可行动性0.94每条车道内行都有 owner、目标文件、证明种类与聚焦命令许可/来源纪律0.96宽松许可源仍仅使用本地措辞与路径来源这五维评分本质上是计划质量的自我审计维度可以复用为任何素材收获 → 测试计划类任务的验收模板源头可追溯、过滤可解释、owner 可执行、命令可复现、许可可合规。十二、Ralph 交接Handoff计划以交接指令收尾明确执行入口与启动顺序[$ralph](https://link.gitcode.com/i/1bed67b3af2128f9596e84bc42cf9d72) docs/plans/2026-05-11-slate-v2-wpt-harvest-test-processing-ralplan.md并给出三条执行约束从队列 1 与队列 2 开始原生输入与 DOM Selection/Range即风险杠杆最高的两面在添加测试前先与点名的当前 owner 文件去重不要重开 TinyMCE TMS 车道不要仅凭 WPT 行更改 Slate issue 认领——除非后续执行以精确证据复现了某个具名 issue。总结这份 Ralplan 展示了把外部测试语料WPT加工为内部可执行测试计划的标准方法论闭环聚焦收获 → 行账目五分类 → 当前 owner 搜索 → 五条基座队列每条含不变量/动作/目标文件/证明方式→ 聚焦验证命令 → 排除行与决策边界 → 门控与状态账目 → 执行结果回写 → 置信度自评 → 交接指令。对于任何面临外部语料如何低成本转化为高质量测试资产的编辑器团队WPT-1 至 WPT-5 的队列划分逻辑先重构、只补缺口、浏览器声明用浏览器证明、fail closed 与 app-owned/model-owned 语义都是可以直接复用的工程范式。【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考