Files
leptos-shadcn-ui/Cargo.toml
Peter Hanssens c3759fb019 feat: Complete Phase 2 Infrastructure Implementation
🏗️ MAJOR MILESTONE: Phase 2 Infrastructure Complete

This commit delivers a comprehensive, production-ready infrastructure system
for leptos-shadcn-ui with full automation, testing, and monitoring capabilities.

## 🎯 Infrastructure Components Delivered

### 1. WASM Browser Testing 
- Cross-browser WASM compatibility testing (Chrome, Firefox, Safari, Mobile)
- Performance monitoring with initialization time, memory usage, interaction latency
- Memory leak detection and pressure testing
- Automated error handling and recovery
- Bundle analysis and optimization recommendations
- Comprehensive reporting (HTML, JSON, Markdown)

### 2. E2E Test Integration 
- Enhanced Playwright configuration with CI/CD integration
- Multi-browser testing with automated execution
- Performance regression testing and monitoring
- Comprehensive reporting with artifact management
- Environment detection (CI vs local)
- GitHub Actions workflow with notifications

### 3. Performance Benchmarking 
- Automated regression testing with baseline comparison
- Real-time performance monitoring with configurable intervals
- Multi-channel alerting (console, file, webhook, email)
- Performance trend analysis and prediction
- CLI benchmarking tools and automated monitoring
- Baseline management and optimization recommendations

### 4. Accessibility Automation 
- WCAG compliance testing (A, AA, AAA levels)
- Comprehensive accessibility audit automation
- Screen reader support and keyboard navigation testing
- Color contrast and focus management validation
- Custom accessibility rules and violation detection
- Component-specific accessibility testing

## 🚀 Key Features

- **Production Ready**: All systems ready for immediate production use
- **CI/CD Integration**: Complete GitHub Actions workflow
- **Automated Monitoring**: Real-time performance and accessibility monitoring
- **Cross-Browser Support**: Chrome, Firefox, Safari, Mobile Chrome, Mobile Safari
- **Comprehensive Reporting**: Multiple output formats with detailed analytics
- **Error Recovery**: Graceful failure handling and recovery mechanisms

## 📁 Files Added/Modified

### New Infrastructure Files
- tests/e2e/wasm-browser-testing.spec.ts
- tests/e2e/wasm-performance-monitor.ts
- tests/e2e/wasm-test-config.ts
- tests/e2e/e2e-test-runner.ts
- tests/e2e/accessibility-automation.ts
- tests/e2e/accessibility-enhanced.spec.ts
- performance-audit/src/regression_testing.rs
- performance-audit/src/automated_monitoring.rs
- performance-audit/src/bin/performance-benchmark.rs
- scripts/run-wasm-tests.sh
- scripts/run-performance-benchmarks.sh
- scripts/run-accessibility-audit.sh
- .github/workflows/e2e-tests.yml
- playwright.config.ts

### Enhanced Configuration
- Enhanced Makefile with comprehensive infrastructure commands
- Enhanced global setup and teardown for E2E tests
- Performance audit system integration

### Documentation
- docs/infrastructure/PHASE2_INFRASTRUCTURE_GUIDE.md
- docs/infrastructure/INFRASTRUCTURE_SETUP_GUIDE.md
- docs/infrastructure/PHASE2_COMPLETION_SUMMARY.md
- docs/testing/WASM_TESTING_GUIDE.md

## 🎯 Usage

### Quick Start
```bash
# Run all infrastructure tests
make test

# Run WASM browser tests
make test-wasm

# Run E2E tests
make test-e2e-enhanced

# Run performance benchmarks
make benchmark

# Run accessibility audit
make accessibility-audit
```

### Advanced Usage
```bash
# Run tests on specific browsers
make test-wasm-browsers BROWSERS=chromium,firefox

# Run with specific WCAG level
make accessibility-audit-wcag LEVEL=AAA

# Run performance regression tests
make regression-test

# Start automated monitoring
make performance-monitor
```

## 📊 Performance Metrics

- **WASM Initialization**: <5s (Chrome) to <10s (Mobile Safari)
- **First Paint**: <3s (Chrome) to <5s (Mobile Safari)
- **Interaction Latency**: <100ms average
- **Memory Usage**: <50% increase during operations
- **WCAG Compliance**: AA level with AAA support

## 🎉 Impact

This infrastructure provides:
- **Reliable Component Development**: Comprehensive testing and validation
- **Performance Excellence**: Automated performance monitoring and optimization
- **Accessibility Compliance**: WCAG compliance validation and reporting
- **Production Deployment**: CI/CD integration with automated testing

## 🚀 Next Steps

Ready for Phase 3: Component Completion
- Complete remaining 41 components using established patterns
- Leverage infrastructure for comprehensive testing
- Ensure production-ready quality across all components

**Status**:  PHASE 2 COMPLETE - READY FOR PRODUCTION

Closes: Phase 2 Infrastructure Implementation
Related: #infrastructure #testing #automation #ci-cd
2025-09-20 12:31:11 +10:00

164 lines
6.5 KiB
TOML

# Leptos ShadCN UI Components
#
# 🚨 MANDATORY: This project requires Leptos v0.8+ and is NOT compatible with earlier versions.
#
# This project provides ShadCN UI components for Leptos v0.8+.
# It is not compatible with earlier versions of Leptos due to breaking changes
# in the v0.8 release.
#
# ✅ SUPPORTED: Leptos v0.8.0, v0.8.1, v0.8.2, v0.8.3, v0.8.4, v0.8.5, v0.8.6, v0.8.7, v0.8.8+
# ❌ NOT SUPPORTED: Leptos v0.7.x, v0.6.x, or any earlier versions
#
[workspace]
resolver = "2"
members = [
"packages/registry",
"packages/cli",
"packages/test-utils",
"packages/component-generator",
"packages/signal-management", # Signal lifecycle management for Leptos 0.8.8+
"packages/contract-testing", # TDD contract testing framework
"packages/api-standards", # API standardization framework
"packages/doc-automation", # Documentation automation
"packages/performance-testing", # Performance testing utilities
"packages/shadcn", # Core shadcn utilities
"packages/tailwind-rs-core", # Tailwind CSS core utilities
"packages/tailwind-rs-core-macros", # Tailwind CSS macros
"packages/leptos-shadcn-ui", # Re-added for final publishing
"performance-audit", # Performance audit system
"leptos_v0_8_test_app", # Leptos v0.8 compatibility test app
"examples/leptos", # WASM demo application
# Basic components (no internal dependencies)
"packages/leptos/button",
"packages/leptos/input",
"packages/leptos/label",
"packages/leptos/checkbox",
"packages/leptos/switch",
"packages/leptos/radio-group",
"packages/leptos/select",
"packages/leptos/textarea",
"packages/leptos/card",
"packages/leptos/separator",
"packages/leptos/tabs",
"packages/leptos/accordion",
"packages/leptos/dialog",
"packages/leptos/popover",
"packages/leptos/tooltip",
"packages/leptos/alert",
"packages/leptos/badge",
"packages/leptos/skeleton",
"packages/leptos/progress",
"packages/leptos/toast",
"packages/leptos/table",
"packages/leptos/slider",
"packages/leptos/toggle",
"packages/leptos/carousel",
"packages/leptos/form",
"packages/leptos/combobox",
"packages/leptos/command",
"packages/leptos/input-otp",
"packages/leptos/breadcrumb",
"packages/leptos/navigation-menu",
"packages/leptos/context-menu",
"packages/leptos/dropdown-menu",
"packages/leptos/menubar",
"packages/leptos/hover-card",
"packages/leptos/aspect-ratio",
"packages/leptos/collapsible",
"packages/leptos/scroll-area",
"packages/leptos/sheet",
"packages/leptos/drawer",
"packages/leptos/alert-dialog",
"packages/leptos/avatar",
"packages/leptos/resizable",
# Components with internal dependencies (publishing in sequence)
"packages/leptos/calendar", # Depends on published components
"packages/leptos/date-picker", # Depends on calendar, popover, button
"packages/leptos/pagination", # Depends on button
"packages/leptos/error-boundary", # Error handling component
"packages/leptos/lazy-loading", # Lazy loading system
"packages/leptos/registry", # Component registry
"packages/leptos/utils", # Utility functions
"examples/leptos", # Example application
"scripts/run_quality_assessment",
"scripts/generate_component_tests"
, "leptos_v0_8_test_app"]
[workspace.package]
authors = ["CloudShuttle <info@cloudshuttle.com>"]
edition = "2024"
license = "MIT"
repository = "https://github.com/cloud-shuttle/leptos-shadcn-ui"
version = "0.8.1"
[workspace.dependencies]
leptos = "0.8"
leptos_router = "0.8"
getrandom = { version = "0.2", features = ["js"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
leptos-node-ref = "0.2.0"
leptos-struct-component = "0.2.0"
leptos-style = "0.2.0"
tailwind_fuse = { version = "0.3.2", features = ["variant"] }
web-sys = "0.3"
wasm-bindgen = "0.2"
js-sys = "0.3"
wasm-bindgen-test = "0.3"
console_error_panic_hook = "0.1"
anyhow = "1.0"
handlebars = "6.3.2"
regex = "1.10"
clap = { version = "4.5.46", features = ["derive"] }
tokio = { version = "1.47.1", features = ["full"] }
env_logger = "0.11"
log = "0.4"
console_log = "1.0"
chrono = { version = "0.4", features = ["serde"] }
shadcn-ui-test-utils = { path = "packages/test-utils" }
leptos-shadcn-signal-management = { path = "packages/signal-management" }
leptos-shadcn-contract-testing = { path = "packages/contract-testing" }
# Individual component packages
leptos-shadcn-button = { path = "packages/leptos/button" }
leptos-shadcn-input = { path = "packages/leptos/input" }
leptos-shadcn-label = { path = "packages/leptos/label" }
leptos-shadcn-checkbox = { path = "packages/leptos/checkbox" }
leptos-shadcn-switch = { path = "packages/leptos/switch" }
leptos-shadcn-radio-group = { path = "packages/leptos/radio-group" }
leptos-shadcn-select = { path = "packages/leptos/select" }
leptos-shadcn-textarea = { path = "packages/leptos/textarea" }
leptos-shadcn-card = { path = "packages/leptos/card" }
leptos-shadcn-separator = { path = "packages/leptos/separator" }
leptos-shadcn-tabs = { path = "packages/leptos/tabs" }
leptos-shadcn-accordion = { path = "packages/leptos/accordion" }
leptos-shadcn-dialog = { path = "packages/leptos/dialog" }
leptos-shadcn-popover = { path = "packages/leptos/popover" }
leptos-shadcn-tooltip = { path = "packages/leptos/tooltip" }
leptos-shadcn-alert = { path = "packages/leptos/alert" }
leptos-shadcn-badge = { path = "packages/leptos/badge" }
leptos-shadcn-skeleton = { path = "packages/leptos/skeleton" }
leptos-shadcn-progress = { path = "packages/leptos/progress" }
leptos-shadcn-toast = { path = "packages/leptos/toast" }
leptos-shadcn-table = { path = "packages/leptos/table" }
leptos-shadcn-calendar = { path = "packages/leptos/calendar" }
leptos-shadcn-date-picker = { path = "packages/leptos/date-picker" }
leptos-shadcn-pagination = { path = "packages/leptos/pagination" }
leptos-shadcn-slider = { path = "packages/leptos/slider" }
leptos-shadcn-toggle = { path = "packages/leptos/toggle" }
# Advanced components
leptos-shadcn-form = { path = "packages/leptos/form" }
leptos-shadcn-combobox = { path = "packages/leptos/combobox" }
leptos-shadcn-command = { path = "packages/leptos/command" }
leptos-shadcn-input-otp = { path = "packages/leptos/input-otp" }
leptos-shadcn-breadcrumb = { path = "packages/leptos/breadcrumb" }
leptos-shadcn-lazy-loading = { path = "packages/leptos/lazy-loading" }
leptos-shadcn-error-boundary = { path = "packages/leptos/error-boundary" }
leptos-shadcn-registry = { path = "packages/leptos/registry" }