概述
为 iOS 提供强大的端到端 UI 测试框架。
目前它在 Avito 上使用,我们有 900 多个 UI 测试,95% 都是绿色的,5% 在 PR 上运行,我们正在努力使 100% 的测试在 pull request 上运行。我们在 3 个平台上运行这些测试,用时 1 小时(测试总时间为 40 多小时),因为我们使用了 Emcee,一个在多台机器上运行测试的测试运行器。
如果您对在公司中使用它感兴趣,与我们提交一个 issues。我们正在使其成为社区可用,然而,目前这并不是我们的主要关注点。我们的主要关注点是构建一个 100% 稳定的测试套件。
功能
- 操作和检查(显然)
- 像素级可见性检查
- 每个检查都有轮询
- 全程自动滚动
- UICollectionView 中的每个单元格在测试中都是可见的(包括屏幕外的单元格)
- 可定制的应用程序和测试之间的进程间通信
- 测试中可见的视图的可定制值
- 页面对象
- 网络模拟(通过 NSURLSessionProtocol)
- 设置权限(相机/地理位置/通知等)
- 模拟推送通知(限制:只限于活动应用内!)
- 从测试中打开 URL
- 地理位置模拟
- 硬件键盘(定义的关键代码很少,但可以轻松实现)
- 无需生成仓库即可自定义
- 一切都可禁用
- Swift & Objective-C
- 已测试(尽管不全面)
即将推出(尚未开源)
- 页面对象的代码生成
- 从应用程序获取所有断言失败信息
- 用于操作春季板的界面
- 报告(包括 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 上工作良好)
- 在物理设备上设置权限不起作用(可能还有其他内容,我们没有在物理设备上进行测试;基本功能工作)
- 未测试设备旋转,我认为我们在其中有一些错误
- 未测试 iPad