Comprehensive testing infrastructure for reliable FlagFlow development
FlagFlow includes a comprehensive testing infrastructure built on modern testing frameworks and tools. The testing system supports unit testing, integration testing, and end-to-end testing with isolated state management and in-memory mocking capabilities.
Testing Philosophy: FlagFlow's testing infrastructure emphasizes test isolation, comprehensive coverage, and developer-friendly testing utilities for reliable development workflows.
The testing architecture provides multiple levels of testing with proper isolation and mocking:
// Test setup with isolated environment import { beforeEach, afterEach, describe, it, expect } from 'vitest'; import { render, cleanup } from '@testing-library/svelte'; import { MockPersistentService } from './mocks/MockPersistentService'; import { InMemoryPersistentEngine } from './engines/InMemoryPersistentEngine'; describe('FlagFlow Component Tests', () => { let mockService: MockPersistentService; beforeEach(() => { // Create isolated test environment mockService = new MockPersistentService( new InMemoryPersistentEngine() ); // Setup test data mockService.setFlags({ 'feature.enabled': true, 'config.maxRetries': 5 }); }); afterEach(() => { cleanup(); mockService.reset(); }); it('should render flag-dependent component correctly', () => { const { getByTestId } = render(MyComponent, { props: { flagService: mockService } }); expect(getByTestId('feature-content')).toBeInTheDocument(); }); });
FlagFlow's testing infrastructure provides complete test isolation through in-memory state management, ensuring tests are independent and reliable:
Provides isolated, in-memory storage for each test run, eliminating cross-test contamination and external dependencies.
Wraps the InMemoryPersistentEngine to provide a service-layer interface for testing with full API compatibility.
FlagFlow provides several commands for running different types of tests:
# Run all tests npm test # Run tests with UI interface npm run test:ui # Run tests with coverage report npm run test:coverage # Run tests in watch mode (development) npm run test:watch # Run specific test file npm test -- flag-service.test.ts # Run tests matching pattern npm test -- --grep="flag validation"
Tests are configured through vitest.config.ts
with optimized settings for FlagFlow
development:
// vitest.config.ts import { defineConfig } from 'vitest/config'; import { sveltekit } from '@sveltejs/kit/vite'; export default defineConfig({ plugins: [sveltekit()], test: { environment: 'jsdom', setupFiles: ['tests/setup.ts'], coverage: { reporter: ['text', 'html', 'json'], exclude: [ 'node_modules/**', 'tests/**', '**/*.d.ts', 'build/**' ] }, globals: true, alias: { '$lib': './src/lib', '$components': './src/components' } } });