Detox
移动应用的灰盒端到端测试和自动化库。
Detox 测试是什么样子的?
这是一个登录屏幕的测试,它像实际用户一样在设备/模拟器上运行。
describe('Login flow', () => { it('should login successfully', async () => { await device.reloadReactNative(); await element(by.id('email')).typeText('john@example.com'); await element(by.id('password')).typeText('123456'); await element(by.text('Login')).tap(); await expect(element(by.text('Welcome'))).toBeVisible(); await expect(element(by.id('email'))).toNotExist(); }); });
现在就开始使用 Detox now!
关于 Detox
高速的原生移动开发要求我们采用持续集成工作流程,这意味着我们对人工QA的依赖必须大幅下降。Detox 在您的移动应用在真实设备/模拟器中运行时对其进行测试,就像真实用户一样与它进行交互。
移动端自动化测试最困难的部分是测试金字塔的顶端--E2E。E2E测试的核心问题是松散性--测试通常不是确定性的。我们相信,解决松散性的唯一方法是从黑盒测试转向灰盒测试。这就是 Detox 发挥作用的地方。
- 跨平台。用 JavaScript 编写跨平台测试。目前支持 iOS 和 Android。
- 在设备上运行(iOS 还不支持)。通过在设备/模拟器上测试您的应用程序,就像真正的用户一样,获得出货的信心。
- 自动同步。通过监控您的应用程序中的异步操作,从根本上防止漏洞。
- 专为 CI 而生:在 CI 平台上执行 E2E 测试,如 Travis,而不感到痛苦。
- 测试运行器独立。使用 Jest、Mocha、AVA 或任何其他你喜欢的 JavaScript 测试运行器(破坏者:我们有我们的最爱)。
- 可调试。现代 async-await API 允许异步测试中的断点按预期工作。
支持的版本
环境
- OS: macOS 10.14 (Mojave) 或更高版本
- Xcode: 10.2 或更高版本
- iOS Simulator Runtime: iOS 12.2 或更高版本
React Native
Detox 从底层构建,支持 React Native 项目以及纯本地项目。
以下是已经测试过的 React Native 版本。
iOS | Android |
---|---|
<=0.63 | <=0.56 - Full support |
>=0.57 <=0.63 - Visibility edge-case: see this RN issue* |
未来的版本很可能被支持,但还没有经过测试。如果您发现较新的 React Native 版本存在特定问题,请打开问题。
开始使用 Detox
阅读 入门指南,在 10 分钟内让 Detox 在您的应用程序上运行。
文件目录
从 文档目录 中进一步探索如何使用 Detox。
实际应用
打开 React Native 演示项目,按照说明操作。
不使用 React Native 吗,我们也有一个 纯原生的演示项目。
反思核心原则
我们认为,只有重新思考整个方法的一些原则,才能解决移动端到端测试的核心难题。看看 Detox 的 不同做法。
为 Detox 做贡献
从第一次提交开始开源。如果你有兴趣帮助我们完成路线图,请查看标有 寻找贡献者 标签的问题。如果你遇到了一个 bug 或者想提出一个新的功能,请打开一个问题。
请阅读 Detox 贡献指南,深入了解 Detox 核心。
许可证
- Detox 本身和这个 repo 中的所有原始源码都是 MIT 的。
- Detox 依赖于一些重要的依赖性,它们各自的许可证是:
(The first version translated by vz on 2020.08.22)