Co apka potrafi
70 zdolności
Jak liczony jest status
- „Działa” — co najmniej jeden test przeszedł w tym buildzie i żaden powiązany element w Azure DevOps nie jest otwarty.
- „Częściowo” — test przeszedł, ale powiązany element w Azure DevOps jest otwarty.
- „Istnieje, nie sprawdzone” — kontrolka jest w aplikacji, ale żaden test, który przeszedł, jej nie dotyka.
- „Planowane” — brak testu; otwarty element w Azure DevOps mówi, że to jest w planie.
- „Stan ADO nieznany” — ten build nie miał dostępu do Azure DevOps, więc status nie mógł zostać potwierdzony.
Statusów nikt nie wpisuje — są liczone przy każdym wdrożeniu. RNTL = test ekranu w środowisku natywnym; e2e = prawdziwa przeglądarka na demo; API = test serwera.
Start aplikacji
Dział zatytułowany „Start aplikacji”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Start pokazuje etapy budzenia serwera i pozwala od razu kontynuować offline lub ponowić | działa | RNTLConnectionSplash.splash ✓RNTL ConnectionSplash.test.tsx ✓RNTL ConnectionSplash.test.tsx ✓ | — |
| Po 8 sekundach czekania pojawiają się wyjścia awaryjne | działa | RNTLConnectionSplash.test.tsx ✓RNTL ConnectionSplash.test.tsx ✓ | — |
| Błąd serwera jest nazwany słowem i ikoną, nie tylko kolorem | działa | RNTLConnectionSplash.test.tsx ✓ | — |
Logowanie (start)
Dział zatytułowany „Logowanie (start)”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Wejście jako gość bez podawania czegokolwiek | działa | RNTLAuth.continueAsGuest ✓RNTL AuthScreen.test.tsx ✓RNTL AuthScreen.test.tsx ✓ | — |
| Logowanie Google na telefonie | działa | RNTLAuthScreen.test.tsx ✓RNTL AuthScreen.test.tsx ✓ | — |
| Logowanie Apple na iOS | działa | RNTLAuth.appleSignIn ✓RNTL AuthScreen.test.tsx ✓RNTL AuthScreen.test.tsx ✓ | — |
| Na demo webowym przycisk logowania demonstracyjnego zamiast Google (flaga konfiguracji) | częściowo | RNTLAuthScreen.test.tsx ✓RNTL AuthScreen.test.tsx ✓ | #222 (New) |
| Escape the Crowd prosto z ekranu logowania | działa | RNTLAuth.escapeTheCrowd ✓RNTL AuthScreen.test.tsx ✓RNTL AuthScreen.test.tsx ✓ | — |
Wejście do aplikacji
Dział zatytułowany „Wejście do aplikacji”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Wybór języka aplikacji na pierwszym kroku | działa | RNTLOnboarding.language ✓RNTL OnboardingScreen.test.tsx ✓ | — |
| Zgoda na lokalizację; po odmowie wybór miasta z katalogu | działa | RNTLOnboarding.consentAllow ✓RNTL Onboarding.consentSkip ✓RNTL OnboardingScreen.test.tsx ✓RNTL OnboardingScreen.test.tsx ✓ | — |
| Profil turysty w trzech krokach: imię i wiek, zainteresowania, tempo/tłumy/budżet/transport/posiłki/kontekst | działa | RNTLOnboarding.name ✓RNTL Onboarding.interest ✓RNTL Onboarding.transport ✓RNTL OnboardingScreen.test.tsx ✓ | — |
| Pięć kropek postępu widocznych od pierwszego ekranu | działa | RNTLOnboarding.dot ✓RNTL OnboardingScreen.test.tsx ✓ | — |
| Ekran przejściowy: gdy serwer się obudzi, przycisk zmienia się w Start; po 8 s można wejść mimo to | działa | RNTLOnboarding.transitionalCta ✓RNTL OnboardingScreen.test.tsx ✓RNTL OnboardingScreen.test.tsx ✓RNTL OnboardingScreen.test.tsx ✓ | — |
Ekran główny
Dział zatytułowany „Ekran główny”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Powitanie i pogoda dla miasta: ręczny wybór wygrywa z miastem z GPS | działa | RNTLHome.city ✓RNTL HomeScreenCity.test.tsx ✓RNTL HomeScreenCity.test.tsx ✓ | — |
| Gdy żadne miasto nie zostało rozpoznane, aplikacja proponuje wybór z katalogu | działa | RNTLHome.cityPrompt ✓RNTL HomeScreenCity.test.tsx ✓RNTL HomeScreenCity.test.tsx ✓ | — |
| Kafelki tras ze sklepu: szkielety podczas ładowania, uczciwy błąd po 15 s, pusta karta gdy nic nie ma | działa | RNTLHome.toursSkeleton ✓RNTL Home.toursError ✓RNTL Home.toursEmpty ✓RNTL HomeScreenSections.test.tsx ✓RNTL HomeScreenSections.test.tsx ✓RNTL HomeScreenSections.test.tsx ✓ | #134 (Resolved) |
| Dwa wejścia: Kreator trasy i Przeglądaj więcej tras | działa | e2eHome.routeCreatorButton ✓RNTL Home.browseMoreTile ✓RNTL HomeScreenNav.test.tsx ✓ | — |
| Sugestia pogodowa otwiera mapę na wskazanym miejscu | działa | RNTLHomeScreenNav.test.tsx ✓RNTL WeatherWidget.test.tsx ✓ | — |
| Gość widzi limit wycieczek i baner Premium; zapis trasy prosi o logowanie | działa | e2eTopBar.limit ✓RNTL PremiumBanner.premiumBox ·RNTL TopBar.test.tsx ✓RNTL PremiumBanner.test.tsx ✓e2e j3-auth-variants.spec.ts ✓ | — |
| Zalogowany free: baner Premium i odznaki; Premium: odliczanie dni zamiast limitu, bez banera; wylogowanie wraca do gościa | działa | e2eTopBar.premium ✓RNTL TopBar.test.tsx ✓RNTL PremiumBanner.test.tsx ✓e2e j3-auth-variants.spec.ts ✓e2e j3-auth-variants.spec.ts ✓ | — |
| Baner offline pojawia się po 3 s bez sieci i można go odrzucić do następnej utraty połączenia | działa | RNTLOfflineBanner.dismiss ✓RNTL OfflineBanner.test.tsx ✓RNTL OfflineBanner.test.tsx ✓ | — |
Escape the Crowd
Dział zatytułowany „Escape the Crowd”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Escape the Crowd: znajduje spokojne miejsce w promieniu 1,2 km (potem 2 km) i od razu prowadzi | działa | RNTLEscape.guideMe ✓RNTL EscapeScreen.test.tsx ✓API escape.test.ts ✓API escape.test.ts ✓ | — |
| Poza zasięgiem katalogu aplikacja pokazuje tryb demo zamiast błędu; odmowa lokalizacji kończy sesję z komunikatem | działa | RNTLEscape.demoNotice ✓RNTL Escape.exit ✓RNTL EscapeScreen.test.tsx ✓RNTL EscapeScreen.test.tsx ✓ | — |
Profil i ustawienia
Dział zatytułowany „Profil i ustawienia”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Konto w profilu: e-mail i odznaka planu po zalogowaniu, wylogowanie z potwierdzeniem | działa | e2eProfile.account ✓e2e Profile.signOutConfirm ·RNTL ProfileScreen.test.tsx ✓ | — |
| Zmiana języka aplikacji i motywu | istnieje, nie sprawdzone | RNTLLanguageSelector.languageSelector · | — |
| Usunięcie konta wraz z danymi | częściowo | APIaccountDelete.test.ts ✓API accountDelete.test.ts ✓ | #217 (New) |
Przed startem wycieczki
Dział zatytułowany „Przed startem wycieczki”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Lista przystanków z czasem pobytu; kolejność zmienia się przeciągnięciem (natywnie) lub strzałkami (web) | działa | e2eActiveTour.startGuidedTour ✓RNTL ActiveTourScreen.test.tsx ✓RNTL ActiveTourScreenWeb.test.tsx ✓RNTL ActiveTourScreen.test.tsx ✓ | — |
| Wygenerowane trasy pokazują wszystkie przystanki; ręcznie złożone są ograniczone do 10 | działa | RNTLActiveTourScreen.test.tsx ✓RNTL ActiveTourScreen.test.tsx ✓ | — |
| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Mapa startuje na Tokio (nigdy na Krakowie) i po wyszukaniu miejsca centruje się na wynikach | częściowo | RNTLMap.search ✓RNTL MapScreen.test.tsx ✓e2e j4-map-search.spec.ts ✓ | #219 (Active) |
| Spóźniona odmowa GPS nie przesuwa mapy, którą użytkownik już przewinął | działa | RNTLMapScreen.test.tsx ✓RNTL MapScreen.test.tsx ✓ | — |
| Panel miejsca: typ, najlepsze pory, informacja o bilecie, odległość w metrach lub kilometrach | działa | RNTLMap.panelClose ✓RNTL MapScreen.test.tsx ✓RNTL MapScreen.test.tsx ✓ | — |
| Kolory markerów według typu miejsca, filtry typów i legenda u dołu ekranu | działa | RNTLMap.filter ·RNTL Map.legend ✓RNTL MapScreen.test.tsx ✓RNTL MapScreen.test.tsx ✓ | — |
Sklep z trasami
Dział zatytułowany „Sklep z trasami”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Wyszukiwanie tras w całym katalogu; wyczyszczenie wraca do przeglądania | działa | e2eMarketplace.tourCard ✓RNTL MarketplaceScreen.test.tsx ✓RNTL MarketplaceScreen.test.tsx ✓RNTL MarketplaceScreen.test.tsx ✓ | — |
| Filtry ceny, czasu, rodzaju i kategorii oraz sortowanie w modalu, który zawsze mieści przycisk Zastosuj | częściowo | RNTLMarketplace.openFilters ✓RNTL Marketplace.filtersApply ✓RNTL Marketplace.sort ·RNTL MarketplaceScreen.test.tsx ✓ | #215 (Active) |
| Karta trasy otwiera się z listy; użytkownik Premium startuje wycieczkę z narracją | działa | e2ej2-marketplace-guided-tour.spec.ts ✓ | — |
Kreator trasy — start i czas
Dział zatytułowany „Kreator trasy — start i czas”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Ręcznie wybrany punkt startu wygrywa ze spóźnionym odczytem GPS | częściowo | e2eRouteBuilder.startOtherPoint ✓e2e RouteBuilder.startPoi ✓RNTL RouteBuilderScreen.test.tsx ✓RNTL RouteBuilderScreen.test.tsx ✓e2e j1-route-creator.spec.ts ✓ | #220 (New) |
| Zapamiętane miasto wygrywa z GPS przy wejściu; miasto można zmienić z katalogu | działa | e2eRouteBuilder.changeCity ✓e2e RouteBuilder.city ✓RNTL RouteBuilderScreen.test.tsx ✓RNTL RouteBuilderScreen.test.tsx ✓ | — |
| Po odmowie dostępu do lokalizacji można ponowić próbę; zawieszone pytanie o uprawnienia nie blokuje ekranu | działa | RNTLRouteBuilder.retryLocation ✓RNTL RouteBuilderScreen.test.tsx ✓RNTL RouteBuilderScreen.test.tsx ✓ | — |
| Wybór dnia i godziny startu (już od 5:00) | działa | RNTLRouteBuilder.startCustomDate ·RNTL RouteBuilder.startCustomTime ·RNTL RouteBuilderScreen.test.tsx ✓ | — |
| Generowanie pokazuje etapy pracy; limit żądań daje odliczanie, start poza obszarem jasny komunikat | działa | RNTLRouteBuilderScreen.test.tsx ✓RNTL RouteBuilderScreen.test.tsx ✓RNTL RouteBuilderScreen.test.tsx ✓ | — |
| Zredukowana trasa jest nazwana wprost, a przejście do podglądu odbywa się na żądanie | działa | RNTLRouteBuilderScreen.test.tsx ✓API tourGenerator.test.ts ✓ | — |
| Wybór głosu przewodnika (kobiecy / męski / neutralny) | istnieje, nie sprawdzone | RNTLRouteBuilder.guideVoice · | — |
| Punkt startowy z japońskiego kodu pocztowego | planowane | brak dowodu | #221 (New) |
Karta trasy
Dział zatytułowany „Karta trasy”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Numerowane znaczniki na mapie odpowiadają liście przystanków | działa | RNTLTourPreviewScreen.test.tsx ✓ | #134 (Resolved) |
| Gość nie wystartuje trasy półdniowej — start jest zablokowany za Premium | działa | e2eTourPreview.halfDayBlocker ✓e2e TourPreview.startTourButton ✓e2e j2-marketplace-guided-tour.spec.ts ✓ | — |
| Zakup pojedynczej trasy z karty | częściowo | RNTLTourPreview.buyTourButton ·API billing.test.ts ✓ | #196 (New) |
Wycieczka z przewodnikiem
Dział zatytułowany „Wycieczka z przewodnikiem”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Narracja o miejscu generowana online, pokazana w panelu i czytana głosem urządzenia | działa | e2eGuidedTour.narrativePane ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Gdy serwer narracji zawiedzie, aplikacja mówi zdanie zastępcze albo czyta pobrany pakiet offline | działa | RNTLGuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Przybycie: karta po pierwszym odczycie GPS w promieniu, automatyczne potwierdzenie po dwóch | działa | e2eGuidedTour.arrivalCard ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓e2e j2-marketplace-guided-tour.spec.ts ✓ | — |
| Przycisk „Jestem tu” wymaga Google Directions; bez klucza pozostaje nieaktywny | częściowo | e2eGuidedTour.arrivalImhere ✓ | #220 (New) |
| Pominięcie przystanku bez zaliczania wizyty; ręczne „odwiedzone” na liście bez GPS | działa | RNTLGuidedTour.arrivalSkip ✓RNTL GuidedTour.markVisited ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Pytania do przewodnika: czat z limitem dziennym poza Premium, sesja głosowa w Premium | działa | RNTLChatModal.chatSuggestion ·RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓API dialog.test.ts ✓ | — |
| Premium: agent głosowy startuje razem z wycieczką i sam wita; bez Premium wita głos urządzenia | działa | RNTLGuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Bez odczytu GPS wycieczka jest zablokowana z przyciskiem Ponów — nigdy nie startuje z wymyślonej pozycji | działa | RNTLGuidedTourScreen.test.tsx ✓ | — |
| Zakończenie wycieczki wraca na ekran główny bez dublowania go w historii | działa | e2eGuidedTour.end ✓e2e GuidedTour.endTourConfirm ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Po ostatnim przystanku: podsumowanie z punktami, ocena NPS i „hak na jutro” | działa | e2eTourCelebrationModal.poiList ✓e2e NpsModal.step ✓e2e NpsModal.tomorrowHook ✓RNTL GuidedTourScreen.test.tsx ✓ | — |
| Pauza, lista przystanków i transkrypt dostępne w trakcie wycieczki | działa | RNTLGuidedTour.pause ·RNTL GuidedTour.openStopsList ✓RNTL GuidedTour.transcript · | — |
Aktywność i odznaki
Dział zatytułowany „Aktywność i odznaki”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Punkty, odznaki z postępem i ranking po wyrażeniu zgody | działa | RNTLActivityScreen.test.tsx ✓RNTL ActivityScreen.test.tsx ✓RNTL ActivityScreen.test.tsx ✓ | — |
Ulubione
Dział zatytułowany „Ulubione”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Ulubione trasy i miejsca | istnieje, nie sprawdzone | RNTLFavorites.route ·RNTL Favorites.poi · | — |
Zapisane trasy
Dział zatytułowany „Zapisane trasy”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Lista zapisanych tras: otwarcie podglądu, usuwanie z potwierdzeniem, pusty stan z wejściem do kreatora | działa | RNTLSavedRoutes.route ✓RNTL SavedRoutes.deleteRoute ✓RNTL SavedRoutesScreen.test.tsx ✓RNTL SavedRoutesScreen.test.tsx ✓RNTL SavedRoutesScreen.test.tsx ✓ | — |
Nawigacja do punktu
Dział zatytułowany „Nawigacja do punktu”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Pasek nawigacji krok po kroku: instrukcja z odległością, stan przeliczania trasy i dotarcia | działa | RNTLNavigationInstructionBar.test.tsx ✓RNTL NavigationInstructionBar.test.tsx ✓RNTL NavigationInstructionBar.test.tsx ✓ | — |
Kreator trasy — preferencje
Dział zatytułowany „Kreator trasy — preferencje”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Preferencje trasy (transport i inne) zapisują się i trafiają do następnego generowania | częściowo | e2eRouteCreator.transport ✓e2e RouteCreator.save ✓RNTL RouteBuilderScreen.test.tsx ✓e2e j1-route-creator.spec.ts ✓ | #220 (New) |
| Przycisk Wstecz wraca w aplikacji, a bez historii — na ekran główny (nigdy nie zamyka strony web) | częściowo | e2eRouteCreator.back ✓RNTL RouteBuilderScreen.test.tsx ✓RNTL RouteBuilderScreen.test.tsx ✓ | #219 (Active) |
Twoja trasa
Dział zatytułowany „Twoja trasa”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Oś czasu trasy: pobyt i dojście dla każdego przystanku, jeden przystanek szczytowy, chipy biletu i tłumu | działa | e2eRoutePreview.routeTimeline ✓e2e RoutePreview.stopRow ✓RNTL RoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓ | — |
| Szczegóły przystanku w arkuszu: opis, alternatywy do zamiany z przeliczeniem czasów; szczyt i posiłki są zablokowane | częściowo | e2eRoutePreview.stopDetailSheet ✓RNTL RoutePreview.detailSwap ✓RNTL RoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓ | #219 (Active) |
| Zamiana kilku przystanków naraz: długie przytrzymanie wybiera, regeneracja pomija wybrane | działa | RNTLRoutePreview.swapSelected ✓RNTL RoutePreview.stopCheck ·RNTL RoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓ | — |
| Zapis trasy dla zalogowanych (z punktem startu); gość dostaje prośbę o logowanie | działa | e2eRoutePreview.saveRoute ✓e2e RoutePreview.saveSigninPrompt ✓RNTL RoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓API toursSave.test.ts ✓ | — |
| Start wycieczki z podglądu; gdy godzina startu ma ponad 30 minut, aplikacja pyta przed startem | działa | RNTLRoutePreviewScreen.test.tsx ✓RNTL RoutePreviewScreen.test.tsx ✓ | — |
Wycieczka (stary ekran)
Dział zatytułowany „Wycieczka (stary ekran)”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Stary ekran wycieczki — zarejestrowany, ale żadne przejście do niego nie prowadzi | planowane | brak dowodu | #226 (New) |
Pobrane trasy (offline)
Dział zatytułowany „Pobrane trasy (offline)”| Zdolność | Status | Dowód | ADO |
|---|---|---|---|
| Zarządzanie pobranymi trasami offline — ekran istnieje, ale nie ma do niego wejścia z aplikacji | planowane | brak dowodu | #226 (New) |
W ADO, bez wpisu
Dział zatytułowany „W ADO, bez wpisu”Elementy bieżącego sprintu, których nie opisuje jeszcze żadna zdolność na tej stronie. (Sprint 3)
| ADO | Status | title |
|---|---|---|
| #180 | New | S3-01 · Próbka bez konta na stronie |
| #181 | New | S3-02 · Podstrona pobrania |
| #182 | New | S3-03 · Lejek mailowy |
| #183 | New | S3-04 · Audio i GPS przy zgaszonym ekranie |
| #184 | New | S3-05 · Stany brzegowe |
| #185 | New | S3-06 · Przyciski przybliżania na mapie |
| #186 | New | S3-07 · Podgląd opisu miejsca przed startem trasy |
| #187 | New | S3-08 · Oznaczenie POI wymagającego biletu |
| #188 | New | S3-09 · Japoński zapis powitań dla języka japońskiego, bez słowa na drogę |
| #189 | New | S3-10 · Dwa imiona w profilu przy podróży we dwoje |
| #191 | New | S3-12 · Obsługa zwrotów |
| #192 | New | S3-13 · Granica wieku 13+ ze zgodą opiekuna |
| #193 | New | S3-14 · Zakup w aplikacji na iOS |
| #194 | New | S3-15 · Rezerwa na bugi od pierwszych użytkowników |