Эволюция запуска E2E-тестов в нашем проекте
Пора признаться: в нашем проекте есть проблема — мы не успеваем писать E2E-тесты... так как мы не успеваем писать E2E-тесты, за нас их пишут LLM, и они справляются лучше человека!
Также у нас в проекте используется Editor.js, и если вы знаете, то знаете: тестировать Editor.js — боль. Большинство элементов просто не имеют селекторов, их приходится находить по CSS классам, а при запуске в Playwright эти самые элементы ведут самым непредсказуемым образом, отлично от того, как они ведут себя в браузере: могут не появиться, либо появиться с большой задержкой, либо появиться, но Playwright почему-то не будет в упор видеть их и подобных проблем огромное количество. Благо можно дать задачу LLM по-умнее и она за тебя сделает всю грязную работу: потыкает, найдёт почему не работает и исправит (само собой обычных возможностей LLM будет недостаточно, нужно подключать Playwright MCP, чтобы моделька творила свои непотребства в браузере самостоятельно — если нужно раскрыть эту тему подробнее, дайте знать).
Но до выхода Gemini 3 Pro LLM не могли решить одну нашу проблему: корректно написать локальный запуск E2E-тестов с поднятием всех необходимых зависимостей. Да, чего уж греха таить, мы и сами не могли справиться с этой задачей из-за сложности системы и ограниченного количества времени. Теоретически, если бы мы потратили целый спринт на эту задачу, то мы бы с ней разобрались, но в ситуации, где бизнес ожидает от вас продукт ещё вчера эта, ситуация только и остаётся теоретической.
Как мы писали запуск E2E-тестов в хронологическом порядке:
— Разработчик и тестировщик (февраль 2025): научились запускать тесты, но только в CI/CD, а данные для запуска тестов подтягивалсь с прода т.е. отследить баг, который возник при разработке можно было только ретроспективно, из-за чего тесты во многом теряли свой смысл;
— Claude Sonnet 4 (июнь 2025): LLM дала нам несколько подсказок (но не решение), которое помогло самим реализовать подтягивание данных не с прода, а с конкретного рана в CI/CD. Тесты стали полезнее, но до сих пор оставалась фрустрация в связи с тем, что для написания тестов приходилось постоянно пушить коммиты в ветку;
— GPT-5 (8 августа 2025): она позволила создать нам отдельный скрипт, который в свою очередь позволил запускать тесты локально. Да, работало оно криво-косо, руками ничего не поправить, так как в файле было спагетти, но локальный запуск тестов позволил нам сильно увеличить количество покрытых сценариев, а также избавить от фрустрирующих пушей в ветки для запуска тестов;
— Gemini 3 Pro (ноябрь 2025): к этому моменту в целом всё уже стабильно работало. Было всего пару претензий: невозможно что-то исправить в скрипте для запуска, так как 100% что-то поломаешь, сам запуск был долгим, а также тесты запускались только в UI-оболочке т.е. LLM не могли нормально их гонять из терминала. Со всем этим можно было жить и мы так бы и жили, но Gemini 3 Pro перевернула игру и всего за один промпт решила все три проблемы. Запуск стал мгновенным, от костыльного скрипта не осталось и следа, а сама конфигурация расползлась по нужным файлам, где изначально и должна была жить.
Мне очень нравится вся эта ситуация, так как она наглядно показывает как то, насколько модели продвинулись за столь короткий промежуток времени, так и то, где LLM показывают себя лучше всего: на стыке, где человек знает, что ему нужно и как это сделать, но при этом задача всё равно никогда не была бы закрыта из-за внешних факторов.
Post #31
166
- 🔥 2
- ❤ 1
- 👍 1