Всем привет - хочу поделиться сегодняшним интересным кейсом при разработке SpecaFlow
В процессе очередного прогона фичи, я одобрил выполнение скрипта моделью (так как в SF настроках включено ручное подтверждение команд разработчиком) и у меня пропала сеть в WSL, где ведется разработка
Стал разбираться и выяснилось вот что, в начале разработки моего проекта с помощью SpecaFlow я в опроснике сообщил что проект будет выполняться в изолированном контуре (без интернета), и в плане проекта четко прописано требование проверить работу окружения без интернета, что модель честно и сделала на фазе verify: она погасила сетевой интерфейс на время чтобы проверить и потом включить его. Ран упал конечно же, так как SF просто потерял провайдера ИИ
Ранее я уже закладывал механику фактов о системе в промпт, и она работает на каждой фазе, SF сообщает и модель знает в какой среде она работает, чем выполняются команды (sh, bash), какая сегодня дата и т.д. Но тут я понял что модель не знает особенности сетевого контура от которого зависит, она буквально не знает что сидит на сетевом соединении системы.
Я принял решение добавить в промпт фактов информацию о том, что сетевой контур это инструмент работы, и его гашение означает обрыв текущего рана. Так же добавил максимальное время выполнения shell команд из настроек, такие детали позволяют модели планировать работу с окружением без ошибок и с учетом её особенностей.
Погашеный сетевой интерфейс я конечно поднял, и запустил ран уже на свежем бинаре где были новые правки - больше модель не стала пилить сук, на котором сидит и закончила ран чисто, а так как в плане осталось требование “проверить в изолированном окружении” - модель извлекла урок из фичи и передала его обратно в план чтобы скорректировать этот кейс!
В новом проекте конечно модель уже напишет чистый план (так как знание о сетевом окружении будет изначально) и не будет требовать такого в чистом виде, но даже с починкой в середине проекта бинарь доказал что способен сам себя поправить, и что механики обратной совместимости спек отрабатывают успешно.
Вот так развивается и работает SpecaFlow на реальных кейсах, в этом его сила!