---
title: "Настройки визуального тестирования"
id: "2070"
type: "page"
slug: "visual-settings"
published_at: "2026-09-28T14:32:26+00:00"
modified_at: "2026-09-28T14:35:23+00:00"
url: "https://pastukhov.com/agents/test/docs/visual-settings"
markdown_url: "https://pastukhov.com/agents/test/docs/visual-settings.md"
excerpt: "Визуальные проверки — дело тонкое: где-то важна каждая деталь, а где-то мешает анимация. Поэтому у…"
---

# Настройки визуального тестирования

[https://pastukhov.com/agents/test/docs/visual-settings.md](https://pastukhov.com/agents/test/docs/visual-settings.md)

Визуальные проверки — дело тонкое: где-то важна каждая деталь, а где-то мешает анимация. Поэтому у них есть отдельные настройки. Хорошая новость: у каждой настройки есть разумное значение по умолчанию, поэтому проект без настроек работает ровно так же, как проект с рекомендованными.

Настройки хранятся в файле проекта, в разделе `visual:`. Их можно править прямо в интерфейсе, а можно посмотреть итог и скопировать его готовым текстом.

## Пресеты приложений

Начать удобнее с готового профиля: восемь пресетов описывают типовые случаи. Один выбор заменяет тридцать полей.

- **SaaS-дашборд** — плотные внутренние экраны: строгое сравнение по пикселям с маскировкой динамических зон.
- **Маркетинговый сайт** — публичные страницы с анимированными баннерами: снимки всей страницы и мягкие пороги.
- **Canvas и WebGL** — приложения на холсте: сравнение только раскладки плюс маски на области рисования.
- **Электронная коммерция** — каталоги и оформление заказа: включён текстовый слой, чтобы ловить изменения цен и текстов.
- **Документация** — справка и блоги: снимки всей страницы, терпимые к смене контента.
- **Сначала мобильные** — продукты, где телефон важнее: размер 390×844 снимается раньше настольного.
- **SPA-приложения** — одностраничные приложения: дополнительный последовательный кадр выявляет мерцание при отрисовке.
- **CMS-системы** — редакторские интерфейсы: текстовый слой и слой DOM пишутся в журнал.

Честная оговорка: применение пресета **перезаписывает всю визуальную настройку целиком**, включая ваши правки. Отменить это можно только новой правкой, поэтому выбирайте пресет до тонкой настройки.

## Съёмка

Раздел «Съёмка» отвечает на вопрос, что и как снимается. Здесь задаётся тип съёмки по умолчанию: видимая область, вся страница, компонент или отдельный элемент.

Дальше — **матрица размеров окна**: по снимку на каждый размер. Так одна и та же страница проверяется и на широком мониторе, и на телефоне.

**Маски** — именованные области, которые закрашиваются перед сравнением. Это то, что меняется само по себе и не должно считаться отличием: часы, «2 минуты назад», аватары, рекламные блоки. Маска задаётся либо правилом выбора элемента, либо прямоугольником с координатами; у неё есть имя и цвет. **Игнорируемые элементы** — похожий приём: они закрашиваются чёрным и не показываются с именем и рамкой.

## Стабилизация

Прежде чем снять кадр, продукт делает страницу спокойной — иначе два снимка одного и того же экрана отличались бы сами собой. Все приёмы включены по умолчанию, потому что дрожащий снимок хуже строгого.

- **Заморозить время** — тикающие часы и таймеры обратного отсчёта перестают показывать новый момент на каждом снимке.
- **Просеять генератор** — случайные номера и перетасованные списки перестают менять раскладку.
- **Отключить анимации** — кадр не ловит полупрозрачный элемент в середине движения.
- **Скрыть каретку** — мигающая палочка ввода не создаёт отличие.
- **Нормализовать полосу прокрутки** — она рисуется одинаково на разных системах.
- **Ждать тишину сети** — поздние ответы не перерисовывают страницу уже после снимка.
- **Ждать успокоения страницы** — приложение перестаёт менять разметку.
- **Ждать шрифты** — подмена шрифта не сдвигает все размеры.
- **Блокировать сторонние домены** — реклама и счётчики не показывают разный креатив; нужные домены можно внести в список разрешённых.
- **Последовательные кадры** — если их больше одного, снимается несколько кадров и сравниваются между собой: мимолётное дрожание проявляется как «нестабильно», а не попадает в отличие.

## Слои проверок и пороги

Проверка состоит из нескольких слоёв, и у каждого свой режим: «строго» — падение валит сборку, «в журнал» — записывается без провала, «выключен» — слой пропускается совсем. Слои такие: визуальный, текст, сеть, консоль, доступность, дизайн-токены, производительность и адреса.

Пороги визуального слоя задают, что считать отличием:

- **Максимум пикселей расхождения** — абсолютный предел; пустое значение выключает ограничение.
- **Допустимая доля пикселей расхождения** от 0 до 1 — тоже выключается пустым значением.
- **Чувствительность к цвету** — пиксели с меньшей разницей не считаются.
- **Допуск цвета** — цвета, различимые меньше этого порога, для большинства людей неразличимы.
- **Требовать одинаковые размеры**, **только раскладка** и **определять вертикальный сдвиг** — три отдельных правила для особых случаев.

Чтобы не подбирать числа вручную, есть три готовых набора чувствительности: строгая (порог 0,1), рекомендуемая (сохраняет ваши числа; по умолчанию порог 0,2) и мягкая (порог 0,3).

## Ветки

У вашего приложения могут быть ветки — версии кода, над которыми идёт работа. Настройки говорят, как вести себя с каждой:

- **Ветка по умолчанию** — с чем сравнивается сборка, если у её собственной ветки нет одобренного эталона. Это запасной вариант.
- **Ветки с авто-одобрением** — сборки на подходящих ветках могут сами принять заведомо безопасные отличия. Пустое значение — нигде.
- **Ветки с обязательным ревью** — сборки на подходящих ветках всегда требуют решения человека. Пустое значение — таких веток нет.

Шаблоны веток записываются привычным способом: `*` — внутри одного отрезка пути, `**` — через несколько. Например, `release/*` или `feature/**`.

Эталоны привязаны к ветке с откатом к ветке по умолчанию: сборка сначала сравнивается со своим эталоном, а если его нет — с эталоном основной ветки. Историю репозитория тестируемого приложения продукт не читает, поэтому никаких сложных вычислений общего предка здесь нет.

## ИИ и бюджеты

Искусственный интеллект подключается только там, где без него трудно. У него есть главный выключатель, а по умолчанию включены две задачи: **разбор неоднозначных отличий** (последний шаг сравнения, где простые правила не справились) и **разбор упавших сборок** (группировка и пояснение). Модель можно задать отдельно; если не задавать, берётся модель агента проекта.

Поставщик ИИ здесь один — подключённый Pastukhov Agent, прямых обращений к чужим моделям нет. Повторные сборки ничего не стоят: сначала отвечает обычное сравнение, и только неоднозначное уходит модели.

Обращения к ИИ стоят денег, поэтому есть потолки — **предохранители**: токенов на задачу и на кампанию, число починок на тест и на сборку, сколько кампаний починки идёт одновременно и остановка, когда одна и та же ошибка повторяется без изменений. Потолок на кампанию проверяется на границах её фаз, а не в середине работы. Важно: **предохранители останавливают расход, но ничего не одобряют** — ни план, ни тест.

## Уведомления

Продукт умеет стучаться наружу: указывается адрес уведомлений, куда уходит короткое сообщение о событии, и есть кнопка «Отправить тестовый вебхук» для проверки связи. Уведомления отправляются на два события — «требуется ревью» и «сборка упала».

У события есть порог, поэтому уведомление приходит, только когда порог преодолён: отличие в один пиксель никого не разбудит.

## Действующая конфигурация

Внизу настроек видно **действующую конфигурацию** — итог со всеми подставленными значениями по умолчанию, ровно то, что записалось бы при сохранении. Её можно скопировать готовым текстом, а рядом виден список ошибок проверки.

Полезная мелочь: если настройка сломана, это не мешает читать данные — просто начинают действовать значения по умолчанию, а сама ошибка честно показана. Неверную правку продукт не примет и файл на диске не тронет.

Дальше: пошаговый порядок запуска — в разделе [Чек-лист настройки](/agents/test/docs/checklist)
.

[← Оглавление документации](/agents/test/docs)
