Скил playwright-qa — реальный браузер для проверки фронтенда
Как скил playwright-qa в Datarim запускает настоящий браузер на стадии /dr-qa, автоматически выбирает нужный инструмент и сохраняет скриншоты и трейсы как проверяемые артефакты.
Изменения в коде фронтенда легко ломаются незаметно. CSS-правка сдвигает вёрстку, PHP-шаблон рендерит некорректный HTML — и единственные тесты, которые это поймают, визуальные. Скил playwright-qa определяет, когда и как запускается реальный браузерный прогон внутри стадии /dr-qa.
Детектирование: включается по изменённым файлам
Скил не активен постоянно. Он срабатывает только тогда, когда среди изменённых файлов задачи есть хотя бы один файл фронтенда — .html, .css, .tsx, .vue, .svelte, а также PHP-файлы, тело которых содержит HTML-разметку. Детектирование выполняется через git diff --name-only от origin/main — база настраивается через переменную DATARIM_FRONTEND_BASE. Задачи, затрагивающие только бэкенд, браузерный прогон не получают.
Цепочка выбора инструмента
Скил не привязан к конкретному инструменту. Скрипт dev-tools/detect-playwright-tooling.sh проходит пять шагов. Сначала проверяется переменная-override DATARIM_PLAYWRIGHT. Если её нет — ищется бинарный файл playwright в PATH. Если отсутствует — проверяется Playwright MCP-сервер. На четвёртом шаге ищется браузер через BROWSER, PLAYWRIGHT_BROWSER_PATH или CHROME_PATH. Когда цепочка заканчивается без результата — значение none, пятый и финальный исход, фиксируется как находка, а не как жёсткий сбой.
Режимы headed и headless
По умолчанию прогон идёт в headless-режиме. Флаг --headed для /dr-qa запрашивает видимое окно браузера с мягким откатом на headless, если дисплей недоступен. Более строгий --headed-strict прерывает прогон целиком, если $DISPLAY отсутствует — удобно для локальных запусков, где видимый браузер обязателен. Те же режимы задаются на уровне задачи через ключ qa_browser_mode во фронтматтере.
Артефакты и параллелизм
Каждый прогон сохраняет результаты в datarim/qa/playwright-{ID}/run-{ISO-timestamp}/: скриншот, трейс Playwright, объединённый лог и summary.md с записью об использованном инструменте, режиме, коде выхода, находках и целевом URL. Символическая ссылка latest/ всегда указывает на последний прогон. Когда несколько агентов запускают /dr-qa параллельно по одной задаче, они сериализуются на файле-блокировке через flock — артефакты не перезаписываются.
Полный контракт скила — в справочнике playwright-qa, а общая картина — в посте что такое Datarim.