Post

I've been recently experimenting with a new way to run e2e flows in React Native. Same maestro e2e test, same yaml, but 2-3x faster. learn about Ennio 🧵

1. disclaimer: this is an experimental project and works only on iOS with metro enabled for now. The plan is to make iOS work perfectly and then extend with Android support as well.

2. I'm building Ennio with 1:1 parity with maestro yaml - tapOn, assertVisible, scroll, runFlow, retry, env interpolation. drop your existing flows in, they should just work (hopefully).

3. why faster? Ennio interprets the maestro yaml only for react native apps, which allows it to make additional assumptions. It assumes RN + newArch and communicates via Hermes inspector.

4. the main idea is simple. Instead of using XCUITest, we can rely on the Fabric shadow tree to detect the items, then cross check with the a11y tree and the viewport.

5. once we find the item, we can synchronously measure its coordinates and pass them to IDB, which will simulate a real finger tap at those x,y coordinates. That’s really it.

0 reposts0 likes

7. the core has been built as a nitro module (from @margelo_com), and I’ve been iterating almost in yolo mode thanks to Argent from @swmansion. Also, these announcement videos were made with @Remotion. Three insane projects you should check out if you haven't!