用途
该技能用于审查 FlashList 的 PR 或分支,并完成单元测试、iOS 模拟器测试以及 RTL/LTR 行为验证。它与 fix-github-issue 技能共享上下文,是测试知识、边界用例和调试技巧的单一事实来源。
主要能力
- 理解变更:通过 gh 命令查看 PR 详情、diff 和评论,或通过 git 命令查看本地分支的提交与差异,识别变更文件、函数、修复的 bug 或新增功能,以及布局、测量、RTL、滚动、回收等风险区域。
- 运行自动化检查:执行 yarn test、yarn type-check、yarn lint,三者必须全部通过。若 fixture 文件变更,还需在 fixture/react-native 下运行 yarn build 进行类型检查。若涉及 E2E 相关文件,运行 yarn e2e:ios(基于 Detox)。
- 构建:运行 yarn build(tsc -b),因为 fixture 应用使用 dist/ 的编译输出,src/ 的源码变更在构建前无效。
- 设备测试:在 iOS 模拟器上使用 agent-device 导航并截图,测试 LTR 行为;若可用,也在 Android 模拟器上测试。
- RTL 测试:通过修改 fixture/react-native/index.js 中的 I18nManager.forceRTL(true) 并完全重启应用来启用 RTL,验证文本对齐、导航方向、水平列表顺序、网格镜像、粘性头部、聊天对齐、瀑布流布局等。
- 验证 firstItemOffset 值:针对布局/测量变更,通过本地 HTTP 服务器捕获运行时值,并与预期值对比。
- 编写审查总结:包括自动化检查结果、LTR/RTL 行为、firstItemOffset 验证、回归风险和建议。
使用方式
前置条件:确保 which agent-device && which gh && yarn test --version 可用,并确保 Metro 从 fixture/react-native/ 运行(curl -s http://localhost:8081/status)。
步骤包括:理解变更、运行自动化检查、构建、在设备上测试 LTR、测试 Android(如可用)、测试 RTL、验证 firstItemOffset 值、编写审查总结。具体命令和操作见技能文档。
适用场景
适用于 FlashList 项目的 PR 审查和分支测试,特别是涉及布局、测量、RTL、滚动、回收等风险区域的变更。也适用于修复 GitHub issue 后的验证。
限制
- 需要配置好 agent-device、gh 和 yarn 环境。
- E2E 测试会构建 release 应用并替换模拟器上的 debug 应用,之后需重新构建 debug 以继续交互测试。
- RTL 启用必须通过修改 index.js 并完全重启应用,DevSettings.reload() 和 Debug 屏幕切换不可靠。
- console.log 在 Fabric/Hermes 上不输出到 Metro,需使用本地 HTTP 服务器捕获运行时值。
- 切换分支后必须重新运行 yarn build,因为 dist/ 不会自动重建。
- 该 FlashList 没有 estimatedItemSize 属性。
- 部分预期值基于 RN 0.84 Fabric 验证,其他 RN 版本可能不同。