Boehrsi.de - Blog

Flutter UI Tests mit Maestro - Windows Probleme beheben

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter UI Tests mit Maestro - Windows Probleme beheben Bild

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
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. Via adb devices könnt ihr verfügbare Geräte abfragen
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.

Related Links
Kommentare  
Kommentar erstellen
Mit dem Abschicken des Kommentars erklären sie sich mit der in der Datenschutzerklärung dargelegten Datenerhebung für Kommentare einverstanden. Spam, unangebrachte Werbung und andere unerwünschte Inhalte werden entfernt. Das Abonnieren via E-Mail ist nur für E-Mail Adressen erlaubt die Sie rechtmäßig administrieren. Widerrechtliche Abonnements werden entfernt.