init projectmycelium
This commit is contained in:
191
tests/frontend_ux/README.md
Normal file
191
tests/frontend_ux/README.md
Normal file
@@ -0,0 +1,191 @@
|
||||
# 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
|
Reference in New Issue
Block a user