Breakpoint 2021 is a 2-day virtual summit on software quality. We're bringing speakers—dev, QA and open source experts—to talk about how the best engineering teams ship quality software at scale.
Rotem Mizrachi-Meidan is a Software Engineer, open source advocate, passionate about Android, React Native, mobile performance, writing developer tools, and Lego! In his current position at Wix, Rotem leads the Mobile Infrastructure team along with working on other testing tools.
Can you tell us about your role at Wix?
I currently work as the Mobile Infrastructure Team Leader at Wix. Prior to this, I used to lead the Detox team.
Can you give us a sneak-peek into your session for Breakpoint 2021?
Detox is a gray-box testing solution for mobile apps. It manages sync between the test code and the app so the user doesn’t have to do it manually. Despite eliminating the user’s need to do so, and the abundant documentation and guides, developers and testers can still get tripped up on usage patterns, misconfiguration, and suffer from poor test stability. We know, we feel that pain every day.
In my session, I’ll be explaining how Wix is using Detox internally, how we manage configuration, how we fight flakiness, and some best practices we’ve developed over ~3 years of building and using Detox in our CI process. We’ll also discuss our endless strive towards “0 manual QA”, which always seems in reach—if only we overcome that one last technical hurdle.
What has been your best lesson so far from the entire process of developing and using Detox in production?
There have been many challenges and there will continue to be, but probably the most important one, for users of Detox, and for every other testing framework, is to write isolated tests in an environment that is as controllable as possible. If you'll have consistent inputs to your app, you'll most probably get consistent outputs from it, and this is key for testing stability.
Can you tell us about your experience in scaling development and integration processes of mobile apps?
During my 5 years in the mobile infrastructure team at Wix, we managed to build a very comprehensive development process where the most important factor was letting each team work as independently as possible. Essentially, each team builds its own product, while leveraging each other’s work.
What as per you is the last mile strategy for getting to “0 manual QA”?
Our production E2E tests are pretty stable right now, thanks to us learning how to write stable tests, Detox's sync mechanism, and a lot of tweaking in CI. The last hurdle, in my opinion, is making all that run faster, either on faster machines, or on real devices, and that's where we're headed.
Detox Android currently supports Genymotion SaaS out of the box. This solution can scale our testing needs infinitely, and run as many workers as we want in order to reduce the time spent testing in CI. Detox iOS (v18) has a new sync mechanism with a much lower CPU footprint, allowing us to run 2x the number of workers on the same hardware, improving test time by ~30%. We are still researching a way to run Detox on real devices to enable the same scalability enhancements as we now see with Genymotion. By having all this, we'll be able to have both stable and faster execution of tests, allowing our process to be streamlined, and have a much shorter feedback loop from CI.
What are you reading/learning right now? What made you interested in this?
I have recently switched roles at Wix and am now focused on learning how Wix builds backend services. I am learning about the very impressive stack—Scala—how Wix leverages it as its language of choice, and Bazel as its build system. This is a much bigger engineering effort (in terms of the number of engineers involved) and I hope I can help in improving either testing, CI or developer experience, as these are my main points of interest.