Jak testować aplikację React Native w Maestro i kiedy wybrać go zamiast Detox?
Testy E2E aplikacji React Native w Maestro: jak działa narzędzie, czym różni się od Detox, jak przygotować testID, które ścieżki testować najpierw, jak obsłużyć dane testowe, oczekiwanie na ekran i uruchamianie w CI.
Maestro testuje aplikację React Native z zewnątrz, jak użytkownik: klika, wpisuje tekst i sprawdza, co widać na ekranie. Testy zapisuje się w plikach YAML, nie trzeba instalować pakietów w aplikacji ani kompilować testów. Elementy najlepiej wskazywać przez testID, który Maestro traktuje jako identyfikator. Detox działa inaczej: testy pisze się w JavaScript, a narzędzie synchronizuje się z operacjami asynchronicznymi w aplikacji. Maestro uruchomisz na emulatorach i telefonach z Androidem oraz na symulatorach iOS. Zacznij od kilku ścieżek, od których zależy przychód, i stałych danych testowych.
Krótka odpowiedź
Źródła sprawdzone 12 listopada 2026.
Ten poradnik jest dla osoby, która odpowiada za jakość firmowej aplikacji w React Native i chce dodać automatyczne testy E2E albo wybiera między Maestro a Detox. Opisuje przygotowanie aplikacji, pierwsze przepływy, dane testowe i uruchamianie w CI.
Odpowiedź w skrócie: Maestro pozwala szybko opisać ścieżki użytkownika bez zmian w kodzie aplikacji poza testID. Ograniczenia: dokumentacja Maestro wymienia na iOS tylko symulatory, więc nie zakładaj testów na fizycznych iPhone'ach, a narzędzie nie widzi stanu wewnątrz aplikacji. Zanim napiszesz dziesiątki testów, sprawdź na dwóch lub trzech przepływach, czy działają stabilnie w Twoim CI.
1. Jak działa Maestro
Według dokumentacji Maestro narzędzie traktuje aplikację jak czarną skrzynkę i symuluje działania użytkownika na ekranie. Testy są deklaratywne, zapisane w YAML, i uruchamiają się bez kompilacji.
Maestro samodzielnie czeka na załadowanie treści i zakończenie animacji, więc w testach nie trzeba wstawiać ręcznych pauz. Może też wychodzić poza aplikację, na przykład do ustawień systemu albo powiadomień.
Testy można pisać w edytorze albo w aplikacji Maestro Studio, która pozwala tworzyć je wizualnie na podłączonym urządzeniu.
2. Maestro czy Detox
Oba narzędzia testują aplikację React Native na urządzeniu lub symulatorze, ale różnią się podejściem. Porównanie na podstawie dokumentacji obu projektów:
| Cecha | Maestro | Detox |
|---|---|---|
| Język testów | YAML (z opcjonalnym JavaScript) | JavaScript |
| Zmiany w aplikacji | Brak pakietów w aplikacji; testID na elementach | Pakiet Detox i konfiguracja buildów testowych |
| Podejście | Czarna skrzynka, działania jak użytkownika | Gray box, synchronizacja z operacjami w aplikacji |
| Inne technologie | Także aplikacje natywne i Flutter | Aplikacje React Native |
| Fizyczne urządzenia iOS | Dokumentacja wymienia tylko symulatory | Jeszcze nieobsługiwane |
Detox opisuje się jako framework testów typu gray box dla React Native: testy pisze się w JavaScript, a Detox monitoruje operacje asynchroniczne w aplikacji, aby ograniczyć niestabilność. Testy na fizycznych urządzeniach z iOS nie są w nim jeszcze obsługiwane.
Wybór zależy od zespołu i aplikacji. Maestro ułatwia start osobom, które nie piszą kodu na co dzień. Detox daje programistom testy w tym samym języku co aplikacja i ściślejszą synchronizację z jej stanem.
3. Przygotowanie aplikacji: testID
Maestro potrafi wskazać element po widocznym tekście, ale taki test psuje się po zmianie etykiety albo tłumaczenia.
Strona Maestro o React Native zaleca właściwość testID, którą Maestro mapuje na unikalny identyfikator elementu. W teście odwołujesz się wtedy do identyfikatora, a nie do tekstu, więc test działa także w innych wersjach językowych.
Ustal konwencję nazw (na przykład ekran_element) i dodawaj testID do przycisków, pól formularzy i elementów, które test ma sprawdzić. W Expo Go aplikację otwiera się przez link (openLink), a nie przez launchApp z własnym identyfikatorem aplikacji, dlatego do testów w CI lepiej użyć samodzielnego buildu, w którym działa zwykłe launchApp.
4. Pierwszy przepływ: logowanie
Przykład hipotetyczny: test logowania w aplikacji sklepu. Każdy krok to jedna komenda w pliku YAML:
Taki przepływ jest krótki, ale sprawdza kilka warstw naraz: ekran, walidację formularza, połączenie z backendem i przejście do kolejnego widoku. Dlatego dobrze nadaje się na pierwszy test w CI.
- launchApp: uruchom aplikację.
- tapOn z identyfikatorem pola e-mail, potem inputText z adresem konta testowego.
- tapOn z identyfikatorem pola hasła i inputText z hasłem konta testowego.
- tapOn z identyfikatorem przycisku logowania.
- assertVisible z identyfikatorem elementu ekranu głównego.
5. Które ścieżki testować najpierw
Testy E2E są wolniejsze i droższe w utrzymaniu niż testy jednostkowe, więc zacznij od ścieżek, których awaria kosztuje najwięcej:
- Logowanie i rejestracja, także odzyskiwanie hasła.
- Zakup lub zamówienie: koszyk, dostawa, płatność w środowisku testowym operatora.
- Uprawnienia systemowe: zgoda na powiadomienia, lokalizację lub aparat.
- Pierwsze uruchomienie: onboarding i ekrany zgód.
- Funkcja, dla której klienci pobierają aplikację, na przykład karta lojalnościowa albo historia zamówień.
Jeśli firma ma także sklep internetowy, ścieżkę zakupu w przeglądarce warto testować osobnym narzędziem. Opisujemy to w poradniku o testach E2E sklepu w Playwright.
6. Dane testowe i środowisko
Niestabilne testy E2E wynikają nie tylko z narzędzia, ale też z danych. Test, który loguje się na konto z innym stanem koszyka przy każdym uruchomieniu, raz przejdzie, a raz nie.
Przygotuj osobne środowisko backendu z kontami testowymi, stałymi produktami i trybem testowym operatora płatności. Każdy test powinien zaczynać się od znanego stanu aplikacji i nie zależeć od wyniku innego testu.
Danych dostępowych nie zapisuj w plikach YAML w repozytorium. Przekazuj je jako zmienne środowiskowe z sekretów systemu CI.
7. Oczekiwanie na ekran i niestabilność
Domyślne oczekiwanie Maestro wystarcza dla ekranów, które ładują się w kilka sekund. Dla dłuższych operacji dokumentacja przewiduje osobne komendy.
Według opisu komend oczekiwania w Maestro extendedWaitUntil służy do wolnych odpowiedzi sieci, na przykład przetwarzania płatności, a waitForAnimationToEnd do elementów, które są widoczne, ale jeszcze się przesuwają. Dokumentacja odradza ustawianie długiego limitu czasu dla każdego kroku, bo ukrywa to spadki wydajności.
Jeśli test raz przechodzi, a raz nie, nie zwiększaj od razu limitów czasu. Sprawdź najpierw dane testowe, animacje i to, czy test nie zależy od kolejności wykonania.
8. Uruchamianie w CI i na urządzeniach
Przed wyborem infrastruktury sprawdź, gdzie Maestro może działać. Lista obsługiwanych platform Maestro podaje pełne wsparcie dla emulatorów i fizycznych urządzeń z Androidem oraz dla symulatorów iOS.
Testy na iOS w CI wymagają więc maszyny z macOS i symulatorem. Alternatywą jest chmura Maestro, do której wysyła się build aplikacji i pliki testów.
Na początek wystarczy uruchamiać kilka kluczowych przepływów przy każdej zmianie w głównej gałęzi, a pełny zestaw przed wydaniem do sklepu. Wyniki, zrzuty ekranu i nagrania z nieudanych testów zapisuj jako artefakty CI, żeby zespół mógł ocenić błąd bez ponownego uruchamiania.
Najczęstsze pytania
- Czy Maestro wymaga zmian w kodzie aplikacji React Native?
- Nie wymaga instalowania pakietów w aplikacji, bo testuje gotowy build. Zalecane jest natomiast dodanie testID do elementów, które testy mają wskazywać, żeby testy nie zależały od tekstów na ekranie.
- Czy Maestro przetestuje aplikację na fizycznym iPhonie?
- Według listy obsługiwanych platform Maestro na iOS działa z symulatorami. Na Androidzie obsługuje zarówno emulatory, jak i fizyczne urządzenia. Jeśli testy na fizycznym iPhonie są wymagane, trzeba je zaplanować innym narzędziem albo ręcznie.
- Czy można używać Maestro i Detox w jednym projekcie?
- Technicznie tak, bo Maestro nie wymaga pakietów w aplikacji. Utrzymywanie dwóch zestawów testów E2E zwiększa jednak koszt utrzymania, dlatego warto ustalić, które ścieżki testuje które narzędzie, albo wybrać jedno.
- Kto powinien pisać testy w Maestro?
- Format YAML pozwala pisać testy także testerom bez głębokiej znajomości programowania. Programiści są jednak potrzebni do dodania testID, przygotowania danych testowych i podłączenia testów do CI, więc odpowiedzialność warto podzielić między obie role.
Opisz swoją aplikację i obecne testy
Treść zaktualizowano: 12 listopada 2026
Google Preferred Sources
Czytaj GMI częściej w Google
Dodaj gmi.software do preferowanych źródeł. Google może częściej wyróżniać nasze nowe materiały w Top Stories i obsługiwanych widokach AI.