Podsumowanie sesji Codex
Zakres sesji
Sesja dotyczyła pracy w folderze l8 i pokrycia testami ośmiu kolejnych endpointów API:
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.
Użytkownik poprosił, żeby przed implementacją sprawdzić, czy w endpointach nie ma czegoś nietypowego, i wykonać eksploracyjne testy ręczne.
W sesji powstały:
- eksploracyjne notatki w
api-test-plan.md, - plan implementacji automatyzacji,
- testy dla ośmiu endpointów,
- klienci
TrafficClientiProductsClient, - metody promptów w
UsersClient, - typy DTO dla traffic, products i promptów,
- bug report dla zespołu developerskiego,
- opis workflow pracy: eksploracja, plan, implementacja, review.
Prompty użyte w Codex
Pierwszy prompt uruchomił eksplorację endpointów przed automatyzacją:
Work in l8 folder. Check api test plan. I wish to cover 8 new endpoints. | 3 | `GET /api/v1/traffic/info` | 1 | Public, deterministic response. |
| 4 | `GET /api/v1/traffic/logs` | 1 | Public paginated read; keep assertions structural. |
| 5 | `GET /api/v1/products` | 2 | Authenticated read-only endpoint. |
| 6 | `GET /api/v1/products/{id}` | 2 | Authenticated read plus straightforward `404`. |
| 7 | `GET /api/v1/users/chat-system-prompt` | 2 | Authenticated current-user read. |
| 8 | `PUT /api/v1/users/chat-system-prompt` | 2 | Authenticated current-user update with simple payload. |
| 9 | `GET /api/v1/users/tool-system-prompt` | 2 | Same pattern as chat prompt. |
| 10 | `PUT /api/v1/users/tool-system-prompt` | 2 | Same pattern as chat prompt update. |. Before we start I'd like you to check whether there is something unusual in them and I'd like you to perform exploratory tests first. Do they work as designed?
Następnie użytkownik poprosił o plan przed generowaniem kodu:
Ok, I would ask you to prepare a ticket for Jira later but let's now create implementation plan towards automation. I'd like to read it first before code generation
Po zaakceptowaniu planu użytkownik zlecił implementację:
Ok, create the tests now. If you wish you can spawn subagents to parallelise work
Na końcu użytkownik poprosił o bug report i zapis workflow:
Ok now do two things. Create bug report for development team (use testing best practices, like steps to reproduce, etc.) and save our workflow, mention that we start with exploratory test, then exploration and implementation plan, then we implement and review/improve the code
Co sprawdził Codex przed implementacją?
Codex sprawdził:
- istniejący
api-test-plan.md, api-docs.json,- schematy OpenAPI dla traffic, products i promptów,
- istniejące testy i konwencje z
l8, - klientów
AuthClientiUsersClient, - fixture
authenticatedUser, - rzeczywiste zachowanie endpointów na żywej aplikacji.
W eksploracji potwierdzono, że:
GET /api/v1/traffic/infozwraca publiczny, stabilny obiekt,GET /api/v1/traffic/logszwraca dynamiczne, paginowane logi,- endpointy produktowe wymagają JWT,
GET /api/v1/products/{id}zwraca404dla brakującego produktu,- endpointy promptów wymagają JWT,
- poprawne
PUTprompta zapisuje wartość, - prompt dłuższy niż 5000 znaków zwraca
400, - błędne pole w body prompta zwraca
200i zapisujenull.
Ostatnie zachowanie uznano za bug/quirk, którego nie należy utrwalać w testach automatycznych.
Co zaimplementował Codex?
Dodano TrafficClient z metodami:
getInfo()
getLogs(params)
Dodano ProductsClient z metodami:
getProducts(token)
getProductsWithoutAuth()
getProduct(id, token)
getProductWithoutAuth(id)
Rozszerzono UsersClient o metody:
getChatSystemPrompt(token)
getChatSystemPromptWithoutAuth()
updateChatSystemPrompt(prompt, token)
updateChatSystemPromptWithoutAuth(prompt)
getToolSystemPrompt(token)
getToolSystemPromptWithoutAuth()
updateToolSystemPrompt(prompt, token)
updateToolSystemPromptWithoutAuth(prompt)
Dodano typy:
TrafficInfoResponse,TrafficLogsResponse,TrafficLogEntry,ProductResponse,ChatSystemPromptResponse,ToolSystemPromptResponse,- walidacyjne typy błędów promptów.
Dodano testy:
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.
Jakie korekty zostały zlecone po implementacji?
Po implementacji użytkownik poprosił o dwa artefakty:
- bug report dla zespołu developerskiego,
- zapis workflow użytego w tej sesji.
Codex przygotował bug report opisujący problem z błędnym polem w requestach PUT promptów oraz dokument workflow:
exploratory test -> exploration findings -> implementation plan -> implementation -> review/improvement
Te artefakty zostały później przeniesione do materiałów lekcyjnych, żeby nie zaśmiecały folderu z kodem testów.
Co wyszło w review?
Najważniejszy wniosek dotyczył granicy między eksploracją a automatyzacją.
Nie każde zaobserwowane zachowanie powinno zostać testem regresji. Jeśli endpoint zachowuje się podejrzanie, najpierw trzeba zdecydować, czy to:
- oczekiwany kontrakt,
- luka w dokumentacji,
- błąd produktu,
- zachowanie tymczasowe.
W tej sesji zachowanie PUT promptów z błędnym polem wyglądało jak błąd produktu, więc zostało opisane w bug reporcie, a nie zakodowane jako oczekiwany wynik testu.
Wynik testów
Najpierw uruchomiono 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
Wynik:
17 passed
Następnie uruchomiono pełny zestaw:
npm test
Wynik:
36 passed
Podczas uruchomień pojawiał się ostrzegawczy komunikat Node o NO_COLOR i FORCE_COLOR, ale nie wpływał na wynik testów.
Finalny efekt sesji
l8 ma pokryte endpointy:
- traffic info,
- traffic logs,
- products list,
- product by id,
- chat system prompt GET/PUT,
- tool system prompt GET/PUT.
Plan API został zaktualizowany i wskazuje kolejne sugerowane endpointy:
GET /api/v1/users,GET /api/v1/users/{username},GET /api/v1/cart,DELETE /api/v1/cart.
Stan kodu z l8 został przygotowany do skopiowania do l9, żeby następna lekcja mogła startować z aktualnego checkpointu.
