-
Notifications
You must be signed in to change notification settings - Fork 0
Vitest Testing Framework
Niklas Schneider edited this page Jun 30, 2025
·
13 revisions
██████╗ ██╗████████╗██████╗ █████╗ ██╗ ██╗
██╔════╝ ██║╚══██╔══╝██╔══██╗██╔══██╗╚██╗ ██╔╝
██║ ███╗██║ ██║ ██████╔╝███████║ ╚████╔╝
██║ ██║██║ ██║ ██╔══██╗██╔══██║ ╚██╔╝
╚██████╔╝██║ ██║ ██║ ██║██║ ██║ ██║
╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝
Official Wiki of the GitRay Repository!
Back to Home
Overview of Vitest Testing Framework:
- Modern testing framework built on top of Vite for fast unit and integration testing.
- Provides Jest-compatible API with better performance and ES modules support.
- Configured for both frontend and backend testing in the monorepo using project-based configuration.
- Includes comprehensive test coverage reporting with v8 provider and coverage merging across projects.
- Supports TypeScript out of the box with proper type checking and path aliases.
- Features UI mode for interactive test running and debugging.
Test Commands:
# Run all tests
pnpm test
# Run frontend tests only
pnpm test:frontend
# Run backend tests only
pnpm test:backend
# Run tests in watch mode
pnpm test:watch
# Run tests with coverage
pnpm test:coverage
# Run tests with UI
pnpm test:ui
# Run tests in watch mode for changed files only
pnpm test:watch:changedWhat does this feature/component exactly do:
-
Vitestserves as the primary testing framework for the entire GitRay project. - It runs unit tests, integration tests, and generates coverage reports for both frontend and backend applications.
- Uses a multi-project setup with separate configurations for frontend (React/JSDOM) and backend (Node.js) environments.
- Provides coverage merging capabilities to generate unified coverage reports across the monorepo.
What is the trigger of this feature/component:
- Triggered via pnpm scripts with granular control:
-
test- Run all tests across projects -
test:frontend/test:backend- Run tests for specific projects -
test:watch- Watch mode for development -
test:watch:changed- Watch mode for changed files only -
test:ui- Interactive UI mode -
test:coverage- Full coverage workflow with merging and reporting
-
- Can be executed manually through command line.
- Integrated into CI/CD pipelines for automated testing.
- Watch mode triggers on file changes during development.
What happens with the GUI:
- Terminal-based interface showing test results, pass/fail status, and coverage metrics.
- Interactive UI mode available via
@vitest/uifor visual test management and debugging. - In watch mode, provides interactive interface for filtering and re-running tests.
- Integrates with VS Code testing extensions for in-editor test running.
What happens in the background/Backend:
- Compiles TypeScript files on-the-fly using Vite's transformer with path alias resolution.
- Executes test suites in parallel for better performance across multiple projects using thread pools.
- Optimizes thread usage to 80% of available CPU cores for efficient resource utilization.
- Collects code coverage data using v8 provider with comprehensive exclusion patterns.
- Manages separate test environments (Node.js for backend, JSDOM for frontend).
- Handles mocking and stubbing of dependencies including DOM APIs.
- Merges coverage reports from multiple projects using nyc for unified reporting.
Vitest Testing Framework:
- File name:
vitest.config.ts - Project path:
gitray/vitest.config.ts- Root workspace configuration managing multi-project setup
- Project path:
gitray/apps/backend/vitest.config.ts- Backend-specific configuration with Node.js environment
- Project path:
gitray/apps/frontend/vitest.config.ts- Frontend-specific configuration with JSDOM environment and React support
- File name and project path:
gitray/tsconfig.json- Root TypeScript configuration - File name and project path:
gitray/package.json- Root package with test scripts and dependencies - File name and project path:
gitray/apps/frontend/src/test-setup.ts- Frontend test setup with DOM mocking - File name and project path:
gitray/apps/backend/__tests__/**/*.test.ts- Backend test files - File name and project path:
gitray/apps/frontend/__tests__/**/*.test.tsx- Frontend test files with React components - File name and project path:
gitray/apps/backend/package.json- Backend-specific dependencies - File name and project path:
gitray/apps/frontend/package.json- Frontend-specific dependencies - File name and project path:
gitray/packages/shared-types/src/index.ts- Shared types package with alias resolution
List of Technologies:
-
Vitest^3.2.3 - Testing framework with multi-project support -
@vitest/ui^3.2.3 - Interactive UI for test management -
@vitest/coverage-v8^3.2.3 - Code coverage provider - TypeScript ~5.7.3 - Type-safe testing with full ES modules support
- Vite ^6.3.5 - Build tool and dev server with fast HMR
-
Node.js- Runtime environment for backend tests -
JSDOM^26.1.0 - DOM environment simulation for frontend tests -
@testing-library/react^14.3.1 - React component testing utilities -
@testing-library/jest-dom^6.6.3 - Additional DOM matchers -
@testing-library/user-event^14.6.1 - User interaction simulation -
@vitejs/plugin-react^4.4.1 - React support in Vite -
nyc^17.1.0 - Coverage report merging and formatting -
supertest^7.1.0 - HTTP assertion testing for backend APIs - ESM - ES Modules support throughout the project
- Path aliases - @gitray/shared-types for cross-package imports
| GitRay | 2025 | Official Wiki of the GitRay Repository