Files
main/.ai/conventions/testing.md
T
ksv741 93dd5539ad
Workspace security / security (push) Successful in 7s
Workspace verify / verify (push) Successful in 20s
Workspace security / security (pull_request) Successful in 6s
Workspace verify / verify (pull_request) Successful in 20s
Conventional commits / commits (pull_request) Successful in 10s
docs: establish workspace engineering conventions
2026-09-15 05:42:02 +03:00

28 lines
2.3 KiB
Markdown

# Test Intent
Перед нетривиальным тестом сформулируй наблюдаемый результат и риск регрессии
в описании задачи/PR, рядом с тестом либо в рабочем отчёте. Отдельный artifact
не обязателен. Для trivial low-risk изменения отдельный Test Intent не нужен.
Краткая форма, только применимые пункты:
- **Поведение:** что увидит пользователь/caller и какую ошибку должен поймать тест.
- **Варианты и границы:** значимые альтернативы, edge/error states, concurrency.
- **Исключено:** какие детали реализации не являются контрактом.
- **Уровень:** самая дешёвая boundary, которая надёжно различает правильный
и сломанный исход; критерии — в local testing convention.
Пример: «Два refresh с одним token: один успешный ответ, второй 401;
новая session остаётся рабочей. Проверить на реальной изолированной SQLite.
Не проверять порядок private calls». Mock race не доказывает DB atomicity.
Для каждого теста ответь: «Какой regression он обнаружит?» Не создавай
`Foo.test.tsx` из-за появления `Foo.tsx`. По умолчанию не тестируй obvious JSX,
CSS classes, каждый wrapper/aria attribute, decorators, trivial CRUD wiring,
framework и сторонние библиотеки. Проверяй доступность через пользовательское
действие/смысл, когда это риск; декларативный атрибут сам по себе не test intent.
Bug fix сначала воспроизводит исход на responsible boundary. После подходящих
проверок остановись: количество тестов и coverage ради coverage не являются целью.
Новые harness/framework/fixtures не нужны, когда существующий setup покрывает риск.