A new Detox config, adding almost infinite flexibility in configuring Detox in your project (separate config file, multiple configs, true config-file/cli configuration merge and override).


Android maturity has been for quite some time now, a very high priority goal for us. Although Detox supports Android E2E testing for over a year now, we can now safely say it is battle tested, in the most extreme conditions we could find (the Wix Android app, which is probably one of the biggest React Native apps in existence, with over 600 screens).

Detox config.

I know we used to say that Detox is test runner agnostic, and that you can use whatever test runner you want, and that is kinda still the case, but our integration with jest Circus is by far the most advanced test runner integration we have. Jest Circus proves to be a very robust test runner, with few key benefits over Jasmine, mainly better and more predictable lifecycle hooks. We are investing our efforts in making the experience with Jest Circus as best as it can be, and recommend that use it as well. By using Detox with Jest Circus, not only will you get more accurate artifact collection timings, but you will be able to make changes in test environment before tests begin. A common problem we’ve been seeing quite a lot when we started running Android E2E after iOS E2E, is that our CI registered two runs of the same test, and could not distinguish between the two platforms. The new integration lets us easily add a prefix to a test name according to OS/configuration name for better readability, visibility and test history collection in CI.

Performance Benchmarking.

Running Detox tests in parallel on multiple simulators/emulators can shortens the overall runtime of a test suite, but we found that this can be improved even further. Timeline Recording ( --record-timeline all) enables recording of tests and events on a timeline, for visual display on the chrome://tracing tool. By laying out this data on a timeline graph, we are able to see how Detox (and your app) are behaving across time, optimize and improve the test runtime as needed.