用途:为 React Native 应用编写 iOS 与 Android 端到端测试,并配置 Detox 的设备、应用与产物设置。
主要能力:Detox 是灰盒 E2E 框架,能感知 JS 线程空闲、动画完成与网络请求结束并自动同步,从而减少依赖 sleep() 造成的脆弱测试。技能覆盖 .detoxrc.js 配置(devices、apps、configurations)、元素匹配(by.id、by.text、by.label、复合匹配)、操作(tap、typeText、scroll、swipe、longPress)、断言(toBeVisible、toExist、toHaveText、not)、waitFor 轮询与 withTimeout、设备 API(launchApp、reloadReactNative、terminateApp、生物识别)、通过 Metro 源扩展 Mock、产物(截图、视频、日志)与 CI 集成,以及 testID 策略。
必要用法:优先用 by.id() 匹配,为每个可交互元素添加 testID 并转发到原生组件;waitFor 必须配 withTimeout(),否则不生效;Mock 使用 Metro 源扩展(.mock.js / .e2e.js),Jest mock 在 E2E 中无效;Android 模拟器需在应用配置中设置 reversePorts: [8081]。
适用场景:React Native 端到端测试、同步问题排查、网络或配置 Mock、CI 自动化运行、调试不稳定测试。
限制:不适用于单元或组件测试、纯 Web React 应用,以及 Flutter、Swift、Kotlin 应用;简单快照或渲染测试应使用组件测试工具。toBeVisible 默认要求 75% 可见;reloadReactNative 不清除持久化存储;循环动画会阻塞同步;by.traits 仅 iOS 可用。具体收费、价格与平台细节暂未提供。