Podsumowanie sesji Codex
Zakres sesji
Sesja dotyczyła pracy w l11 nad testami endpointów Ollama. Finalny stan kodu został następnie skopiowany do checkpointu l12.
Celem było:
- zrozumienie, jak działają endpointy streamingowe,
- zastosowanie standardowego workflow
api-testing-skill, - wykonanie eksploracji przed implementacją,
- przygotowanie planu,
- dodanie automatycznych testów Playwright,
- przeprowadzenie review i uproszczenie testów.
Prompty użyte w Codex
Sesję rozpoczęło pytanie o działanie endpointów Ollama i różnicę między streamingiem a zwykłymi endpointami:
POST
/api/v1/ollama/generate
Generate text using Ollama model
POST
/api/v1/ollama/chat
Chat with Ollama model (stateless endpoint)
POST
/api/v1/ollama/chat/tools
Chat with Ollama using backend function calling (legacy stateless endpoint)
GET
/api/v1/ollama/chat/tools/definitions
List tool definitions supported by /api/v1/ollama/chat/tools
../test-secure-backend, ../ollama-mock. I wish to understand how these endpoints work. I have heard from my trainer that they're doing some kind of http streaming and we have event stream on frontend side (tokens appear one by one). Can you explain me how it works? What's the difference between such endpoint and standard endpoints we already covered in the project. Work in l11
Następnie użytkownik poprosił o standardowe podejście testowe, ale tylko do etapu planu:
$api-testing-skill Now I want you to apply our standard approach to test the endpoints. Feel free to use different tool than curl, I'm not sure if it is the best. Stop after creating implementation plan. I wish to review it first
Po akceptacji planu użytkownik zlecił implementację:
Ok, continue the work, automate the tests and review the final code
Po implementacji użytkownik poprosił o uproszczenie testów:
Feels like some of the http 200 assertions can be moved outside test body, what do you think?
Potem wskazał, że statyczne dane mocka powinny być poza testami:
such static content can be moved outside to keep tests clean
Na końcu użytkownik poprosił o dalsze wydzielenie długich asercji do nazw biznesowych.
Co sprawdził Codex przed implementacją?
Codex sprawdził:
l11/api-test-plan.md,- kontrakt w
api-docs.json, - backendowy
OllamaController, - serwisy
OllamaServiceiOllamaFunctionCallingService, - obsługę błędów w
OllamaExceptionHandler, - scenariusze mocka w
../ollama-mock, - istniejące testy, klientów HTTP, typy i helpery w
l11.
Codex potwierdził, że:
- trzy endpointy POST zwracają
text/event-stream, - backend czyta upstream jako
Fluxi wystawia stream do klienta, GET /api/v1/ollama/chat/tools/definitionsjest zwykłym endpointem JSON,/chat/toolswymaga niepustej listytools,- kontrolowany mock zwraca stabilne odpowiedzi dla znanych promptów,
- brakujący model w mocku zwraca aktualnie
200, mimo że OpenAPI dokumentuje404.
Eksploracja live API
Zgodnie z workflow api-testing-skill Codex wykonał eksploracyjne requesty curl do żywej aplikacji.
Potwierdzono:
GET /api/v1/ollama/chat/tools/definitions:200i401,POST /api/v1/ollama/generate:200,400,401,POST /api/v1/ollama/chat:200,400,401,POST /api/v1/ollama/chat/tools:200,400,401.
Wyniki eksploracji zostały zapisane w l11/api-test-plan.md, a po promocji są dostępne również w l12/api-test-plan.md.
Co zaimplementował Codex?
Codex dodał w implementowanym checkpointcie, a finalnie przeniósł do l12:
l12/types/ollama.ts,l12/httpclients/ollama-client.ts,l12/support/sse.ts,l12/support/ollama-test-data.ts,expectEventStreamResponsewl12/support/assertions/http.ts,- testy w
l12/tests/api/ollama.
Dodane testy obejmują:
- definicje tooli,
- generowanie tekstu,
- zwykły chat,
- chat z backendowym tool callingiem.
Jakie korekty zostały zlecone po implementacji?
Najpierw testy były poprawne funkcjonalnie, ale część asercji była zbyt nisko poziomowa i zbyt długa.
Użytkownik wskazał trzy problemy:
- powtarzalne asercje HTTP
200dla streamów powinny trafić do helpera, - statyczne prompty, odpowiedzi i definicja toola nie powinny zaśmiecać testu,
- długie asercje strukturalne powinny mieć nazwy biznesowe.
Codex wprowadził kolejne refaktory:
- dodał
expectEventStreamResponse, - przeniósł dane mocka do
ollama-test-data.ts, - wydzielił helpery takie jak
expectToolChatStreamForBeautyProducts, - uprościł test definicji tooli przez
expectSupportedCatalogToolDefinitions.
Co wyszło w review?
Review pokazało, że sama automatyzacja endpointu streamingowego to nie wszystko.
Ważne było również to, żeby testy były czytelne:
- test ma pokazywać intencję,
- szczegóły struktury streamu mogą być w helperach,
- dane mocka powinny być w jednym miejscu,
- dynamiczne pola trzeba sprawdzać strukturalnie,
- udokumentowane, ale niepotwierdzone zachowanie
404nie powinno zostać zamrożone jako test regresyjny.
Wynik testów
Po implementacji uruchomiono najpierw nowe testy:
npm test -- tests/api/ollama/chat-tools-definitions.get.spec.ts tests/api/ollama/generate.post.spec.ts tests/api/ollama/chat.post.spec.ts tests/api/ollama/chat-tools.post.spec.ts
Wynik:
11 passed
Następnie uruchomiono pełny suite:
npm test
Wynik:
59 passed
Po refaktorach testy uruchamiano ponownie. Ostatecznie:
- nowe testy Ollama:
11 passed, - pełny suite
l12:59 passed.
Finalny efekt sesji
Finalnie l12 ma pokrycie dla endpointów Ollama i pomocniczy parser SSE.
Najważniejszy efekt sesji:
- streaming został przetestowany jako lista zdarzeń, a nie jako surowy tekst,
- testy używają kontrolowanych scenariuszy mocka,
- testy zachowały standard projektu: klient HTTP, typy, fixture,
given/when/then, statusy w kolejności, api-test-plan.mdzawiera wyniki eksploracji i status implementacji,- finalny kod przeszedł review czytelności.
