� Стратегія Тестування, Рев'ю Коду та Запобігання Помилкам — SmartFeed Studio
📌 1. Рівні Тестування та Покриття (158 Тестів — 100% PASS)
У проекті запроваджено комплексну багаторівневу піраміду тестування:
pie title Розподіл Автоматизованих Тестів (158 всього) "Бекенд Jest E2E (81 тест)" : 81 "Десктоп Playwright E2E (31 тест)" : 31 "Адмін-портал Playwright (46 тестів)" : 46🧠 2. Матриця Скілів для Запобігання Помилкам у Коді
⚙️ Бекенд (NestJS 11 + CQRS + Prisma + PostgreSQL + Redis):
nestjs-best-practices&backend-development:- Суворе CQRS розділення команд (
CommandBus) та запитів (QueryBus). - Централізована обробка винятків (
GlobalHttpExceptionFilter), DTO валідація (ValidationPipeзwhitelist: true).
- Суворе CQRS розділення команд (
defense-in-depth-validation:- 4-рівневий захист: DTO → Бізнес-логіка/квоти → Auth/License Guards → DB Constraints.
sentry-backend-bugs:- Запобігання неперехопленим промісам, перевірка
null/undefinedдля необов’язкових реляцій, захист від витоку пам’яті у чергах BullMQ.
- Запобігання неперехопленим промісам, перевірка
supabase-postgres-best-practices&prisma-postgres:- 100% індексація зовнішніх ключів (
@@index([fkColumn])). - Відмова від
OFFSETпагінації на користь cursor-based для великих фідів. - Пул підключень через
@prisma/adapter-pg.
- 100% індексація зовнішніх ключів (
subscription-lifecycle:- Динамічний розрахунок термінів дій ліцензій (
durationDays), grace-періоди, блокування неактивних ліцензій черезRequireActiveLicenseGuard.
- Динамічний розрахунок термінів дій ліцензій (
💻 Фронтенд (React 18 + Next.js 14 + Tauri v2 + Tailwind CSS):
vercel-react-best-practices:- Мінімізація ререндерів, дедуплікація in-flight запитів через
useRef, відсутністьReact.StrictModeподвійного монтування у dev.
- Мінімізація ререндерів, дедуплікація in-flight запитів через
frontend-design,beautiful-desing&shadcn:- Єдина система HSL токенів, типографіка Inter, темна/світла теми, компактні модульні компоненти (макс. 250–300 рядків).
integrate-backend:- Безпечний мапінг DTO зі
@smartfeed/shared, перехоплення та двомовна локалізація серверних помилок.
- Безпечний мапінг DTO зі
🧪 Тестування та QA:
playwright-best-practices:- Page Object Model (POM), ізоляція тестів (
localStorage.clear()), детерміновані очікування подій.
- Page Object Model (POM), ізоляція тестів (
test-driven-development-tdd:- RED → GREEN → REFACTOR цикл для всіх нових фіч та фіксів.
testing-anti-patterns:- 3 залізні правила: 1. Не тестувати мок-поведінку; 2. Не додавати тестові методи у продакшн-код; 3. Не мокати без розуміння залежностей.
condition-based-waiting:- Опитування умов замість довільних затримок
sleep.
- Опитування умов замість довільних затримок
verification-before-completion:- Повна статична типізація
tsc --noEmit+pnpm build:shared+ прогін тестів перед завершенням завдання.
- Повна статична типізація
🧹 3. Політика Очищення Даних (Zero Leftovers)
Кожен тест E2E використовує універсальний хелпер cleanDatabase():
Snapshots&ProductImages→OrganizationInvitations→OrganizationMembers→Licenses→Organizations→Users→TariffPlans&NavigationItems.- Гарантує нульові залишки та абсолютну чистоту бази даних.