Разработчик показал, как дообучить компактную кодовую LLM так, чтобы она превращала требования на обычном английском в готовые E2E‑тесты для Playwright или Cypress. Важная деталь — всё запускается локально через Ollama, без API‑ключей и передачи разметки страниц наружу.
В разработке и QA всё чаще хочется «сократить путь» от требований до проверяемого результата. Свежий эксперимент показывает, что для этого не обязательно держать подключение к облаку: компактную модель на 1,5 млрд параметров удалось обучить писать end‑to‑end тесты так, чтобы она работала на обычном ноутбуке и не требовала внешних API.
Что именно сделали
Автор дообучил Qwen2.5-Coder-1.5B-Instruct на задачу: получить текстовое требование на английском и вернуть готовый файл теста для Playwright (TypeScript) или Cypress (JavaScript).
Ключевая цель — практичность в корпоративных условиях: без передачи HTML/разметки страниц, без ключей доступа и без «утечек» в сторонние сервисы. Модель предполагается использовать локально, в том числе в закрытых контурах.
Почему интересен не сам fine-tune, а данные
Само дообучение в формате SFT давно стало стандартной техникой. Здесь любопытнее другое: датасет «вырастили» из уже существующего облачного инструмента, который генерировал E2E‑тесты. По сути, облачный помощник помог собрать корпус примеров для более дешёвой локальной альтернативы.
Как собирали обучающие примеры
Чтобы примеры не расползались по качеству, автор использовал простую, но жёсткую фильтрацию. Генерация шла по заранее подготовленной «банке» требований (логин, формы, выпадающие списки, таблицы, ожидания, e-commerce‑сценарии) и прогонялась по трём публичным демо‑сайтам: the-internet, demoqa, saucedemo.
В датасет попадали только файлы, прошедшие механические проверки:
- без невалидных селекторов;
- без жёстких
sleep; - без выдуманных путей/структур;
- с корректным JSON там, где это ожидается.
В итоге осталось 202 чистые пары: 95 примеров для Playwright/TypeScript и 107 для Cypress/JavaScript. Данные сохранены в chat‑формате (JSONL), пригодном для обучения через TRL.
Ограничение, о котором важно помнить
Автор отдельно подчёркивает: тесты пока не проходили автоматическую проверку запуском на целевых сайтах. То есть ожидаемые значения могли быть «придуманы» моделью, а не взяты из реально выполненного прогона. Логичное направление для следующей версии — добавить gate, который пропускает в датасет только сценарии, реально отработавшие при исполнении.
Как это запускается локально
Модель рассчитана на локальный запуск через Ollama. Пример команды, который приводит автор:
ollama run hf.co/aiqualitylab/ai-natural-language-tests
Заявленный объём загрузки — около 1,6 ГБ: скачали один раз, дальше можно работать полностью офлайн.
Практический смысл для команд разработки
- Снижение цены экспериментов. Вместо постоянных обращений к API можно держать «тестового помощника» локально и использовать его для черновиков.
- Конфиденциальность. Удобно там, где требования, названия функций и структура проекта не должны покидать периметр.
- Фокус на формате. Авторский вывод: если базовая модель уже хорошо пишет код, небольшого дообучения достаточно, чтобы «прибить» стиль и структуру под нужный выход (Playwright/Cypress), а не переучивать программирование.
В качестве итогового тезиса автор формулирует простую идею: рабочий облачный инструмент может сам создать данные, чтобы обучить свою более дешёвую локальную замену — и для этого не нужен гигантский датасет, важнее стабильность и чистота примеров.
