Skip to content
Latchkey

Maestro flow "timed out" in CI

A Maestro command waited on a condition (a screen, an animation, an app-idle state) and its timeout elapsed. On CI this usually means a slow emulator or an app screen that never reached the expected state within the allotted time.

What this error means

A flow fails with a timeout, for example "timed out waiting for ..." or a step that exceeds its wait window. Reruns sometimes pass, marking it flaky.

Maestro
Command "assertVisible" timed out after 17000ms
waiting for element: Text matching regex: Home

Common causes

A slow or overloaded CI emulator

The app takes longer to reach the expected screen on a resource-starved runner than the default timeout allows.

The app never reaches the expected state

A stalled network call or a screen that fails to load means the awaited condition never becomes true.

How to fix it

Raise the timeout for the waiting command

  1. Add an explicit timeout to the extendedWaitUntil/assertVisible that fails.
  2. Size it for the slower CI device.
  3. If the app genuinely stalls, fix or stub the blocking call.
flow.yaml
- extendedWaitUntil:
    visible: "Home"
    timeout: 30000

Stub slow network so the state is reachable

Point the app at a fast local mock in E2E so a real slow endpoint does not push the flow past its timeout.

How to prevent it

  • Set command timeouts sized for CI hardware.
  • Stub slow external calls in E2E flows.
  • Keep flows resilient to a slower emulator than local.

Frequently asked questions

What causes ""timed out""?
The app takes longer to reach the expected screen on a resource-starved runner than the default timeout allows.
How do I fix "timed out"?
Raise the timeout for the waiting command

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card