Skip to content

Conversation

@oreopk
Copy link
Owner

@oreopk oreopk commented Jul 20, 2025

Task: https://github.com/rolling-scopes-school/tasks/blob/master/react/modules/tasks/tests.md
Screenshot:
image
Done 20.07.2025 / deadline 21.07.2025
Deploy: https://starwarsreactrs.netlify.app/
Score: 40 / 100

@netlify
Copy link

netlify bot commented Jul 25, 2025

Deploy Preview for cheerful-elf-29725f ready!

Name Link
🔨 Latest commit 4c18eaf
🔍 Latest deploy log https://app.netlify.com/projects/cheerful-elf-29725f/deploys/688767cb93eea900083fd5f9
😎 Deploy Preview https://deploy-preview-2--cheerful-elf-29725f.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jul 28, 2025

Deploy Preview for starwarsreactrs ready!

Name Link
🔨 Latest commit 4c18eaf
🔍 Latest deploy log https://app.netlify.com/projects/starwarsreactrs/deploys/688767cb93eea900083fd5fd
😎 Deploy Preview https://deploy-preview-2--starwarsreactrs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@yakovlef
Copy link

✅ Что реализовано правильно

Настройка тестового окружения +15 баллов

  • vitest корректно настроен с React Testing Library
  • конфигурация покрытия кода работает правильно
  • coverage thresholds установлены согласно требованиям (statements: 80%, branches: 50%, functions: 50%, lines: 50%)
  • файлы тестов правильно исключены из отчета покрытия

Search Component Tests +20 баллов

  • реализованы все требуемые тесты для Search компонента
  • корректно тестируется работа с localStorage (чтение и сохранение)
  • тестируется обрезка пробелов при сохранении в localStorage
  • правильно используются моки для localStorage

Results/CardList Component Tests +15 баллов

  • тестируется рендеринг правильного количества карточек
  • реализована обработка ошибок при неудачном API запросе
  • корректно используются моки для API через PlanetFetch

Card Component Tests +15 баллов

  • компонент PlanetCard тестируется через интеграционные тесты
  • проверяется корректное отображение свойств планет
  • 100% покрытие компонента PlanetCard

Error Boundary Tests +15 баллов

  • тестируется перехват ошибок и отображение fallback UI
  • проверяется функционал кнопки "Error" для генерации тестовой ошибки
  • тестируется кнопка "Reboot" для сброса состояния ошибки
  • корректно проверяется вызов console.error при ошибке

API Integration Tests +15 баллов

  • API вызовы правильно замокированы через vi.mock
  • тестируются успешные сценарии загрузки данных
  • проверяется обработка ошибок при неудачных запросах
  • моки корректно очищаются перед каждым тестом

Husky Pre-push Hook +5 баллов

  • настроен pre-push hook в файле .husky/pre-push
  • запускает команду npm run coverage перед push

Качество тестов

  • тесты хорошо структурированы с использованием describe блоков
  • правильно используются утилиты React Testing Library (screen, render, userEvent)
  • тесты фокусируются на поведении, а не на деталях реализации
  • все тесты проходят успешно (12 passed)

⚠️ Что не реализовано / требует доработки

Недостаточное покрытие PlanetFetch.ts -10 баллов

  • покрытие файла PlanetFetch.ts составляет около 30% (statements)
  • не покрыты тестами функции fetchData и ArrayToPlanet
  • не протестированы сценарии работы с API без поискового запроса
  • можно добавить отдельные unit тесты для PlanetFetch модуля

Отсутствие покрытия main.tsx -5 баллов

  • файл main.tsx не покрыт тестами
  • хотя это входной файл приложения, можно исключить его из coverage отчета

Минимальное тестирование App компонента

  • есть только базовый тест на рендеринг заголовка
  • можно добавить больше интеграционных тестов для App компонента
  • можно протестировать начальную загрузку данных при mount

📊 Итоговая оценка

Полученные баллы:

  • Test Runner Setup (Vitest с RTL, coverage): 15 баллов
  • Search Component Tests: 20 баллов
  • Results/CardList Component Tests: 15 баллов
  • Card Component Tests: 15 баллов
  • Error Boundary Tests: 15 баллов
  • API Integration Tests: 15 баллов
  • Husky Pre-push Hook: 5 баллов
  • Всего получено: 100 баллов

Штрафные баллы:

  • недостаточное покрытие отдельных файлов: -10 баллов
  • отсутствие исключения main.tsx из coverage: -5 баллов

Итоговый результат:

85 баллов (100 - 15 = 85)

💡 Рекомендации по улучшению

  1. Улучшить покрытие PlanetFetch.ts

    • добавить отдельный тестовый файл PlanetFetch.test.ts
    • протестировать функцию fetchData с успешными и неуспешными ответами
    • покрыть тестами функцию ArrayToPlanet
    • протестировать оба сценария fetchPlanets (с поиском и без)
  2. Исключить main.tsx из coverage

    • добавить "src/main.tsx" в exclude массив в vite.config.ts
  3. Расширить тестирование App компонента

    • добавить тесты на проверку начальной загрузки данных
    • проверить состояние loading при загрузке данных
  4. Улучшить организацию тестов

    • рассмотреть возможность создания test-utils для общих настроек
    • вынести повторяющиеся моки в отдельные файлы

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants