Skip to content

Latest commit

 

History

History
36 lines (23 loc) · 1.15 KB

detect-maestro-in-your-app.md

File metadata and controls

36 lines (23 loc) · 1.15 KB

Detect Maestro in your app

It's sometimes useful to be able to add logic in your app that depends that whether you are running within the context of Maestro. In order to detect Maestro, check to see whether the Maestro-specific port is open on your device:

PlatformMaestro Port on Device
iOS22087
Android7001

Here's an example of how to check for Maestro in an Android app:

fun isMaestro(): Boolean {
    return try {
        Socket("localhost", 7001).use { true }
    } catch(ignored: IOException) {
        false
    }
}

An alternative is to use arguments and have your app detect a particular parameter to indicate Maestro's usage, e.g. isE2ETest.

NetworkOnMainThreadException

On Android, you may encounter a NetworkOnMainThreadException. This means you'll need to move the call above to a background thread. As an example:

CoroutineScope(Dispatchers.IO).launch {
    if (isMaestro()) {
        // Do Maestro things
        
    }
}