androiddev2 hours ago

How we cut Maestro E2E test time from 34s to 14s by dropping the JVM

reddit.com

Monday, February 16, 2026

2 min read
Share:

If you're running Maestro for Android E2E testing, you've probably noticed the overhead. There's a JVM process sitting in the background eating ~350 MB doing basically nothing. Every command hops through multiple layers before it actually touches the UI. Simple flows take way longer than they sho...

If you're running Maestro for Android E2E testing, you've probably noticed the overhead.

There's a JVM process sitting in the background eating ~350 MB doing basically nothing. Every command hops through multiple layers before it actually touches the UI. Simple flows take way longer than they should.

The view hierarchy is another headache — especially if you're working with React Native or hybrid apps. You write tapOn: "Login" and nothing happens because the text is inside a nested non-tappable view. So you end up debugging accessibility trees instead of writing tests.

We built an open source runner that fixes both:

  • No JVM — same test, 34s → 14s. We wrote custom element resolution instead of going through Appium's stack.
  • Smarter taps — walks up the view tree to find the nearest tappable ancestor. tapOn: "Login" just works whether you're using text match or testID.
  • Real iOS devices — also got WebDriverAgent stable on actual hardware if you're doing cross-platform. Code signing, session persistence, all of it.

Same Maestro YAML syntax. We just replaced the engine underneath.

Works with BrowserStack, Sauce Labs, LambdaTest — any Appium grid. Our element logic sits on top so you skip the usual Appium speed tax.

Open source: github.com/devicelab-dev/maestro-runner

Happy to answer questions about the performance stuff — the JVM overhead rabbit hole was interesting.

submitted by /u/narayanom
[link] [comments]

Read the full article

Continue reading on reddit.com

Read Original

More from reddit.com