Plan implementacji automatyzacji
Cel
Pokryć testami osiem kolejnych endpointów API po wcześniejszym sprawdzeniu ich zachowania na żywej aplikacji:
GET /api/v1/traffic/infoGET /api/v1/traffic/logsGET /api/v1/productsGET /api/v1/products/{id}GET /api/v1/users/chat-system-promptPUT /api/v1/users/chat-system-promptGET /api/v1/users/tool-system-promptPUT /api/v1/users/tool-system-prompt
Założenia po eksploracji
- Endpoint
traffic/infojest publiczny i zwraca stabilny, deterministyczny obiekt. - Endpoint
traffic/logsjest publiczny, ale dane są dynamiczne, więc testy powinny sprawdzać strukturę i paginację, nie konkretną liczbę logów. - Endpointy produktowe wymagają autoryzacji.
GET /api/v1/products/{id}można testować przez pobranie pierwszego produktu z listy i użycie jegoid.- Endpointy promptów wymagają autoryzacji i mają domyślne wartości dla nowego użytkownika.
- Poprawny
PUTprompta zapisuje wartość i można ją potwierdzić kolejnymGET. - Prompt dłuższy niż 5000 znaków zwraca
400, mimo że OpenAPI nie dokumentuje tego statusu dla operacjiPUT. - Payload z błędnym polem zwraca
200i zapisujenull; to zachowanie należy zgłosić jako błąd, a nie utrwalać w testach regresji.
Plan zmian
-
Dodać typy odpowiedzi:
types/traffic.tstypes/products.ts- typy promptów w
types/users.ts
-
Dodać klientów HTTP:
TrafficClientProductsClient- metody promptów w
UsersClient
-
Dodać testy ruchu:
tests/api/traffic/info.spec.tstests/api/traffic/logs.spec.ts
-
Dodać testy produktów:
tests/api/products/products.get.spec.tstests/api/products/id.get.spec.ts
-
Dodać testy promptów:
tests/api/users/chat-system-prompt.get.spec.tstests/api/users/chat-system-prompt.put.spec.tstests/api/users/tool-system-prompt.get.spec.tstests/api/users/tool-system-prompt.put.spec.ts
-
Zaktualizować
api-test-plan.md:- dopisać wyniki eksploracji,
- oznaczyć osiem endpointów jako ukończone,
- poprawić stary zapis o pełnym suite z
l7nal8.
Zasady implementacji
- Inicjalizować klientów HTTP w
test.beforeEach. - Używać komentarzy
given,when,then. - Grupować testy po statusach w kolejności rosnącej:
200,400,401,404. - Dla danych dynamicznych stosować asercje strukturalne.
- Nie dodawać testu dla błędnego pola prompta, dopóki zespół nie zdecyduje, czy obecne zachowanie ma zostać utrzymane.
Weryfikacja
Najpierw uruchomić tylko nowe testy:
npx playwright test tests/api/traffic/info.spec.ts tests/api/traffic/logs.spec.ts tests/api/products/products.get.spec.ts tests/api/products/id.get.spec.ts tests/api/users/chat-system-prompt.get.spec.ts tests/api/users/chat-system-prompt.put.spec.ts tests/api/users/tool-system-prompt.get.spec.ts tests/api/users/tool-system-prompt.put.spec.ts
Następnie uruchomić pełny zestaw:
npm test
