Flutter UI Tests mit Maestro - Windows Probleme beheben
UI Tests sind ein spannendes Thema, welches mich derzeit in verschiedenen Kontexten interessiert. Im privaten Umfeld möchte ich vor allem meine Tessa App automatisiert testen und zugleich die Erstellung von Store Assets automatisieren. Dafür habe ich mir zuletzt Maestro angeschaut, welches im Windows Bereich etwas mehr Setup benötigt, als z.B. unter Linux oder Mac.
Sofern ihr ebenfalls unter Windows mit Maestro arbeiten wollt, aber auf Probleme stoßt nachdem ihr das offizielle Installations-Tutorial durchgeführt habt, kann ich euch vielleicht mit ein paar Tipps helfen.
Nach der initialen Durchführung des Setups gab es bei mir leider Probleme beim eigentlichen Ausführen der Test-Flows in der WSL, weswegen ich ein paar GitHub Issues unter die Lupe nahm und mit folgenden zusätzlichen Schritten die Probleme lösen konnte.
Die Reihenfolge der folgenden Anleitung war in meinem Fall relevant.
Windows
- In der Powershell den adb Server starten, bevor Android Studio oder der Emulator gestartet wird, ansonsten war bei mir der Standard Port bereits belegt (“smartsockets” Fehler)
adb kill-server ; adb -a -P 5037 nodaemon server
- Android Studio starten
- Emulator starten
WSL
- WSL starten
- Maestro Version 1.38.1 nutzen, andere Versionen funktionierten bei mir nicht fehlerfrei (“Device not connected” Fehler). Siehe GitHub Issue open_in_new
export MAESTRO_VERSION=1.38.1; curl -Ls "https://get.maestro.mobile.dev" | bash
- Den adb Socket konfigurieren, damit eine Verbindung zum Windows adb Server hergestellt werden kann
- Die IP kann bei Bedarf in der Powershell via
ipconfig
ausgelesen werden. Der Wert “IPv4-Adresse” beim korrekten Adapter ist relevant
- Die IP kann bei Bedarf in der Powershell via
export ADB_SERVER_SOCKET=tcp:EURE_LOKALE_NETZWERK_IP:5037
- Den Maestro Flow ausführen
- Ich setze via
--device
das konkrete Gerät, da es bei mir sonst Instabilitäten gab. Viaadb devices
könnt ihr verfügbare Geräte abfragen
- Ich setze via
maestro --host EURE_LOKALE_NETZWERK_IP --device emulator-5554 test flow.yaml
Um diesen Ablauf zu vereinfachen habe ich mir ein kleines Bash Script geschrieben, was in der WSL ausgeführt wird. Die IP ist bei mir nicht variable, da mein Netzwerk so konfiguriert ist das mein PC immer die gleiche IP erhält.
#!/bin/bash
IP=EURE_LOKALE_NETZWERK_IP
PORT=5037
EMULATOR=emulator-5554
export ADB_SERVER_SOCKET=tcp:$IP:$PORT
echo "Maestro version"
maestro --version
echo
echo "Available emulators"
adb devices
echo
read -r -e -p "Emulator: " -i "$EMULATOR" emulator_selected
read -r -p "Test file: " test_file
maestro --host "$IP" --device "$emulator_selected" test "$test_file"
Mit diesem Setup muss ich lediglich unter Windows auf die Reihenfolge achten in der ich meine Tools starte und dann im WSL mein Script ausführen, welches die weiteren Parameter abfragt. Auf diesem Weg konnte ich ohne Probleme Test-Flows ausführen. Das Script kann man natürlich nach belieben erweitern, z.B. um einen Parameter um auch direkt Maestro Studio starten zu können.
Ich hoffe mit diesen zusätzlichen Informationen läuft Maestro unter Windows auch bei euch. Falls ihr Fragen habt oder weitere Hinweise, meldet euch gerne in den Kommentaren.