概览
强大的 iOS 端到端 UI 测试框架。
目前它在 Avito 中使用,我们已经有 900 多个 UI 测试,其中的 95% 是绿色的,其中 5% 在 PR 上运行,我们正在努力使 100% 的测试在拉请求上运行。我们在 3 个平台上运行这些测试,耗时 1 小时(测试总时长为 40 多小时),因为我们使用的是 Emcee,一个可以在多台机器上运行测试的测试运行程序。
如果您想在公司中使用它,请给我们提交一个问题。我们正在努力使其被社区使用,然而,这并不是我们现在的重点。我们现在的重点是打造一个 100% 稳定的套件。
特性
- 操作和检查(当然)
- 每像素可见性检查
- 每个检查都有轮询
- 完全自动滚动
- UICollectionView 中的每个单元格在测试中都是可见的(包括屏幕外的单元格)
- 可自定义的进程间通信(APP 和测试之间)
- 测试中可见的视图的自定义值
- 页面对象
- 网络模拟(通过 NSURLSessionProtocol)
- 设置权限(相机/地理位置/通知等)
- 推送通知模拟(限制:仅在活动应用内!)
- 从测试中打开 URL
- 地理位置模拟
- 硬件键盘(定义的键码很少,但可以轻松实现)
- 无需分支仓库即可自定义
- 一切都可以禁用
- Swift & Objective-C
- 已测试(尽管测试不彻底)
即将推出(尚未开源)
- 页面对象的代码生成
- 获取所有应用程序中的断言失败
- Springboard 的工作界面
- 报告(包括 Allure,一个带有网络界面的开源报告系统)
- 在发布和测试构建之间切换辅助功能值
支持的 iOS/Xcode/Swift 版本
- Xcode 9, Xcode 10
- Swift 4.1, Swift 4.2
- iOS 9.3.2, iOS 10.3, iOS 11.3, iOS 11.4, iOS 12.0,中级版本可能工作或不工作,所提及的版本已在 CI 上测试
已知问题
- 在 iOS 11.2 上崩溃(在 iOS 11.3、iOS 11.4 上运行正常)
- 在物理设备上设置权限不工作(可能还有其他,我们未在物理设备上进行测试;基本功能正常工作)
- 未测试设备旋转,我认为我们可能存在与其相关的 bug
- 未测试 iPad