9 июня 2026

Агент Tester — любой стек, один QA-слой

Как агент Tester в Datarim определяет тест-раннер проекта, запускает unit- и интеграционные наборы внутри Docker при наличии и выдаёт структурированные результаты.

Запуск тестов кажется простым, пока в одной инженерной организации не появляется дюжина разных стеков. Node с Vitest, Python с pytest, Rust с cargo test — у каждого своя команда, свой формат вывода, своё понимание того, что значит «пройдено». Агент Tester справляется с этим разнообразием, чтобы конвейеру не приходилось жёстко прописывать каждый вариант.

Определяющее качество агента — он ничего не предполагает. Он проверяет манифесты проекта, прежде чем решить, как что-то запускать, и проверяет, работает ли сервис в контейнере, прежде чем решить, где запускать тесты.

Что он делает

Определение начинается в корне проекта. Наличие package.json указывает на Node.js — затем второй проверкой читается блок scripts для выбора между npm, pnpm, Jest и Vitest. Cargo.toml означает Rust, go.mod — Go, и так далее. Если в CLAUDE.md проекта указаны пользовательские команды тестирования, они имеют приоритет перед автоопределёнными.

Осведомлённость о Docker меняет место запуска тестов, а не только способ. Если присутствует compose-файл и сервис запущен, тесты выполняются внутри контейнера — в той же среде, что использует CI. Если Docker не работает, агент переходит к хосту и предупреждает о различии. Для задеплоенных сервисов smoke-тесты API запускаются через curl по health-эндпоинтам, которые объявляет проект.

Для сайтов агент выполняет четыре конкретных проверки по порядку: HTTP-smoke для каждого публичного URL, паритет контента между языковыми файлами, визуальная проверка через скриншот и CSS-аудит на распространённые антипаттерны, такие как захардкоженные цвета или отсутствующие настройки движения.

Один конкретный пример

У backend-сервиса есть compose-файл с работающим контейнером. Tester проверяет, что контейнер запущен, затем выполняет docker compose exec api pnpm test. Результат приходит в виде структурированной таблицы: название набора, количество тестов, пройдено, провалено, пропущено, длительность. Каждый провал включает имя теста, сообщение об ошибке и путь к файлу — достаточно, чтобы найти строку без повторного запуска.

Где он в процессе

Tester работает на стадии /dr-qa, фазе контроля качества, вместе с агентом Reviewer. Задача Tester — выполнение и отчётность; задача Reviewer — суждение. Задача проходит QA, когда оба завершили свой проход.

Полный список агентов — на карточке агента Tester, а общую картину даёт пост что такое Datarim.