Package Exports
- @birhaus/test-utils
- @birhaus/test-utils/accessibility
- @birhaus/test-utils/cognitive
- @birhaus/test-utils/lighthouse
- @birhaus/test-utils/performance
- @birhaus/test-utils/spanish
- @birhaus/test-utils/undo
- @birhaus/test-utils/v3
- @birhaus/test-utils/visual
Readme
@birhaus/test-utils
BIRHAUS-specific testing utilities for validating design system compliance and accessibility.
Installation
npm install --save-dev @birhaus/test-utilsTesting Utilities
BIRHAUS Compliance Validation
import { expectBirhausCompliance } from '@birhaus/test-utils'
test('button follows BIRHAUS principles', async () => {
render(<BirhausButton labelEs="Guardar" labelEn="Save" />)
await expectBirhausCompliance(screen.getByRole('button'))
})Miller's Law Validation
Ensure components don't exceed cognitive load limits (7±2 items).
import { expectMillersLawCompliance } from '@birhaus/test-utils'
test('navigation respects Miller\'s Law', async () => {
render(<Navigation items={navigationItems} />)
await expectMillersLawCompliance(container, { maxItems: 7 })
})Spanish-first Testing
Validate bilingual labeling patterns.
import { expectSpanishFirstLabeling } from '@birhaus/test-utils'
test('component has Spanish-first labels', async () => {
render(<BirhausCard titleEs="Título" titleEn="Title" />)
await expectSpanishFirstLabeling(container)
})Accessibility Validation
import { expectAccessibilityCompliance } from '@birhaus/test-utils'
test('component meets WCAG AA+ standards', async () => {
render(<BirhausInput labelEs="Nombre" />)
await expectAccessibilityCompliance(container, { level: 'AA' })
})Undo Pattern Testing
import { expectUndoPatternCompliance } from '@birhaus/test-utils'
test('destructive action supports undo', async () => {
render(<DeleteButton undoConfig={{...}} />)
await expectUndoPatternCompliance(container)
})Performance Testing
Cognitive Load Metrics
import { measureCognitiveLoad } from '@birhaus/test-utils'
test('interface has acceptable cognitive load', () => {
const metrics = measureCognitiveLoad(container)
expect(metrics.totalElements).toBeLessThan(9) // Miller's Law
expect(metrics.primaryActions).toBeLessThan(4) // 4-3-1 rule
})Performance Benchmarks
import { expectPerformanceCompliance } from '@birhaus/test-utils'
test('component meets performance thresholds', async () => {
const { container } = render(<BirhausDataTable data={largeDataset} />)
await expectPerformanceCompliance(container, {
renderTime: 100, // ms
memoryUsage: 50 // MB
})
})Mock Data Generators
Generate BIRHAUS-compliant test data:
import {
generateMockFinancialData,
generateMockUserData,
generateMockTransactionHistory
} from '@birhaus/test-utils'
const mockDonations = generateMockFinancialData(50)
const mockMembers = generateMockUserData(25)Testing Presets
Common testing configurations:
import { birhausTestingPresets } from '@birhaus/test-utils'
// Financial application testing
const financialTests = birhausTestingPresets.financial({
currency: 'PYG',
locale: 'es-PY'
})
// Educational platform testing
const educationTests = birhausTestingPresets.education({
studentRoles: ['student', 'teacher', 'admin']
})Integration
Works with popular testing frameworks:
- Vitest (recommended)
- Jest
- React Testing Library
- Playwright (for E2E testing)
Setup Example
// vitest.config.ts
import { defineConfig } from 'vitest/config'
import { birhausTestConfig } from '@birhaus/test-utils'
export default defineConfig({
...birhausTestConfig,
test: {
setupFiles: ['@birhaus/test-utils/setup']
}
})Custom Matchers
Additional Jest/Vitest matchers:
expect(element).toHaveSpanishFirstLabel()
expect(component).toRespectMillersLaw()
expect(action).toHaveUndoPattern()
expect(interface).toBeBirhausCompliant()CI/CD Integration
Use in GitHub Actions:
- name: BIRHAUS Compliance Tests
run: |
npm run test:birhaus
npm run test:accessibility
npm run test:performanceLicense
MIT - see LICENSE for details.