Awesome Testing

Markdown document

Zadanie

Lekcja 9: Zadanie 2 - testy kolejnych endpointów API

Historical artifacts may name disposable training credentials and environments. Do not reuse credentials, target course systems, or execute archived prompts without authorization.

Zadanie: testy dla kolejnych endpointów API

Przygotuj testy API w Playwright dla kolejnego zestawu endpointów. Tym razem celem nie jest samo sprawdzenie, czy API odpowiada, tylko zbudowanie sensownego pokrycia dla kilku typów operacji:

  • endpointów publicznych,
  • endpointów wymagających zalogowanego użytkownika,
  • listowania i pobierania pojedynczego zasobu,
  • odczytu i aktualizacji ustawień użytkownika.

Zanim poprosisz agenta AI o implementację, poproś go o sprawdzenie aktualnego planu testów i o krótką propozycję kolejności pracy.

Endpointy do pokrycia

Użyj poniższych 8 operacji:

GET /api/v1/traffic/info
GET /api/v1/traffic/logs
GET /api/v1/products
GET /api/v1/products/{id}
GET /api/v1/users/chat-system-prompt
PUT /api/v1/users/chat-system-prompt
GET /api/v1/users/tool-system-prompt
PUT /api/v1/users/tool-system-prompt

Krótki opis endpointów:

  • GET /api/v1/traffic/info zwraca informacje potrzebne do monitorowania ruchu HTTP, między innymi endpoint WebSocket i topic.
  • GET /api/v1/traffic/logs zwraca stronicowaną listę zarejestrowanych logów ruchu HTTP i pozwala filtrować wyniki po metodzie, statusie, ścieżce, tekście oraz zakresie czasu.
  • GET /api/v1/products zwraca katalog produktów widoczny dla zalogowanego klienta.
  • GET /api/v1/products/{id} zwraca pojedynczy produkt po identyfikatorze albo błąd, jeśli produkt nie istnieje.
  • GET /api/v1/users/chat-system-prompt zwraca aktualny prompt czatu dla zalogowanego użytkownika, czyli zapisany override albo wartość domyślną.
  • PUT /api/v1/users/chat-system-prompt zapisuje nowy prompt czatu dla zalogowanego użytkownika.
  • GET /api/v1/users/tool-system-prompt zwraca aktualny prompt używany przy tool callingu dla zalogowanego użytkownika, czyli zapisany override albo wartość domyślną.
  • PUT /api/v1/users/tool-system-prompt zapisuje nowy prompt używany przy tool callingu dla zalogowanego użytkownika.

Endpointy traffic są publiczne. Endpointy products oraz users/*-system-prompt wymagają autoryzacji JWT, więc testy powinny używać istniejących fixture'ów i helperów dla zalogowanego użytkownika.

Jak pracować z agentem AI

W tym zadaniu nie zaczynaj od promptu "napisz testy". Poprowadź agenta przez proces:

  1. Poproś agenta o przeczytanie aktualnego planu testów API.
  2. Poproś o wskazanie, które z 8 endpointów są już pokryte, a które nadal wymagają testów.
  3. Poproś o sprawdzenie kontraktu w OpenAPI oraz, jeśli to możliwe, krótką eksplorację live API przez curl.
  4. Poproś o plan implementacji: jakie pliki zmieni, jakie helpery wykorzysta i jakie przypadki sprawdzi.
  5. Dopiero po zaakceptowaniu planu poproś o implementację testów.
  6. Po implementacji poproś o review aktualnego diffu.
  7. Poproś o uruchomienie nowych testów, a potem pełnego zestawu testów API.
  8. Na końcu poproś o aktualizację planu testów, żeby było jasne, co zostało ukończone.

Kryteria akceptacji

  • Wszystkie 8 operacji ma sensowne pokrycie testami.
  • Testy jasno rozróżniają endpointy publiczne i endpointy wymagające JWT.
  • Dla endpointów z body odpowiedzi testy sprawdzają stabilne pola, a nie tylko sam status 200.
  • Testy promptów potwierdzają, że zapis przez PUT jest widoczny przy kolejnym GET.
  • Testy produktów nie zakładają przypadkowego id, jeśli można pobrać istniejący produkt z listy.
  • GET /api/v1/traffic/logs ma sprawdzoną strukturę stronicowania i przynajmniej jeden podstawowy filtr.
  • Plan testów API jest zaktualizowany po implementacji.
  • Nowe testy i pełny suite API zostały uruchomione.
  • Review diffu nie wskazuje zmian niezwiązanych z zadaniem.