Funkcja checkoutu przechodzi każdy test jednostkowy i wciąż dostarcza nie to: kryteria akceptacji żyły w zgłoszeniu Jira, którego nikt nie podał agentowi, więc AI optymalizowało pod “testy są zielone” zamiast pod “użytkownik faktycznie może to kupić”. Behavior-Driven Development zamyka tę lukę, czyniąc wykonywalną specyfikację — scenariusze Gherkin — źródłem prawdy, pod które agent koduje.
Asystenci AI są niezwykle dobrymi partnerami w BDD, bo cała metodologia jest “najpierw język naturalny”. Ty definiujesz zachowanie w Given/When/Then, agent generuje definicje kroków i implementację, a runner BDD jest obiektywną bramką, która mówi wam obojgu, czy zachowanie jest prawdziwe.
Powtarzalną pętlę, która zamienia plik .feature w definicje kroków, implementację i przechodzący pakiet.
Gotowe prompty do generowania definicji kroków Cucumber.js, implementacji pod kontrakt i doprowadzenia pakietu do zieleni.
Ścieżki wykonania w trzech narzędziach (Cursor, Claude Code, Codex) do przekazania agentowi pliku .feature i uruchomienia runnera.
Tryby porażki, które po cichu pokonują BDD sterowane AI — agent edytujący specyfikację, by testy przeszły, niestabilne kroki asynchroniczne — i jak je odgrodzić.
Przepływ pracy BDD z asystentem AI podąża za jasnym, współpracującym cyklem, który zapewnia, że finalny produkt odpowiada pożądanemu doświadczeniu użytkownika.
1. Zdefiniuj zachowanie (Given/When/Then)
Zaczynasz od napisania specyfikacji funkcji używając składni Gherkin (Given, When, Then). Opisuje ona scenariusz użytkownika prostym językiem. Możesz nawet współpracować z AI, by udoskonalić te historie użytkowników.
2. Wygeneruj definicje kroków
Przekazujesz plik .feature do AI i prosisz o wygenerowanie odpowiadających mu plików definicji kroków dla twojego frameworka testowego (np. Cucumber, Behat, SpecFlow). Początkowo będą one puste lub zawierać kod zastępczy.
3. Zaimplementuj funkcję
Mając już kontrakt behawioralny, instruujesz AI, by napisało kod aplikacji niezbędny do spełnienia scenariuszy w pliku .feature.
4. Uruchom, zweryfikuj i refaktoryzuj
Na koniec AI uruchamia testy BDD. Analizuje wszelkie niepowodzenia i iteruje nad kodem aplikacji, aż wszystkie scenariusze przejdą pomyślnie. Tworzy to ciasną pętlę sprzężenia zwrotnego napędzaną bezpośrednio przez zachowanie widoczne dla użytkownika.
Przejdźmy przez prawdziwą regułę od początku do końca: “Dodaj do koszyka” ograniczone stanem magazynu dla witryny sklepowej w Next.js, testowane Cucumber.js + Playwright na działającej aplikacji. Ciekawe zachowanie to nie “przycisk działa” — to granica: nie możesz dodać więcej sztuk, niż jest na stanie. Ten edge case to dokładnie to, co ginie, gdy kryteria żyją w zgłoszeniu, a nie w specyfikacji.
Przekaż agentowi plik .feature i poproś o typowane definicje kroków podpięte do Playwright. Sposób odwołania do pliku różni się per narzędzie — @-wzmianki to idiom Cursora, nie Claude Code czy Codeksa.
W trybie agenta wspomnij specyfikację przez @features/cart.feature, by była przypięta w kontekście, potem wklej prompt. Przejrzyj wygenerowane cart.steps.ts w widoku diffa przed akceptacją — inline’owy diff Cursora ułatwia wyłapanie kroku, który po cichu stubuje asercję.
Wskaż ścieżkę zwykłym tekstem (Read features/cart.feature) — w terminalu nie ma udogodnienia @-wzmianki. Claude Code wczytuje plik własnymi narzędziami i potrafi w jednej turze postawić katalog kroków. Trzymaj to w tej samej sesji, by pamiętał konfigurację World, gdy przejdziesz do implementacji.
Uruchom w powierzchni IDE lub CLI na worktree, który ma plik funkcji. Wskaż ścieżkę w prompcie; Codex sam otwiera plik. Na czystym worktree możesz pozwolić mu napisać katalog kroków i konfigurację cucumber.js w jednym tasku.
Mając już wykonywalny kontrakt, każ agentowi zbudować implementację — store koszyka, strażnika stanu magazynu i inline’owy błąd — aż scenariusze będą mogły przejść.
Nazwanie stacku (store Zustand, typowany wynik, inline’owy komunikat) powstrzymuje agenta przed wymyślaniem globalnej szyny zdarzeń albo biblioteki toastów, której nie używasz. Bariera “nie modyfikuj specyfikacji ani nie osłabiaj asercji” to pojedyncza najważniejsza linijka w BDD-z-AI — patrz “Kiedy to się psuje” poniżej.
Tryb agenta może uruchomić npm run test:bdd w zintegrowanym terminalu i odczytać wyjście, ale przy długiej pętli red-to-green lepszy jest agent w tle: przekaż mu pakiet i pozwól iterować, gdy ty pracujesz dalej, potem przejrzyj końcowy diff.
To najmocniejsza powierzchnia Claude Code: uruchamia pakiet narzędziem Bash, parsuje czytelny dla człowieka raport Cucumbera i iteruje w sesji. Ogranicz go przez --allowedTools (np. Edit, Bash), by mógł uruchamiać testy i łatać kod, ale ty zostajesz przy sterach reszty.
Uruchom pakiet z CLI/IDE Codeksa na worktree albo zrzuć go do Codex Cloud na dłuższy nienadzorowany przebieg red-to-green i przejrzyj wynikowy PR. Trzymaj zatwierdzenia na on-request (--ask-for-approval on-request), by pauzował przed czymkolwiek poza uruchomieniem pakietu i edycją kodu aplikacji.