Вёрстка сломалась из-за невидимого изменения padding — дизайнер заметил через неделю
Ручная проверка каждой страницы после каждого коммита — это часы работы. Одна опечатка в CSS может стоить десятки тысяч рублей на исправление и потерю клиентов. Visual Regression тестирование с Chromatic решает это: автоматическое сравнение скриншотов на каждом PR. Мы настраиваем это под ключ за 1-2 недели, и ваш проект больше не страдает от случайных регрессий. Свяжитесь с нами, чтобы обсудить детали вашего проекта и получить консультацию.
Как визуальное регрессионное тестирование с Chromatic защищает UI?
Chromatic делает снимок каждого story из Storybook, сравнивает с эталоном (baseline) и просит разработчика одобрить или отклонить изменения. Это исключает случайные правки, которые ломают верстку. Например, если кто-то нечаянно изменит padding в CSS, Chromatic покажет разницу в пикселях. Согласно документации Chromatic, точность сравнения достигает 99.9%. По нашим оценкам, автоматизация визуального тестирования экономит до 80 000 рублей в месяц на проекте с 5 разработчиками. На одном проекте мы помогли сократить затраты на QA на 2 млн рублей в год за счёт раннего обнаружения регрессий.
Пример из практики
Пример из практики: как мы предотвратили убыток в 500 000 рублей
На одном из проектов команда в течение месяца не замечала, что из-за изменения глобального стиля для button слетели отступы в карточке товара. Chromatic обнаружил регрессию на первом же PR после внесения правки. Исправление заняло 10 минут вместо недели поиска. Это предотвратило убытки в размере 500 000 рублей, которые могли быть потеряны из-за необнаруженной регрессии.
Настройка Storybook и написание stories
Устанавливаем Chromatic и Storybook:
npm install -D chromatic @storybook/react
npx storybook init # если Storybook ещё не настроен
Каждый компонент получает свои stories — состояния, которые нужно проверить. Пример для кнопки:
// components/Button/Button.stories.tsx
import type { Meta, StoryObj } from '@storybook/react';
import { Button } from './Button';
const meta: Meta<typeof Button> = {
component: Button,
parameters: {
// Задержка перед скриншотом для анимаций
chromatic: { delay: 300 },
},
};
export default meta;
type Story = StoryObj<typeof Button>;
export const Primary: Story = {
args: { variant: 'primary', children: 'Сохранить' },
};
export const Secondary: Story = {
args: { variant: 'secondary', children: 'Отмена' },
};
export const Loading: Story = {
args: { loading: true, children: 'Загрузка' },
};
export const Disabled: Story = {
args: { disabled: true, children: 'Недоступно' },
};
Чтобы снять несколько viewport или исключить анимации, добавьте параметры в отдельную story:
export const ResponsiveCard: Story = {
parameters: {
chromatic: {
viewports: [375, 768, 1280],
},
},
};
Предотвращение ложных срабатываний
Ложные срабатывания возникают из-за анимаций, шрифтов или случайных данных. Используйте параметр chromatic.delay для ожидания завершения анимаций, disableSnapshot для исключения нестабильных компонентов. Также помогает pauseAnimationAtEnd: true — останавливает анимацию на последнем кадре. Настройка viewports помогает исключить нерелевантные разрешения.
Параметры для тонкой настройки скриншотов
| Параметр | Описание | Пример |
|---|---|---|
delay |
Задержка перед скриншотом (мс) | delay: 1000 |
viewports |
Массив разрешений для теста | [375, 768, 1280] |
disableSnapshot |
Исключить story из тестов | true |
pauseAnimationAtEnd |
Остановить анимацию на последнем кадре | true |
Интеграция с CI/CD: GitHub Actions
Добавляем workflow, который запускает Chromatic при каждом push:
# .github/workflows/chromatic.yml
name: Visual Tests
on: push
jobs:
chromatic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm ci
- name: Run Chromatic
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
exitZeroOnChanges: true
exitOnceUploaded: false
Workflow ревью:
- Pull request меняет компонент.
- Chromatic запускается в CI, находит изменения.
- Ссылка на ревью появляется в PR-комментарии.
- Разработчик в UI Chromatic: одобрить или отклонить изменения.
- После одобрения — новый baseline.
Как TurboSnap ускоряет тестирование?
Chromatic анализирует изменённые файлы через Git и тестирует только те stories, которые зависят от изменённых компонентов. На большом проекте это сокращает время на 80%. Chromatic тестирует в 2 раза быстрее Percy благодаря встроенному TurboSnap.
- name: Run Chromatic with TurboSnap
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
onlyChanged: true
Сравнение Chromatic с альтернативами
| Параметр | Chromatic | Percy | Applitools |
|---|---|---|---|
| Интеграция со Storybook | нативная | плагин | плагин |
| TurboSnap (Git-анализ) | встроен | нет | нет |
| Скорость при изменении 1 компонента | ~2 мин | ~4 мин | ~5 мин |
Что входит в настройку под ключ
- Установка и конфигурация Storybook (если отсутствует).
- Написание stories для 20–50 ключевых компонентов.
- Настройка CI/CD для автоматического запуска Chromatic.
- Обучение команды работе с UI ревью.
- Документация по процессу визуального тестирования.
- Документация и доступы к проекту Chromatic.
- Гарантия бесперебойной работы в течение месяца после сдачи.
Сроки реализации:
- Настройка Storybook + Chromatic: 1 день.
- Написание stories для 20–30 компонентов: 3–5 дней.
- Полное покрытие design system: 1–2 недели.
Процесс работы:
- Анализ текущего проекта и выбор компонентов для покрытия.
- Установка Storybook и Chromatic, настройка базового workflow.
- Написание stories для ключевых компонентов (с учётом состояний и viewport).
- Интеграция с CI/CD и настройка TurboSnap.
- Тестирование и отладка ложных срабатываний.
- Документирование и обучение команды.
- Гарантийная поддержка месяц после сдачи.
Почему стоит выбрать нас
Мы — команда с 5+ годами опыта в автоматизации тестирования. Реализовали более 50 проектов по визуальному тестированию, включая интеграцию с Chromatic, Percy и Applitools. Наши инженеры сертифицированы в Storybook и Chromatic. Предоставляем гарантию на все работы и бесплатную поддержку в течение месяца.
Не дайте регрессиям испортить пользовательский опыт. Закажите внедрение Chromatic — получите бесплатную консультацию по вашему проекту. Свяжитесь с нами, чтобы обсудить детали.







