# Testing Policy Дата актуализации: 2026-06-22 ## Обязательные проверки перед сдачей ```bash bun run format:check bun run check:full ``` `check:full` запускает: - ESLint; - Steiger FSD lint; - Vitest unit tests; - TypeScript typecheck; - production build; - Playwright E2E. ## Текущее покрытие Unit: - dashboard filter normalization; - dashboard API params; - structured query keys; - dashboard empty state; - chart adapters; - sorting; - formatting/pluralization; - tooltip escaping; - dashboard filter draft mapping; - dashboard filter definitions; - `CompetenceMapFilterField` render/v-model contract; - auth login schema; - auth safe redirect helper; - UI-kit entrypoint smoke. E2E: - redirect protected route `/dashboard` to `/auth` without auth session; - auth form empty validation. ## Что нужно покрыть следующим этапом Component tests: - `CompetenceMapFilters.vue`: open/sync draft, apply, reset, cancel, disabled/loading state; - `DashboardTabs.vue`: tab selection and region rating branch; - `RegionRankingCard.vue`: sort controls; - `TopIndustriesCard.vue`: empty and filled states; - `ChartTooltipPortal.vue`: visibility and positioning contract. E2E with mocked backend: - authorized dashboard load; - all/sez/technoparks/clusters tabs; - filters dialog apply/reset/cancel; - ranking table sort; - region rating tab; - mobile layout smoke. Visual regression: - desktop auth page; - desktop dashboard all/sez/technoparks/clusters; - filters dialog; - mobile dashboard top section. ## Правила написания тестов - Pure helpers тестировать unit-тестами без Vue mount. - Page-specific UI тестировать рядом с owner slice. - UI-kit internals не тестировать в page tests; для сложных компонентов использовать stubs или E2E. - API-зависимые E2E должны использовать route mocks, а не реальный backend. - Для security-sensitive строковых HTML templates обязательно оставлять tests на escaping. - После изменения FSD-границ всегда запускать `bun run lint:fsd`. ## Известные build warnings Сборка проходит, но Vite/Rolldown предупреждает: - `INVALID_ANNOTATION` в `node_modules/@vueuse/core/dist/index.js`; - главный chunk больше 500 kB. Это не runtime failures. Bundle size требует отдельного performance-pass с анализатором чанков. ## Известные test warnings Vitest component test для Vue SFC может печатать jsdom warning: ```text Could not parse CSS stylesheet ``` Тесты при этом проходят. Это связано с парсингом runtime-injected SFC/UI-kit CSS в jsdom, а не с ошибкой production CSS. Если warning начнет мешать CI logs, стоит добавить test setup с точечной фильтрацией этого сообщения или вынести component tests на browser-based runner.