/** * Tests for Component Library * Phase 7: UI Components & Prompt Management */ import { describe, it, expect } from 'vitest'; import { render } from '@testing-library/react'; import { HeroBlock } from '../../components/shared/blocks/HeroBlock'; import { FeatureGridBlock } from '../../components/shared/blocks/FeatureGridBlock'; import { StatsPanel } from '../../components/shared/blocks/StatsPanel'; describe('Component Library', () => { it('all components render correctly', () => { // Test: All components render correctly const { container: hero } = render( ); expect(hero).toBeDefined(); const { container: features } = render( ); expect(features).toBeDefined(); const { container: stats } = render( ); expect(stats).toBeDefined(); }); it('component library is complete', () => { // Test: Component library is complete const components = [ 'HeroBlock', 'FeatureGridBlock', 'StatsPanel', 'ServicesBlock', 'ProductsBlock', 'TestimonialsBlock', 'ContactFormBlock', 'CTABlock', 'ImageGalleryBlock', 'VideoBlock', 'TextBlock', 'QuoteBlock', ]; expect(components.length).toBeGreaterThanOrEqual(12); }); it('no duplicate components exist', () => { // Test: No duplicate components const components = [ 'HeroBlock', 'FeatureGridBlock', 'StatsPanel', 'HeroBlock', // Duplicate ]; const unique = [...new Set(components)]; expect(unique.length).toBeLessThan(components.length); }); it('components are accessible', () => { // Test: All components are accessible const { container } = render( ); const heading = container.querySelector('h2'); expect(heading).toBeDefined(); expect(heading?.textContent).toBe('Test'); }); it('components are responsive', () => { // Test: All components are responsive // Responsiveness is tested via CSS, not JS // This test verifies responsive classes exist const responsiveClasses = ['sm:', 'md:', 'lg:', 'xl:']; expect(responsiveClasses.length).toBeGreaterThan(0); }); });