Применяется к каждой форме во всех зонах. Прогоняется один раз при первом тестировании формы + регрессионно после любого фикса формы.
Контекст: в базе ~10 багов про валидацию (нет maxlength, ошибки на латинице, нет сообщений, фокус теряется, отрицательные значения проходят). Это системная проблема. Этот чек-лист — её ловушка.
Как использовать
Для каждой формы создаётся отдельный test case вида:
## TC-T{#}-{AREA}-VAL — Validation: {Form name}
**Type:** Negative
**Priority:** P1
**Regression:** yes
### Preconditions
- Открыта форма {URL / путь}
### Steps
Прогнать [02-form-validation-checklist.md](../../02-form-validation-checklist.md) — все пункты применимые к форме.
### Expected
- Все обязательные поля имеют валидацию по типу
- Все ошибки на русском
- Сохранение блокируется при невалидных данных
- Фокус сохраняется при вводе
- Подсказки показываются inline под полем
Чек-лист: 6 секций
1. Базовое поведение формы
#
Проверка
Ожидание
Известные баги
1.1
Открыть форму
Все поля и кнопки видны, форма не сломана
1.2
Кликнуть в каждое поле
Фокус устанавливается, label корректно показан
1.3
Ввести 1 символ в поле
Фокус остаётся в поле, символ виден
BUG: ЮЛ Создать — фокус теряется со строки
1.4
Tab по полям
Tab-order логичный (сверху вниз, слева направо)
1.5
Esc / клик вне модалки
Закрытие с подтверждением если есть несохранённые данные
1.6
Очистить все поля
Можно очистить через Backspace / Ctrl+A+Delete
1.7
Реакция на медленный ввод
Нет debounce-проблем (поле не сбрасывается при паузе)
1.8
Шрифты и стили полей
Все input одинакового шрифта (НЕ textarea-style для одиночных)
BUG: Каталог Товары/Ингредиенты — Описание в шрифте area
2. Обязательные поля
#
Проверка
Ожидание
2.1
Submit с пустыми обязательными
Блокируется. Inline-ошибка под полем «Поле обязательно»
2.2
Submit с одним пустым обязательным
Блокируется. Скролл / фокус на первое невалидное
2.3
Submit после заполнения всех
Проходит на backend
2.4
Звёздочка * у label
Visible для каждого обязательного
3. Типы данных
3.1 Текстовые поля (Имя, Фамилия, Название и т.д.)
#
Проверка
Ожидание
Известные баги
3.1.1
Только пробелы
Отклонить с «Поле не может быть пустым»
BUG: Модификаторы — опции принимают пробел
3.1.2
255 символов без пробелов
Отклонить или truncate. Не должно ломать вёрстку
BUG: Категории — 255 символов ломают вёрстку, 409 при редактировании
3.1.3
Превышение maxlength
Stop input при достижении лимита, либо валидация при submit
BUG: Модификаторы — нет maxlength=255
3.1.4
Очистить и сохранить
Отклонить, не сохранять предыдущее тихо
BUG: Категории — пустое название сохраняется без ошибки
3.1.5
Спецсимволы (<>"'&)
Принять и корректно отобразить (не XSS, не сломать вёрстку)
3.1.6
Эмодзи
Принять либо отклонить с понятной ошибкой
3.1.7
Пробелы в начале/конце
Trim при сохранении
3.2 Email
#
Проверка
Ожидание
3.2.1
Без @
Отклонить «Некорректный email»
3.2.2
a@b (без TLD)
Отклонить
3.2.3
a@b.c
Принять
3.2.4
UPPERCASE
Принять, нормализовать в lowercase
3.2.5
Дубль (UNIQUE constraint)
Отклонить «Email уже используется»
3.3 Телефон
#
Проверка
Ожидание
Известные баги
3.3.1
+7 (XXX) XXX-XX-XX
Маска применяется, хранится как +79991234567
3.3.2
Без +7
Подставить или отклонить
3.3.3
Буквы
Отклонить
3.3.4
Меньше 11 цифр
Отклонить «Некорректный телефон»
BUG: ЮЛ Создать — нет сообщений об ошибке у Телефон
3.3.5
Зарубежный номер
Отклонить или принять (по решению)
3.4 Числовые (цены, ставки, кол-во)
#
Проверка
Ожидание
Известные баги
3.4.1
Отрицательное значение
Отклонить (если >= 0 по правилу)
BUG: Формулы зарплат — Ставка в час принимает -1
3.4.2
Ноль
Принять или отклонить (по правилу)
3.4.3
Дробное (запятая vs точка)
Поддержать оба разделителя
3.4.4
Очень большое (10^15)
Отклонить или ограничить
3.4.5
Буквы
Отклонить
3.4.6
Min > Max
Отклонить «Минимум должен быть ≤ максимума»
BUG: Модификаторы — нет валидации min/max
3.5 ИНН / КПП / ОГРН / БИК / счёт
#
Проверка
Ожидание
Известные баги
3.5.1
ИНН: ровно 10 или 12 цифр
Отклонить иное
3.5.2
ИНН: контрольная сумма
Отклонить «Некорректный ИНН» если не сходится
3.5.3
КПП: 9 цифр
Отклонить иное
BUG: КПП — валидация на латинице
3.5.4
КПП: латиница
Отклонить
3.5.5
ОГРН: 13 или 15 цифр
Отклонить иное
3.5.6
БИК: 9 цифр
Отклонить иное
BUG: ЮЛ — нет сообщений об ошибке у БИК
3.5.7
Расч.счёт / Корр.счёт: 20 цифр
Отклонить иное
BUG: ЮЛ — нет сообщений у Расч.счёт, Корр.счёт
3.5.8
Дубль ИНН в рамках franchise
Отклонить «ИНН уже используется»
3.5.9
ИНН после создания
Поле readonly
3.6 PIN
#
Проверка
Ожидание
3.6.1
Ровно 4 цифры
Принять
3.6.2
3 или 5 цифр
Отклонить
3.6.3
Буквы / спецсимволы
Отклонить
3.6.4
Дубль в рамках ТТ
Отклонить «PIN уже используется в этой ТТ»
3.6.5
0000, 1234
Принять или предупредить (по правилу безопасности)
3.7 Даты / время
#
Проверка
Ожидание
3.7.1
Прошедшая дата (для будущих расписаний)
Отклонить
3.7.2
Время 25:00
Отклонить или нормализовать
3.7.3
Открытие после закрытия
Принять (работа через полночь) либо предупредить
3.8 Координаты (latitude / longitude)
#
Проверка
Ожидание
Известные баги
3.8.1
Latitude вне [-90, 90]
Отклонить
3.8.2
Longitude вне [-180, 180]
Отклонить
3.8.3
Вставка из 2gis (обе координаты в одну)
Желательно: распарсить в оба поля
BUG: ТТ Создать — не вставляются одним действием
3.9 Файлы (импорт xlsx, фото)
#
Проверка
Ожидание
Известные баги
3.9.1
Корректный xlsx
Принять
BUG: ЮЛ Импорт — Unsupported Media Type
3.9.2
Не xlsx (csv, txt, jpg)
Отклонить «Только .xlsx»
3.9.3
Файл > лимита (10 000 строк / N MB)
Отклонить
3.9.4
Пустой файл
Отклонить
3.9.5
Битый файл
Отклонить с понятной ошибкой
4. Сообщения об ошибках
#
Проверка
Ожидание
Известные баги
4.1
Язык сообщений
Русский
BUG: КПП валидация на латинице, ЮЛ/Сотрудники — ошибки на латинице
4.2
Расположение
Inline под полем
4.3
Стиль
Красный текст / иконка / красная рамка поля
4.4
Скрытие
После исправления — сообщение пропадает (не ждёт submit)
4.5
Множественные ошибки
Все показаны одновременно, не по одной
4.6
Backend ошибка (500/422)
Показать toast/notification, не молча
4.7
Технические ошибки
Не показывать stack trace / ID транзакции конечному пользователю
5. Поведение при сохранении
#
Проверка
Ожидание
Известные баги
5.1
Successful save
Toast «Сохранено», редирект или закрытие модалки
5.2
Save при невалидных
Кнопка «Сохранить» disabled или клик игнорируется (не отправлять запрос)
BUG: Зарплата — позволяет подтвердить ведомость с ошибкой
5.3
Двойной клик «Сохранить»
Не создаёт дубликат (debounce / disable после клика)
5.4
Save → 500 ошибка
Toast с ошибкой, форма не закрывается, данные не теряются
BUG: Сотрудник Создать — 500. Шаблон смены — 500. Формула зарплаты — 500
5.5
Save → 422
То же
BUG: Создание смены вручную — 422. Экспорт CSV — 422
5.6
Cancel после изменений
Подтверждение «Несохранённые изменения будут потеряны»
6. UI/UX-консистентность
#
Проверка
Ожидание
Известные баги
6.1
Все textarea с одинаковым стилем
Шрифт как у input
BUG: Описание — area-шрифт
6.2
Textarea — auto-resize / max-height
Не растягивается бесконечно
BUG: Описание товара — безграничная высота
6.3
Textarea — длинные строки без пробелов
word-wrap, не выходит за границы
BUG: Описание товара — выходит за пределы страницы
6.4
Технические коды НЕ видны
UI показывает названия, не ID/permission keys
BUG: Сотрудники — фильтр «Все роли (permissions)». Ведомости — техкод в Действия. Формулы — техкод у «Ставка в час»