b64ec76998
Зависимости и навык spfx-qa для проверки портала в браузере (сценарии, снимки, проверка доступности). Каталоги сессии и отчётов (.auth/, .qa-reports/) — в .gitignore. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
83 lines
5.8 KiB
Markdown
83 lines
5.8 KiB
Markdown
# Таксономия проблем и health score для SPFx
|
||
|
||
## Severity
|
||
|
||
| Severity | Определение | Примеры в SPFx |
|
||
|---|---|---|
|
||
| **critical** | Ломает основной сценарий, потеря данных, утечка, падение веб-парта | Веб-парт показывает «Something went wrong» / пустой блок; сохранение затирает чужие данные; токен или данные пользователя в консоли |
|
||
| **high** | Основная функция не работает, обхода нет | При 403 бесконечный спиннер; фильтр возвращает не те элементы; на 429 веб-парт падает вместо повтора |
|
||
| **medium** | Работает с заметными проблемами, обход есть | Вёрстка ломается только в колонке 1/3; нет индикатора загрузки; >5 с до первого контента |
|
||
| **low** | Косметика | Отступ не по сетке Fluent; опечатка; ховер не в цвет темы |
|
||
|
||
## Категории и что проверять
|
||
|
||
### 1. Functional
|
||
- Все состояния данных: `ok`, `empty`, `many` (пагинация, >100/5000 элементов), `forbidden`, `notfound`, `error`, `slow`.
|
||
- Троттлинг (`throttled`, HTTP 429): есть ли повтор с `Retry-After`, нет ли шторма запросов.
|
||
- Property pane: пустые обязательные свойства → понятный плейсхолдер «Настройте веб-парт», а не падение; крайние значения; смена свойства без перезагрузки обновляет рендер.
|
||
- `mode=edit` vs `mode=read`: в режиме редактирования нет сломанных интерактивов.
|
||
- Двойной клик/двойная отправка, устаревшие данные после повторного открытия.
|
||
|
||
### 2. Visual
|
||
- Ширины контейнера: 320 (колонка 1/3, вертикальная секция), 640 (1/2), 1024 (full), 375 (мобильный).
|
||
- Горизонтальный overflow, обрезанный текст без многоточия, наезжающие элементы.
|
||
- Темы: светлая и тёмная/инвертированная секция — цвета берутся из темы (`semanticColors`), а не захардкожены.
|
||
- Иконки Fluent отображаются (не квадратики — значит, не вызван `initializeIcons`).
|
||
|
||
### 3. UX
|
||
- Индикатор загрузки (Shimmer/Spinner) при `slow`.
|
||
- Сообщения об ошибках понятные и на языке пользователя, не «Error: [object Object]».
|
||
- Пустое состояние объясняет, что делать.
|
||
- Подтверждение перед удалением.
|
||
|
||
### 4. Content / локализация
|
||
- Обе локали; нет ключей локализации вместо текста, `undefined`, английских строк в русском интерфейсе.
|
||
- Даты и числа в формате локали.
|
||
|
||
### 5. Performance
|
||
- Время до первого контента в сценарии `ok` < 3 с на харнессе.
|
||
- Число запросов к данным за рендер (ищи N+1: запрос на каждый элемент).
|
||
- Повторные рендеры не вызывают повторных запросов.
|
||
|
||
### 6. Console
|
||
- Необработанные исключения, `unhandledrejection`.
|
||
- Предупреждения React о `key`, обновлении размонтированного компонента.
|
||
- Упавшие запросы (кроме ожидаемых в сценариях ошибок).
|
||
|
||
### 7. Accessibility
|
||
- Нарушения axe уровня serious/critical.
|
||
- Всё доступно с клавиатуры, фокус видим, модалки (Panel/Dialog) не ловят фокус навсегда.
|
||
- Подписи у полей ввода, `aria-label` у иконок-кнопок.
|
||
- Контраст в обеих темах.
|
||
|
||
### 8. SharePoint integration (только `--tenant`)
|
||
- Нет конфликтов стилей со страницей (глобальные селекторы в scss, `:global`).
|
||
- Работает рядом с другими веб-партами, в нескольких экземплярах на одной странице.
|
||
- Права реального пользователя совпадают с ожиданиями.
|
||
- Неожиданные не-GET запросы.
|
||
|
||
## Health score
|
||
|
||
Каждая категория 0–100, затем взвешенное среднее только по **протестированным**
|
||
категориям (непротестированные исключаются, оценка помечается «предварительная»).
|
||
|
||
Одна корневая причина — одна проблема, одна категория (первая подходящая по списку
|
||
выше), без двойных вычетов.
|
||
|
||
**Console:** 0 ошибок → 100; 1–3 → 70; 4–10 → 40; 11+ → 10.
|
||
|
||
**Остальные:** старт 100; critical −25, high −15, medium −8, low −3; минимум 0.
|
||
|
||
| Категория | Вес |
|
||
|---|---|
|
||
| Functional | 25% |
|
||
| Visual | 10% |
|
||
| UX | 15% |
|
||
| Content | 5% |
|
||
| Performance | 10% |
|
||
| Console | 15% |
|
||
| Accessibility | 15% |
|
||
| SharePoint integration | 5% (только `--tenant`) |
|
||
|
||
`score = Σ(оценка × вес) / Σ(веса протестированных)`, округлить до целого.
|