# Frontend UX Tests ## Overview Complete UX testing framework for Project Mycelium covering all user capabilities defined in the Concrete UX List. These tests validate the complete user experience across all marketplace features. ## Test Status **✅ VALIDATED WORKING TESTS:** - SSH Key Management (reference template) - Public Access (documentation pages) - Settings Management (/dashboard/settings) **🔧 REWRITTEN TESTS (PENDING VALIDATION):** - Credits Wallet - Purchase Cart - Authentication - Marketplace Categories - Provider Dashboards ## Individual Test Execution Run individual UX test modules with detailed output: ### 1. SSH Key Management (✅ Working) ```bash cargo test --test ssh_key_frontend_ux --features="ux_testing" -- --nocapture ``` ### 2. Public Access (✅ Working) ```bash cargo test --test public_access_ux --features="ux_testing" -- --nocapture ``` ### 3. Settings Management (✅ Working) ```bash cargo test --test settings_management_ux --features="ux_testing" -- --nocapture ``` ### 4. Credits Wallet (🔧 Pending Validation) ```bash cargo test --test credits_wallet_ux --features="ux_testing" -- --nocapture ``` ### 5. Purchase Cart (🔧 Pending Validation) ```bash cargo test --test purchase_cart_ux --features="ux_testing" -- --nocapture ``` ### 6. Authentication (🔧 Pending Validation) ```bash cargo test --test authentication_ux --features="ux_testing" -- --nocapture ``` ### 7. Marketplace Categories (🔧 Pending Validation) ```bash cargo test --test marketplace_categories_ux --features="ux_testing" -- --nocapture ``` ### 8. Provider Dashboards (🔧 Pending Validation) ```bash cargo test --test provider_dashboards_ux --features="ux_testing" -- --nocapture ``` ## Complete Test Suite Execution Run all UX tests together (when all are validated): ```bash cargo test --features="ux_testing" -- --nocapture ``` Or run all tests matching the pattern: ```bash cargo test --features="ux_testing" --test "*_ux" -- --nocapture ``` ## Test Architecture ### Canonical UX Test Pattern (adopted) All tests follow this canonical pattern: - Direct service calls using `.builder().build()` (no HTTP/session mocking) - Persistent data via `UserPersistence` under `user_data/{email}.json` - Deterministic cleanup: remove `user_data/{email}.json` before/after - Per-step runner with `catch_unwind` to print ✅/❌ and aggregate failures - Structured logging via `env_logger` (use `-- --nocapture` to see logs) ### Key Features - **Isolated Test Environment**: Uses `--features="ux_testing"` flag - **Persistent Data Testing**: Real data operations without mocking - **Cross-Reference Testing**: Manual testing validates automated results - **Complete User Workflows**: End-to-end UX validation ### Current adoption of the per-step runner - `tests/frontend_ux/settings_management_ux_test.rs` ✅ - `tests/frontend_ux/public_access_ux_test.rs` ✅ ### File Organization ``` tests/frontend_ux/ ├── README.md # This file ├── mod.rs # Test module configuration ├── test_runner.rs # Comprehensive test suite runner ├── ssh_key_frontend_ux_test.rs # ✅ SSH key management (working) ├── public_access_ux_test.rs # ✅ Public access (working) ├── settings_management_ux_test.rs # ✅ Settings management (working) ├── credits_wallet_ux_test.rs # 🔧 Credits wallet (pending) ├── purchase_cart_ux_test.rs # 🔧 Purchase cart (pending) ├── authentication_ux_test.rs # 🔧 Authentication (pending) ├── marketplace_categories_ux_test.rs # 🔧 Marketplace categories (pending) └── provider_dashboards_ux_test.rs # 🔧 Provider dashboards (pending) ``` ## Dashboard Settings UX (/dashboard/settings) ### Overview - **Scope**: Validates 6 settings operations - Profile update (name, country, timezone) - Password change workflow validation - SSH key management integration - Notification preferences management - Currency display preferences - Account management workflow (soft delete + permanent delete with persistence verification) - **Services used**: `UserService`, `CurrencyService`, `SSHKeyService`, `UserPersistence` via `.builder().build()` - **Persistence**: Real data under `user_data/{email}.json` - **Feature flag**: Requires `--features ux_testing` ### How to run ```bash cargo test --test settings_management_ux --features="ux_testing" -- --nocapture ``` ### Expected output (snippet) ```text 🎯 Settings Management - Complete UX Workflow Test 📋 Testing all 6 operations: Profile → Password → SSH → Notifications → Currency → Account ... 🎯 Settings Management UX Workflow Test Results: ✅ Profile Update Operations - WORKING ✅ Password Change Workflow - WORKING ✅ SSH Key Management Integration - WORKING ✅ Notification Settings Management - WORKING ✅ Currency Preferences Management - WORKING ✅ Account Management (soft delete + permanent delete) - WORKING ✅ All 6 settings management capabilities validated successfully! ``` ### Manual Testing checklist - **Profile update**: Change name, country, timezone; save; refresh page; verify values persist and reflect in UI and `user_data/` file. - **Password change**: Attempt invalid current password (error), weak new password (strength warning), mismatched confirmation (error), and valid change (success toast). No actual password stored in dev. - **SSH keys**: Add a valid public key; set as default; edit label; delete; verify duplicate fingerprint is rejected and invalid key format shows UI error. Persistence reflects changes. - **Notifications**: Toggle email, push, SMS, Slack, Discord; validate Slack webhook URL format; ensure toggles persist after reload and are saved to `NotificationSettings`. - **Currency**: Switch between USD/EUR/CAD; verify amounts re-render with correct symbol and formatting; rounding to 2 decimals; preference persists across sessions. - **Account management**: - Start delete flow; confirmation dialog appears; explain retention/backup steps; cancel keeps data. - Soft delete: confirm; verify `user_data/{email}.json` contains `"deleted": true` and a `deleted_at` timestamp; UI should reflect a disabled/deleted state. - Permanent delete: confirm final warning; verify `user_data/{email}.json` is removed from disk; user can no longer sign in. - Caution: This test environment performs real deletions. Back up the JSON file first if you need to preserve data. - **Performance/UX**: Page loads without jank; settings actions respond quickly; no console errors; network requests minimal and succeed. - **Data integrity**: After full workflow, check `user_data/{email}.json` shows updated profile, notifications, currency, and SSH keys without duplicates. ## Expected Output When working correctly, tests show detailed UX workflow validation: ``` 🎯 SSH Key Management - Complete UX Workflow Test 📋 Testing all 4 operations: Create → Set Default → Edit → Delete ... 🎯 SSH Key UX Workflow Test Results: ✅ Create Operation - WORKING ✅ Set Default Operation - WORKING ✅ Edit Operation - WORKING ✅ Delete Operation - WORKING ✅ All 4 SSH key operations validated successfully! ``` ## Next Steps 1. **Validate remaining 5 test modules** using proven SSH key pattern 2. **Run complete test suite** once all tests are validated 3. **Document any integration issues** discovered during validation 4. **Complete UX testing framework** for production readiness ## Technical Notes - **Compilation Errors Fixed**: All session mocking removed, persistent data pattern adopted - **Builder Pattern Compliance**: All services use `.builder().build()` construction - **Currency Service Integration**: Uses `convert_usd_to_display_currency` method - **File System Persistence**: Tests use `user_data/{email}.json` for data operations