� Матриця Покриття Тестами — SmartFeed Studio
📊 Повний Звіт про Автоматизовані Тести (264 з 264 пройдено — 100% PASS)
[!NOTE] Платформа SmartFeed Studio побудована на чіткій архітектурі Local-First (Desktop) + Cloud SaaS Gatekeeper (Backend):
- Центральний хмарний бекенд (
services/backend-api+ PostgreSQL): керує безпекою, користувачами, організаціями, командними місцями, тарифами, ліцензіями, платежами, метаданими S3 бекапів та динамічною навігацією (139 E2E тестів у 11 сьютах).- Десктопний клієнт (
apps/desktop+ Tauri + SQLCipher): обробляє всі важкі комерційні дані (каталоги, товари 50k–500k SKU, фотографії, атрибути, постачальники, правила цін, черги імпорту та експортні фіди) локально та конфіденційно на пристрої (57 Playwright тестів).- Веб-портал адміністратора (
apps/admin-portal): панель управління користувачами, організаціями, тарифами, платежами та динамічною навігацією (68 Playwright тестів).
1. Бекенд API (Jest E2E — 139 тестів)
Команда запуску:
pnpm --filter @smartfeed/backend-api test:e2e
| Файл тесту | Ендпоінти / Функціонал | Кількість | Статус |
|---|---|---|---|
test/storage-workspace.e2e-spec.ts | GET /storage/workspace/default-path, POST /storage/workspace/init (фізичні папки, catalog.db, workspace.json), GET /storage/workspace/info, GET /storage/workspace/stats (реальні лічильники та байти), POST /storage/workspace/backup, POST /storage/workspace/maintenance, POST /storage/workspace/clear-cache, POST /storage/workspace/migrate | 8 | ✅ PASS |
test/auth.e2e-spec.ts | POST /auth/register, POST /auth/login | 12 | ✅ PASS |
test/password-recovery.e2e-spec.ts | POST /auth/forgot-password, POST /auth/reset-password | 8 | ✅ PASS |
test/payments.e2e-spec.ts | POST /payments/checkout, POST /payments/wayforpay/webhook (HMAC-MD5, Accept квитанція, авто-продовження ліцензії), GET /payments/transactions, GET /payments/stats, GET /payments/settings, PATCH /payments/settings/:provider | 15 | ✅ PASS |
test/licenses.e2e-spec.ts | GET /licenses/my, GET /licenses/quotas (уніфікований розрахунок квот, динамічні ліміти), POST /licenses/select-plan, RequireActiveLicenseGuard, PATCH /licenses/:id/status (Suspend/Resume), DELETE /licenses/:id | 17 | ✅ PASS |
test/organizations.e2e-spec.ts | GET /organizations, GET /organizations/:id, PATCH /organizations/:id, GET /members, POST /members (maxTeamSeats), DELETE /members/:id, корпоративний апгрейд, успадкування ліцензії, блокування при закінченні терміну та відновлення | 13 | ✅ PASS |
test/team-invitations.e2e-spec.ts | POST /organizations/:id/invitations, GET /organizations/:id/invitations, DELETE /organizations/:id/invitations/:id, GET /invitations/:token, POST /invitations/accept, 403 захист зміни тарифу для MEMBER, Mailpit доставка | 11 | ✅ PASS |
test/users.e2e-spec.ts | GET /users, GET /users/stats, POST /users, PATCH /users/:id/status, DELETE /users/:id, SUPER_ADMIN exclusion, orgRoleFilter (OWNERS, MEMBERS), POST /auth/change-password | 18 | ✅ PASS |
test/security-access-control.e2e-spec.ts | RBAC захист адмінки, мульти-тенантна ABAC ізоляція організацій, заборона зміни тарифів для MEMBER (ONLY_OWNER_CAN_CHANGE_PLAN), валідація пароля при інвайті, S3 ізоляція за userId | 17 | ✅ PASS |
test/navigation.e2e-spec.ts | GET /navigation, GET /navigation/admin, POST /navigation, PATCH /navigation/:id, DELETE /navigation/:id | 8 | ✅ PASS |
test/plans.e2e-spec.ts | GET /plans, GET /plans/admin, POST /plans, PATCH /plans/:id, DELETE /plans/:id, GET /licenses/admin | 12 | ✅ PASS |
Разом по бекенду: 11 сьютів — 139 тестів — 139 passing (100%)
2. Десктопний Клієнт (Playwright E2E — 57 тестів)
Команда запуску:
pnpm test:desktop
| Файл тесту | Сценарії тестування | Кількість | Статус |
|---|---|---|---|
e2e/pricing-rules-channels.spec.ts | Модальне вікно багаторівневих правил націнки постачальника, інтерактивний калькулятор вхідної націнки, збереження та видалення правил категорій/діапазонів, вкладка «Канали експорту та Маркетплейси», створення каналу Rozetka зі зворотною націнкою, симулятор маржинальності та чистого заробітку, 1-клік копіювання Live Feed URL, двомовність UA ⇄ EN | 3 | ✅ PASS |
e2e/workspace-storage.spec.ts | Локальна база SQLCipher, майстер вибору робочої папки (Onboarding), вибір кастомної папки, вкладка «База даних та сховище» у Налаштуваннях (дискові метрики, створення бекапів, VACUUM дефрагментація, очищення кешу), перенесення/міграція робочої папки, двомовність UA ⇄ EN | 5 | ✅ PASS |
e2e/auth.spec.ts | Захист роутів, 401 помилка, вхід, реєстрація з назвою компанії, мова UA/EN, тема | 6 | ✅ PASS |
e2e/password-recovery.spec.ts | Форма відновлення, валідація токену, зміна паролю, вхід з новим паролем | 7 | ✅ PASS |
e2e/plans.spec.ts | Перегляд планів, перемикач періоду Щомісяця/Щороку (-20% знижка), зворотний відлік, Checkout Modal (Review, Sandbox Approved/Declined), авто-розблокування каталогів при Approved, надійне блокування при Declined, перехід у порівняльну матрицю, zero-duplicate requests, i18n | 7 | ✅ PASS |
e2e/team.spec.ts | Команда та воркспейс, квота місць (1/1, 2/3, 3/3, ∞), інвайти (токен-посилання, Nodemailer), список очікуваних інвайтів, видалення, readonly режим та приховання тарифів для MEMBER, i18n | 9 | ✅ PASS |
e2e/suppliers-feeds.spec.ts | Постачальники, квотні картки, перегляд підключених фідів (SupplierFeedsModal), запуск повторної синхронізації, майстер імпорту (95vw), вибірковий чекліст категорій з підрахунком SKU та лімітів квоти, блокування кнопки імпорту при переліміті SKU та динамічне розблокування, неблокуюче відправлення у чергу BullMQ, плаваючий віджет GlobalJobProgressBar, перевірка стійкої шапки (solid thead), блокування переліміту, єдина реактивна синхронізація (DataSync) | 7 | ✅ PASS |
e2e/quota-reconciliation.spec.ts | Узгодження надлишку при зниженні тарифу (Downgrade Reconciliation): попереджувальний банер, діалог узгодження з 100% непрозорою шапкою, вибіркове видалення категорій з живим розрахунком залишку SKU, вкладка фідів (лаконічні URL, іконки-смітники), вкладка постачальників, неблокуюче фонове видалення та прогрес | 4 | ✅ PASS |
e2e/pages-resilience.spec.ts | Каталоги товарів, AI Асистент, хмарна синхронізація, i18n словники, обробка помилок ErrorBoundary | 3 | ✅ PASS |
e2e/navigation.spec.ts | Сайдбар меню, фільтрація за ролями, згортання/розгортання, пункт Команда | 2 | ✅ PASS |
e2e/theme.spec.ts | Палітри shadcn (Zinc, Slate, Stone, Bronze), Dark/Light режим | 3 | ✅ PASS |
Разом по десктопу: 11 сьютів — 57 тестів — 57 passing (100%)
3. Адмін-Панель (Playwright E2E — 68 тестів)
Команда запуску:
pnpm test:admin
| Файл тесту | Сценарії тестування | Кількість | Статус |
|---|---|---|---|
e2e/payments.spec.ts | Платіжні системи, налаштування WayForPay, журнал транзакцій, KPI картки, пошук, пагінація, фільтри за статусом, Zero-Duplicate Requests, відсутність емодзі у селектах, i18n | 6 | ✅ PASS |
e2e/plans.spec.ts | Картки планів, порівняльна таблиця, створення плану, редагування параметрів, інлайн-редагування пунктів переваг, перемикання UA/EN, Zero-Duplicate Requests | 6 | ✅ PASS |
e2e/users.spec.ts | Таблиця користувачів, ієрархія командних підрядків (акордеон), модалка керування командою організації, 3-крапки меню дій (зупинка/активація/видалення), створення користувача, пошук, фільтрація за ролями, фасетний тулбар, i18n | 11 | ✅ PASS |
e2e/licenses.spec.ts | Створення та видача ключів, зміна статусу, видалення, пошук, фільтри, Zero-Duplicate Requests, i18n | 9 | ✅ PASS |
e2e/navigation.spec.ts | Керування меню сайдбару, фільтрація за ролями та цільовими додатками, створення/редагування/видалення пунктів, перевірка лінка налаштувань | 9 | ✅ PASS |
e2e/dashboard.spec.ts | KPI метрики, швидкі дії, активність користувачів, Zero-Duplicate Requests, перемикання мови | 7 | ✅ PASS |
e2e/auth.spec.ts | Автентифікація адміністратора, захист роутів, 401/403 блокування | 8 | ✅ PASS |
e2e/password-recovery.spec.ts | Відновлення пароля адміністратора, скидання та оновлення облікових даних | 6 | ✅ PASS |
e2e/settings.spec.ts | Профіль адміністратора, зміна паролю, валідація, інфраструктурні статуси, двомовність UA ⇄ EN | 3 | ✅ PASS |
e2e/theme.spec.ts | Перемикання палітр shadcn, монохромна схема Zinc, Dark/Light | 3 | ✅ PASS |
Разом по адмін-панелі: 10 сьютів — 68 тестів — 68 passing (100%)
🏆 Підсумковий Результат
- Backend API: 139 тестів (100% PASS)
- Desktop Client: 57 тестів (100% PASS)
- Admin Portal: 68 тестів (100% PASS)
- Загалом: 264 / 264 тести пройдено (100% успіх)