Car-Repairs-Shop/GUI_TESTING_GUIDE.md
sackey a65fee9d75
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
Add customer portal workflow progress component and analytics dashboard
- Implemented the customer portal workflow progress component with detailed service progress tracking, including current status, workflow steps, and contact information.
- Developed a management workflow analytics dashboard featuring key performance indicators, charts for revenue by branch, labor utilization, and recent quality issues.
- Created tests for admin-only middleware to ensure proper access control for admin routes.
- Added tests for customer portal view rendering and workflow integration, ensuring the workflow service operates correctly through various stages.
- Introduced a .gitignore file for the debugbar storage directory to prevent unnecessary files from being tracked.
2025-08-10 19:41:25 +00:00

340 lines
11 KiB
Markdown

# GUI Testing Guide for 11-Step Automotive Repair Workflow
## 🌐 Prerequisites
- Development server running on `http://localhost:8000` (or your configured port)
- Database seeded with test data
- User accounts with different roles (Admin, Service Advisor, Service Coordinator, Technician)
## 🚀 Step-by-Step GUI Testing
### Phase 1: Setup and Login
#### 1. Access the Application
- Open browser and navigate to: `http://localhost:8000`
- You should see the login page or be redirected based on authentication
#### 2. Create Test Users (if needed)
```bash
# Run this in terminal to create test users
php artisan tinker --execute="
// Create test users with different roles
\$admin = App\Models\User::factory()->create([
'name' => 'Test Admin',
'email' => 'admin@test.com',
'password' => bcrypt('password'),
'role' => 'admin'
]);
\$advisor = App\Models\User::factory()->create([
'name' => 'Service Advisor',
'email' => 'advisor@test.com',
'password' => bcrypt('password'),
'role' => 'service_advisor'
]);
\$coordinator = App\Models\User::factory()->create([
'name' => 'Service Coordinator',
'email' => 'coordinator@test.com',
'password' => bcrypt('password'),
'role' => 'service_coordinator'
]);
\$technician = App\Models\User::factory()->create([
'name' => 'Technician',
'email' => 'tech@test.com',
'password' => bcrypt('password'),
'role' => 'technician'
]);
echo 'Test users created successfully!';
"
```
#### 3. Create Test Customer and Vehicle Data
```bash
php artisan tinker --execute="
\$customer = App\Models\Customer::factory()->create([
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@example.com',
'phone' => '555-0123'
]);
\$vehicle = App\Models\Vehicle::factory()->create([
'customer_id' => \$customer->id,
'make' => 'Toyota',
'model' => 'Camry',
'year' => 2020,
'vin' => '1234567890ABCDEFG',
'license_plate' => 'ABC123'
]);
echo 'Test customer and vehicle created: Customer ID ' . \$customer->id . ', Vehicle ID ' . \$vehicle->id;
"
```
### Phase 2: Workflow Testing
#### 🔹 Step 1: Vehicle Reception (STATUS_RECEIVED)
**Login as Service Advisor** (`advisor@test.com` / `password`)
1. **Navigate to Job Cards**
- Go to `/job-cards` or find "Job Cards" in the navigation
- Click "Create New Job Card" or similar button
2. **Fill Out Reception Form**
- **Customer**: Select "John Doe" from dropdown
- **Vehicle**: Select "Toyota Camry (ABC123)"
- **Branch Code**: Select "ACC"
- **Arrival Date/Time**: Current date/time
- **Mileage In**: Enter "75000"
- **Fuel Level In**: Select "Half"
- **Customer Reported Issues**: Enter "Engine making noise during acceleration"
- **Vehicle Condition Notes**: Enter "Vehicle appears clean, customer reports issue started 2 weeks ago"
- **Keys Location**: Select "Service Desk"
- **Personal Items Removed**: Check the box
- **Photos Taken**: Check the box
3. **Submit and Verify**
- Click "Create Job Card"
- Verify job card number starts with "ACC/" (e.g., ACC/00001)
- Verify status shows "Vehicle Received"
- Note the Job Card ID for next steps
#### 🔹 Step 2: Initial Inspection (STATUS_INSPECTED)
**Stay logged in as Service Advisor or switch to Inspector role**
1. **Access Job Card**
- Find the job card created in Step 1
- Click "View" or "Edit" to open job card details
2. **Perform Initial Inspection**
- Look for "Initial Inspection" button or tab
- Fill out inspection checklist:
- **Engine**: Select "Fair"
- **Brakes**: Select "Good"
- **Tires**: Select "Excellent"
- **Oil Level**: Select "Full"
- **Coolant Level**: Select "Full"
- **Battery**: Select "Good"
- **Overall Condition**: Enter "Engine requires diagnosis, other systems in good condition"
- **Inspector Notes**: Enter "Noise audible during test drive, engine vibration detected"
3. **Complete Inspection**
- Click "Complete Initial Inspection"
- Verify status changes to "Initial Inspection Complete"
- Check that inspection data is saved in the system
#### 🔹 Step 3: Service Assignment (STATUS_ASSIGNED_FOR_DIAGNOSIS)
**Login as Admin or Service Manager**
1. **Access Job Card Management**
- Navigate to job cards list
- Find the inspected job card
- Click "Assign for Diagnosis"
2. **Assign to Service Coordinator**
- **Service Coordinator**: Select "Service Coordinator" from dropdown
- **Priority Level**: Select "Medium"
- **Estimated Completion**: Set date 2-3 days from now
- **Assignment Notes**: Enter "Please diagnose engine noise issue"
3. **Confirm Assignment**
- Click "Assign"
- Verify status changes to "Assigned for Diagnosis"
- Check that diagnosis record is created
### Phase 3: Customer Portal Testing
#### 🔹 Test Customer Portal Access
1. **Create Customer User Account**
```bash
php artisan tinker --execute="
\$customer = App\Models\Customer::where('email', 'john.doe@example.com')->first();
\$customerUser = App\Models\User::factory()->create([
'name' => \$customer->first_name . ' ' . \$customer->last_name,
'email' => \$customer->email,
'password' => bcrypt('password'),
'role' => 'customer'
]);
// Link customer to user
\$customer->update(['user_id' => \$customerUser->id]);
echo 'Customer user account created';
"
```
2. **Login as Customer** (`john.doe@example.com` / `password`)
- Should be redirected to `/customer-portal`
- Should see dashboard with active job cards
3. **Test Workflow Progress Component**
- Navigate to job card details
- Verify progress visualization shows:
- ✅ Step 1: Vehicle Reception (Completed)
- ✅ Step 2: Initial Inspection (Completed)
- 🔄 Step 3: Service Assignment (Current)
- ⏳ Steps 4-11: Pending
- Check progress percentage calculation
- Verify service advisor contact information displays
### Phase 4: Management Analytics Testing
#### 🔹 Test Management Dashboard
**Login as Admin** (`admin@test.com` / `password`)
1. **Access Analytics Dashboard**
- Navigate to `/reports/workflow-analytics`
- Should see comprehensive dashboard
2. **Verify Key Metrics Display**
- **Total Revenue**: Should show calculated amount
- **Completed Jobs**: Should show count
- **Average Turnaround**: Should show days
- **Quality Alerts**: Should show count
3. **Test Filtering**
- **Branch Filter**: Select different branches (ACC, KSI)
- **Time Period**: Test "Last 7 Days", "Last 30 Days", etc.
- Verify charts and data update accordingly
4. **Test Export Functionality**
- Click "Export Workflow Report"
- Click "Export Labor Utilization"
- Click "Export Quality Metrics"
- Verify files download or reports generate
### Phase 5: Advanced Workflow Testing
#### 🔹 Test Workflow Progression Validation
1. **Create New Job Card**
- Create another job card in "Received" status
2. **Try to Skip Steps**
- Attempt to assign directly to diagnosis without inspection
- Should see validation error preventing invalid progression
3. **Test Status Transitions**
- Progress through each step in correct order
- Verify each status change is properly recorded
- Check timestamps are accurate
#### 🔹 Test Quality Control System
1. **Complete Initial Inspection**
- Record inspection with some "Fair" or "Poor" ratings
2. **Later Complete Final Inspection**
- Record outgoing inspection with improved ratings
- System should detect improvements automatically
3. **Generate Quality Alerts**
- Create scenario where outgoing inspection is worse than incoming
- Verify quality alert is generated and displayed
### Phase 6: Multi-Branch Testing
#### 🔹 Test Branch-Specific Operations
1. **Create Job Cards for Different Branches**
- Create job card with branch code "ACC"
- Create job card with branch code "KSI"
- Create job card with branch code "NBO"
2. **Verify Branch-Specific Numbering**
- ACC jobs should have format: ACC/00001, ACC/00002, etc.
- KSI jobs should have format: KSI/00001, KSI/00002, etc.
- Numbering should be independent per branch
3. **Test Branch Filtering**
- In analytics dashboard, filter by specific branch
- Verify only that branch's data appears
- Test "All Branches" shows combined data
### Phase 7: Error Handling and Edge Cases
#### 🔹 Test Error Scenarios
1. **Invalid Data Entry**
- Try submitting forms with missing required fields
- Verify validation messages appear
- Check error handling is user-friendly
2. **Workflow Validation**
- Try accessing steps out of order
- Verify proper error messages
- Ensure system maintains data integrity
3. **Permission Testing**
- Login as different user roles
- Verify role-based access restrictions
- Test that users only see appropriate sections
## 🎯 Expected Results Checklist
### ✅ Job Card Management
- [ ] Job cards can be created with proper branch-specific numbering
- [ ] Status progression follows 11-step workflow correctly
- [ ] All required fields are validated properly
- [ ] Data persists correctly between steps
### ✅ Customer Portal
- [ ] Customers can view their job card progress
- [ ] Progress visualization shows current step clearly
- [ ] Estimated completion times display
- [ ] Contact information is accessible
### ✅ Management Analytics
- [ ] Dashboard loads without errors
- [ ] All metrics calculate correctly
- [ ] Filtering works across branches and time periods
- [ ] Export functionality generates reports
### ✅ Quality Control
- [ ] Inspection checklists save properly
- [ ] Quality comparisons detect improvements/issues
- [ ] Quality alerts generate when appropriate
- [ ] Historical inspection data is preserved
### ✅ User Experience
- [ ] Navigation is intuitive across all user roles
- [ ] Loading times are acceptable
- [ ] Error messages are clear and helpful
- [ ] Interface is responsive on different screen sizes
## 🚨 Troubleshooting Common Issues
### Issue: "Page Not Found" Errors
**Solution**: Check routes are properly registered in `routes/web.php`
### Issue: Permission Denied
**Solution**: Verify user has correct role and permissions
### Issue: Database Errors
**Solution**: Ensure migrations are up to date: `php artisan migrate`
### Issue: Livewire Component Not Loading
**Solution**: Clear cache: `php artisan view:clear && php artisan route:clear`
### Issue: Missing CSS/JS Assets
**Solution**: Build assets: `npm run build` or `npm run dev`
## 📋 Testing Completion Verification
Once you've completed all testing phases, verify:
1. **Workflow Integrity**: Each step transitions correctly
2. **Data Consistency**: Information persists accurately
3. **User Experience**: Interface is intuitive for all roles
4. **Performance**: Pages load quickly and smoothly
5. **Error Handling**: Graceful handling of invalid operations
6. **Security**: Proper access controls for different user types
Your 11-step automotive repair workflow is now fully tested and ready for production use! 🎉