Graybox End-to-End Tests and Automation Library for Mobile
High velocity native mobile development requires us to adopt continuous integration workflows, which means our reliance on manual QA has to drop significantly. The most difficult part of automated testing on mobile is the tip of the testing pyramid - E2E. The core problem with E2E tests is flakiness - tests are usually not deterministic. We believe the only way to tackle flakiness head on is by moving from blackbox testing to graybox testing and that's where detox comes into play.
- 📱 Cross Platform in Mind: Detox is designed to be cross-platform, it currently supports iOS, Android will follow soon.
- 🔃 Synchronized Tests: It is inherently synchronized with the app under test (never add
sleep()
in your test code again!!). - React Native Support: With a special synchronization mechanism, detox supports React Native apps out of the box.
- ❗️Test Runner Independent: Can run with mocha, AVA, or any other JavaScript test runner.
- 🔴 Debuggable: API uses async-await, and all operations are promises, this means that breakpoints will work as expected.
Please note that this library is still pre version 1.0.0 and under active development. The NPM version is higher because the name "detox" was transferred to us from a previous inactive package. Package can still break without respecting semver, though we try not to.
Read our Getting Started Guide to get detox running in less than 10 minutes.
Learn more about using detox from our docs
Open the React Native demo project and follow the instructions.
Not using React Native? you now have a pure native demo project too.
There are still many challenges to conquer in detox. If you're interested in helping out with our roadmap, or suggest new features contact us and we'd love to get you on board.
The best way to dive in into detox's core is our contributing guide here.
- detox by itself and all original source code in this repo is MIT
- detox relies on some important dependencies, their respective licenses are: