# EU-Utility Test Suite Comprehensive test plugins for validating the Three-Tier API (PluginAPI, WidgetAPI, ExternalAPI). ## Test Plugins Overview ### 1. API Comprehensive Test (`api_comprehensive_test/`) **Purpose:** Tests every method across all three API tiers **Coverage:** - **PluginAPI (12 services, 30+ tests):** - Log Reader: `read_log_lines()`, `read_log_since()` - Window Manager: `get_eu_window()`, `is_eu_focused()`, `is_eu_visible()`, `bring_eu_to_front()` - OCR: `recognize_text()`, `ocr_available()` - Screenshot: `capture_screen()`, `screenshot_available()` - Nexus: `search_items()`, `get_item_details()` - HTTP: `http_get()`, `http_post()` - Audio: `play_sound()`, `beep()` - Notifications: `show_notification()` - Clipboard: `copy_to_clipboard()`, `paste_from_clipboard()` - EventBus: `subscribe()`, `unsubscribe()`, `publish()` - DataStore: `get_data()`, `set_data()`, `delete_data()` - Tasks: `run_task()`, `cancel_task()` - **WidgetAPI (25+ tests):** - Creation: `create_widget()`, `create_from_preset()` - Access: `get_widget()`, `get_all_widgets()`, `get_visible_widgets()`, `widget_exists()` - Management: `show_widget()`, `hide_widget()`, `close_widget()`, `show_all_widgets()`, etc. - Instance methods: `show()`, `hide()`, `move()`, `resize()`, `set_opacity()`, etc. - Layout: `arrange_widgets()`, `snap_to_grid()` - Persistence: `save_all_states()`, `load_all_states()`, `save_state()`, `load_state()` - **ExternalAPI (15+ tests):** - Server: `start_server()`, `stop_server()`, `get_status()` - Endpoints: `register_endpoint()`, `unregister_endpoint()`, `@endpoint` decorator - Webhooks: `register_webhook()`, `unregister_webhook()`, `post_webhook()` - Auth: `create_api_key()`, `revoke_api_key()` - IPC: `register_ipc_handler()`, `send_ipc()` **Features:** - Visual HTML-based results display - Pass/fail tracking for each test - Error reporting with details - Results export to JSON --- ### 2. Widget Stress Test (`widget_stress_test/`) **Purpose:** Tests widget system under load **Test Scenarios:** - **Bulk Creation:** Creates 10-50 widgets rapidly - **Layout Stress:** Tests grid, horizontal, vertical, cascade arrangements - **Visibility Cycles:** Rapid show/hide operations - **Property Modifications:** Rapid opacity, position, size changes - **Concurrent Operations:** Create while modifying **Metrics:** - Operation count - Duration (ms) - Success rate - Error tracking --- ### 3. External Integration Test (`external_integration_test/`) **Purpose:** Tests third-party integration features **Test Categories:** - **REST Server:** Start/stop lifecycle, endpoint registration, CORS - **Webhooks:** Incoming/outgoing, HMAC signature verification - **Authentication:** API key creation/revocation - **IPC:** Handler registration, message sending - **Utilities:** Status endpoint, URL generation, webhook history --- ### 4. Event Bus Test (`event_bus_test/`) **Purpose:** Tests pub/sub messaging system **Test Coverage:** - Basic subscribe/publish - Unsubscribe functionality - Multiple subscribers to single event - Various data types (string, int, dict, list, nested) - Wildcard/pattern subscriptions - High-volume publishing (100 events) - Rapid subscribe/unsubscribe cycles - Empty/null event data - Large payloads - Special characters in event types **Visualization:** - Real-time event log - Delivery statistics - Performance metrics --- ### 5. Performance Benchmark (`performance_benchmark/`) **Purpose:** Measures API performance metrics **Benchmarks:** - **DataStore:** Read/write operations (1000+ iterations) - **EventBus:** Publish/subscribe throughput - **HTTP:** Network request latency - **WidgetAPI:** Creation and operation speed - **ExternalAPI:** Key and endpoint registration **Metrics:** - Average latency (ms) - Min/max latency - Throughput (ops/sec) - Total operations **Output:** - Interactive results table - Performance grades (Good/Slow) - Export to JSON --- ### 6. Error Handling Test (`error_handling_test/`) **Purpose:** Tests error conditions and exception handling **Error Types Tested:** - Invalid input - Service unavailable - Resource not found - Type errors - Timeout - Boundary conditions **Test Counts:** - PluginAPI: 15+ error scenarios - WidgetAPI: 10+ error scenarios - ExternalAPI: 10+ error scenarios **Verification:** - Graceful error handling (no crashes) - Correct exception types - Meaningful error messages --- ## Running the Tests ### Automatic Execution All test plugins run automatically on initialization and display results in their widget. ### Manual Execution Each plugin provides control buttons to: - Run all tests - Run specific test categories - Clear results - Export data ### Expected Results - **Comprehensive Test:** 60+ tests - **Stress Test:** 6+ stress scenarios - **Integration Test:** 12+ integration tests - **Event Bus Test:** 12+ messaging tests - **Performance Benchmark:** 8+ benchmarks - **Error Handling Test:** 35+ error scenarios --- ## Test Metadata Each plugin includes `manifest.json` with: ```json { "test_metadata": { "test_type": "comprehensive|stress|integration|messaging|performance|error_handling", "apis_tested": ["PluginAPI", "WidgetAPI", "ExternalAPI"], "automated": true } } ``` --- ## File Structure ``` plugins/test_suite/ ├── api_comprehensive_test/ │ ├── manifest.json │ └── plugin.py ├── widget_stress_test/ │ ├── manifest.json │ └── plugin.py ├── external_integration_test/ │ ├── manifest.json │ └── plugin.py ├── event_bus_test/ │ ├── manifest.json │ └── plugin.py ├── performance_benchmark/ │ ├── manifest.json │ └── plugin.py ├── error_handling_test/ │ ├── manifest.json │ └── plugin.py └── README.md (this file) ``` --- ## Continuous Integration These plugins can be used in CI pipelines: 1. Load plugin 2. Wait for initialization 3. Parse results from exported JSON 4. Fail build on critical test failures --- ## Maintenance When adding new API features: 1. Add corresponding tests to `api_comprehensive_test` 2. Add performance benchmark if applicable 3. Add error handling tests for edge cases 4. Update this README --- **Version:** 1.0.0 **Last Updated:** 2026-02-15 **Compatible with:** EU-Utility API v2.2.0+