用途:该技能用于 Remotion 仓库中测试的编写、更新与评审。仅在用户明确要求新增测试,或既有测试、fixture、快照需要随功能开发、缺陷修复、重构、PR 准备而更新时启用;评审测试的请求不授权修改测试。
主要能力:先确定测试边界,再写测试。按变更类型选择首选覆盖方式:Studio 交互用 Playwright 动作加可见、源码、持久化、URL 或渲染结果断言;Studio Server 或 codemod 用真实源码 fixture 走路由或处理器;Core、Player、Media 挂载或渲染真实组件与相邻模块;Web 渲染器或视觉效果用浏览器渲染、图像比对、像素探测或产出帧;CLI 执行命令并断言退出码、输出与文件系统效果;渲染器、SSR、模板、打包走 packages/it-tests 或真实临时项目的公共 API;Lambda 或云编排仅 mock 远程提供方;纯数学、解析器、序列化器、协议转换、状态机用聚焦的表格驱动单元测试。
断言契约与结果:优先断言用户或集成方可观察的结果,如渲染帧、像素、媒体时间戳、生成或持久化的源码与文件、公共返回值、事件、错误、协议消息、CLI 退出状态与文件系统变化、Studio 文本与可访问名称、外部边界请求。优先证明路径已运行的正面结果,避免仅以“未抛错”“不可见”“不存在”作为唯一证据。Studio 与产品 UI 测试用 getByRole、getByLabel、getByText 和可访问名称定位控件,优先语义状态匹配器。Remotion 的视觉例外:像素、截图、透明度、颜色、几何、位置、尺寸、时序、CSS 行为、DOM 输出、帧、时间戳、解码媒体、渲染产物以及消费者接收或编辑的生成源码都可作为公共契约。
使用方式:默认使用真实的 Remotion 模块、路由、文件系统操作、服务器、组件与浏览器渲染,仅 mock Remotion 不拥有的边界(如 AWS、不可用远程服务、时间、非确定性外部依赖)。写更少但完整的工作流测试:一次 setup 后按需执行多个动作与断言,保持每个测试可独立运行且隔离,不把同一工作流拆成有序测试或共享可变变量,不重复启动同一浏览器、渲染器或 Studio 进程。单元测试适用于纯算法、解析器、序列化器、codemod、协议转换、状态机、几何与时序数学、公共工具函数。
限制与反模式:测试数量、断言数量、文件数量、覆盖率百分比不是质量指标。避免只测内部实现细节、内部菜单 ID、回调描述符、reducer 或 hook 状态、大对象或整棵标记树快照、mock 最可能出问题的集成模块、为凑覆盖率逐行测试、在多层重复同一行为而无独立风险。缺陷修复应尽量做红绿验证:带修复运行、临时回退相关生产代码确认测试按预期失败、恢复修复确认通过;不可行时说明原因。完成前确认测试覆盖主要公共或用户可见契约、功能接线断开时会失败、移除冗余断言、运行聚焦测试命令,并在报告中说明所测行为、所选边界、mock 的内部依赖及原因、是否扩展既有工作流、红绿验证情况。