AgentSkillsCN

tester

专为提升 Knock-Knock 项目的质量和可靠性而设计的专项技能。当您需要编写单元测试(Vitest)、Storybook 故事,或 E2E 场景(Playwright)时,请使用此技能。该技能熟悉项目架构,擅长在开发环境中使用模拟数据,测试加密技术,并按照移动端优先的原则检验 UI。

SKILL.md
--- frontmatter
name: tester
description: Специализированный навык для обеспечения качества и надежности проекта Knock-Knock. Используйте этот навык для написания Unit-тестов (Vitest), Storybook-историй и E2E сценариев (Playwright). Скилл знает архитектуру проекта, умеет работать с моковыми данными в dev-режиме, тестировать криптографию и проверять UI на соответствие принципам Mobile-First.

Tester Skill (Knock-Knock Edition)

Этот навык превращает агента в высококвалифицированного QA-инженера, гарантирующего стабильность защищенного мессенджера.

Стратегия тестирования

  1. Unit Tests (Vitest): Тестирование бизнес-логики в lib/, кастомных хуков и криптографических функций.
  2. Component Testing (Storybook): Изолированная разработка и визуальное тестирование UI-компонентов в features/ и components/.
  3. E2E Testing (Playwright): Проверка полных пользовательских сценариев (регистрация, отправка сообщения, звонок) с учетом Mobile-First адаптации.
  4. Mocking Policy: В dev-режиме и тестах ВСЕГДА используйте моковые данные вместо реальных запросов к Supabase.

Правила и Стандарты

1. Тестирование логики (Vitest)

  • Файлы тестов должны располагаться рядом с кодом (например, crypto.test.ts).
  • Result Pattern: Сервисы ДОЛЖНЫ возвращать Result (neverthrow), а не выбрасывать исключения.
  • Exhaustive Checks: При обработке результа используйте match() или switch с проверкой satisfies never для ошибок.
  • Environment: При запуске тестов ВСЕГДА используй TMPDIR=$PWD/.vitest-tmp для избежания EPERM ошибок.
  • Криптография: Всегда проверяйте пограничные случаи (пустые ключи, неправильные сигнатуры).
  • Zustand: Тестируйте сторы в изоляции, сбрасывая состояние между тестами.

2. Визуальное тестирование (Storybook)

  • Создавайте .stories.tsx для каждого нового UI-компонента.
  • Обязательно добавляйте истории для:
    • Разных состояний (Loading, Error, Empty).
    • Светлой и Темной темы.
    • Мобильного и десктопного видов.

3. Сценарии Playwright (E2E)

  • Используйте Playwright для тестов, которые невозможно покрыть юнит-тестами (например, скролл чата, сложные анимации).
  • Тестируйте на эмуляторах мобильных устройств (iPhone, Android).

4. Работа с данными и Supabase

  • Dev/Test: Используйте msw или ручные моки в lib/supabase.ts.
  • VPS/Prod: Помните, что сервер может быть медленным или недоступным (тестируйте Offline-First сценарии).

Инструментарий

  • Запуск всех тестов: npm run test
  • Локальный дев-сервер: npm run dev
  • Storybook: npm run storybook

Чего следует ИЗБЕГАТЬ

  • Тестирование на реальной базе данных Supabase во время разработки.
  • Пропуск тестов для критической логики шифрования.
  • Отсутствие проверки UI на маленьких экранах (320px).

Референсы

  • Mocking & Data — как правильно подменять данные.
  • Crypto Testing Guide — специфика тестирования Web Crypto API.
  • Mobile E2E Patterns — лучшие практики для мобильных тестов.