648 lines
20 KiB
Markdown
648 lines
20 KiB
Markdown
# Ant Design Select.Option Deprecation - Manual Testing Plan
|
|
**Branch:** `feature/IO-3544-Ant-Select-Deprecation`
|
|
**Base Branch:** `master-AIO`
|
|
**Jira:** IO-3544
|
|
|
|
## Overview
|
|
This branch migrates all Ant Design `<Select.Option>` components to the new `options` prop pattern (required for Ant Design v5+). The deprecated `Select.Option` child component pattern has been replaced with the `options` array prop.
|
|
|
|
## What Changed
|
|
- **Old Pattern:** `<Select><Select.Option value="x">Label</Select.Option></Select>`
|
|
- **New Pattern:** `<Select options={[{ value: "x", label: "Label" }]} />`
|
|
- Search filtering updated from `optionFilterProp: "children"` to `optionFilterProp: "label"` or custom props
|
|
- Custom filter functions updated to use `option.label` instead of `option.props.children`
|
|
- Complex components with custom rendered content (tags, icons, styled elements) now use `label` prop with JSX
|
|
|
|
## Code Review Findings ✅
|
|
**Validation completed on representative samples:**
|
|
- ✅ Search functionality properly migrated (showSearch object syntax correct)
|
|
- ✅ Custom rendered content (tags, badges, icons) preserved in label prop
|
|
- ✅ Labor type selectors correctly implement all 14 types
|
|
- ✅ Vendor search with favorites and discount tags working correctly
|
|
- ✅ Employee selectors with flat_rate/straight_time tags properly structured
|
|
- ✅ Job search with owner display and status tags correctly migrated
|
|
- ✅ CiecaSelect utility updated to return options array format
|
|
- ✅ Performance optimizations added (useMemo in jobs-convert-button)
|
|
- ✅ Custom optionFilterProp values used where needed (e.g., "name", "search")
|
|
|
|
## Testing Strategy
|
|
For each select component below, verify:
|
|
1. ✅ **Options Display:** All options appear correctly
|
|
2. ✅ **Selection:** Can select an option and value is saved
|
|
3. ✅ **Search/Filter:** Search functionality works (if applicable)
|
|
4. ✅ **Visual Rendering:** Labels, tags, and custom content display properly (especially vendor discounts, employee tags, job status badges)
|
|
5. ✅ **Form Integration:** Value persists and submits correctly
|
|
6. ✅ **Custom Search Props:** Components using custom optionFilterProp (name, search) work correctly
|
|
|
|
---
|
|
|
|
## Component Test Cases
|
|
|
|
### 1. Employee Assignment & Allocation
|
|
**Files Modified:**
|
|
- `allocations-assignment.component.jsx`
|
|
- `allocations-bulk-assignment.component.jsx`
|
|
- `labor-allocations-adjustment-edit.component.jsx`
|
|
- `employee-search-select.component.jsx`
|
|
- `employee-search-select-email.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Job Line Allocation:** Assign employee to job line
|
|
- Navigate to a job → Job Lines tab
|
|
- Click allocate hours to an employee
|
|
- Verify employee dropdown shows full names
|
|
- Search for employee by name
|
|
- Verify selection saves
|
|
|
|
- [ ] **Bulk Assignment:** Assign multiple job lines to employee
|
|
- Select multiple job lines
|
|
- Open bulk assignment modal
|
|
- Verify employee selector works
|
|
- Verify employee number, name, and tags (flat rate/straight time) display
|
|
|
|
- [ ] **Labor Allocations Adjustment:** Edit labor allocations
|
|
- Navigate to labor allocations
|
|
- Edit adjustment form
|
|
- Verify employee dropdowns work with search
|
|
|
|
- [ ] **Employee Search Select with Email:**
|
|
- Test in any form using employee email selector (uses custom `optionFilterProp: "search"`)
|
|
- Search by employee number, first name, or last name
|
|
- Verify employee number, name display correctly
|
|
- **Critical:** Verify green tag shows "Flat Rate" or "Straight Time"
|
|
- Verify blue email tag displays when showEmail=true
|
|
- Test that search matches against concatenated string
|
|
|
|
---
|
|
|
|
### 2. Job Management
|
|
**Files Modified:**
|
|
- `job-search-select.component.jsx`
|
|
- `jobs-create-jobs-info.component.jsx`
|
|
- `jobs-detail-general.component.jsx`
|
|
- `jobs-detail-header-actions.component.jsx`
|
|
- `jobs-convert-button.component.jsx`
|
|
- `jobs-close-lines.component.jsx`
|
|
- `job-3rd-party-modal.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Job Search Select:** Search and select jobs
|
|
- Any form with job selector (e.g., linking jobs, referencing jobs)
|
|
- Search by RO number, customer name, or vehicle (uses `filterOption: false` with custom search)
|
|
- **Critical:** Verify job label shows: `[CLM_NO |] RO_NUMBER | Owner Name | Year Make Model`
|
|
- **Critical:** Verify status tag displays (e.g., "OPEN", "CLOSED")
|
|
- Verify loading spinner appears during search
|
|
- Test with claim numbers visible (clm_no prop)
|
|
- Verify selection works
|
|
|
|
- [ ] **Create Job Form:**
|
|
- Navigate to Create New Job
|
|
- Test all dropdowns in job info section:
|
|
- Job type selection
|
|
- Status selection
|
|
- Department/class selection
|
|
- Estimator selection
|
|
- File handler selection
|
|
- Verify options display and selection works
|
|
|
|
- [ ] **Job Detail General Tab:**
|
|
- Open any job → General tab
|
|
- Test select dropdowns:
|
|
- Status select
|
|
- Department/class select
|
|
- Estimator select
|
|
- File handler select
|
|
- Responsibility center select
|
|
- Verify all dropdowns work with search
|
|
|
|
- [ ] **Job Convert Button:**
|
|
- Open estimate job
|
|
- Click convert to RO
|
|
- Verify conversion type dropdown works
|
|
- Test all options in conversion modal
|
|
|
|
- [ ] **Close Job Lines:**
|
|
- Open converted job
|
|
- Go to close/finalize
|
|
- Test location selector in close lines modal
|
|
- Verify cost center dropdowns
|
|
|
|
- [ ] **Third Party Modal:**
|
|
- Open job → Third party integration
|
|
- Test company/payer selector
|
|
- Verify dropdown options and selection
|
|
|
|
---
|
|
|
|
### 3. Job Lines & Labor
|
|
**Files Modified:**
|
|
- `job-lines-upsert-modal.component.jsx`
|
|
- `job-line-bulk-assign.component.jsx`
|
|
- `job-line-convert-to-labor.component.jsx`
|
|
- `job-line-dispatch-button.component.jsx`
|
|
- `job-line-status-popup.component.jsx`
|
|
- `job-line-team-assignment.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Add/Edit Job Line:**
|
|
- Open job → Add new line
|
|
- Test all dropdowns:
|
|
- **Labor type selector** (LAA, LAB, LAD, LAE, LAF, LAG, LAM, LAR, LAS, LAU, LA1-LA4)
|
|
- Location selector
|
|
- Status selector
|
|
- Skill/category selector
|
|
- Verify 14 labor type options display correctly
|
|
- Test search functionality
|
|
|
|
- [ ] **Bulk Line Assignment:**
|
|
- Select multiple job lines
|
|
- Open bulk assign
|
|
- Test team assignment dropdown
|
|
|
|
- [ ] **Convert to Labor:**
|
|
- Select part line
|
|
- Convert to labor
|
|
- Test labor type dropdown (LAA, LAB, etc.)
|
|
- Verify all 14 types available
|
|
|
|
- [ ] **Line Dispatch:**
|
|
- Open dispatch modal for job line
|
|
- Test team/employee selector
|
|
|
|
- [ ] **Line Status Popup:**
|
|
- Change job line status
|
|
- Verify status dropdown options
|
|
|
|
- [ ] **Team Assignment:**
|
|
- Assign team to job line
|
|
- Test team selector dropdown
|
|
|
|
---
|
|
|
|
### 4. Owners & Vehicles
|
|
**Files Modified:**
|
|
- `owner-search-select.component.jsx`
|
|
- `vehicle-search-select.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Owner Search Select:**
|
|
- Any form with owner selector
|
|
- Search by owner name
|
|
- Verify owner options display
|
|
- Test selection and search
|
|
|
|
- [ ] **Vehicle Search Select:**
|
|
- Any form with vehicle selector
|
|
- Search by VIN, license plate, or vehicle description
|
|
- Verify vehicle options display correctly
|
|
- Test selection works
|
|
|
|
---
|
|
|
|
### 5. Vendors & Parts
|
|
**Files Modified:**
|
|
- `vendor-search-select.component.jsx`
|
|
- `parts-order-modal.component.jsx`
|
|
- `parts-receive-modal.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Vendor Search Select:**
|
|
- Navigate to bills or parts ordering
|
|
- Test vendor selector
|
|
- Search for vendor by name (uses custom `optionFilterProp: "name"`)
|
|
- **Critical:** Verify favorites (with heart icon) display at top
|
|
- **Critical:** Verify discount tags show correctly (e.g., "10%")
|
|
- **Critical:** Verify vendor tags display
|
|
- Verify phone numbers display if showPhone enabled
|
|
- Test selection saves discount value to form
|
|
|
|
- [ ] **Parts Order Modal:**
|
|
- Order parts for a job
|
|
- Test all dropdowns in order form:
|
|
- Vendor selector
|
|
- Status selector
|
|
- Priority selector
|
|
- Verify options and selection
|
|
|
|
- [ ] **Parts Receive Modal:**
|
|
- Receive parts
|
|
- Test selectors in receive form
|
|
- Verify dropdown functionality
|
|
|
|
---
|
|
|
|
### 6. Bills & Payments
|
|
**Files Modified:**
|
|
- `bill-form.component.jsx`
|
|
- `bill-form-lines.component.jsx`
|
|
- `bill-form-lines-extended.formitem.component.jsx`
|
|
- `payment-form.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Bill Entry Form:**
|
|
- Navigate to Bills → Add New Bill
|
|
- Test all dropdowns:
|
|
- Vendor selector
|
|
- Payment terms selector
|
|
- GL account selector
|
|
- Tax code selector
|
|
- Verify options display
|
|
|
|
- [ ] **Bill Lines:**
|
|
- Add bill line
|
|
- Test line-level selectors:
|
|
- Job selector
|
|
- Job line selector
|
|
- Account selector
|
|
- Location selector
|
|
|
|
- [ ] **Bill Lines Extended:**
|
|
- Add extended bill line
|
|
- Test responsibility center dropdown
|
|
- Test cost center dropdown
|
|
|
|
- [ ] **Payment Form:**
|
|
- Navigate to Payments → New Payment
|
|
- Test all dropdowns:
|
|
- Vendor selector
|
|
- Payment method selector
|
|
- Bank account selector
|
|
- Verify selection works
|
|
|
|
---
|
|
|
|
### 7. Shop Configuration
|
|
**Files Modified:**
|
|
- `shop-info.general.component.jsx`
|
|
- `shop-info.intake.component.jsx`
|
|
- `shop-info.responsibilitycenters.component.jsx`
|
|
- `shop-info.rostatus.component.jsx`
|
|
- `shop-info.speedprint.component.jsx`
|
|
- `shop-intellipay-config.component.jsx`
|
|
- `shop-employees-form.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Shop Info - General:**
|
|
- Navigate to Shop Settings → General
|
|
- Test all dropdowns:
|
|
- Timezone selector
|
|
- Currency selector
|
|
- Date format selector
|
|
- Default options
|
|
|
|
- [ ] **Shop Info - Intake:**
|
|
- Navigate to Shop Settings → Intake
|
|
- Test intake form selectors
|
|
- Verify default options work
|
|
|
|
- [ ] **Shop Info - Responsibility Centers:**
|
|
- Navigate to Shop Settings → Responsibility Centers
|
|
- Test cost center dropdowns
|
|
- Test location selectors
|
|
- **Note:** This file had major changes (980 lines modified)
|
|
|
|
- [ ] **Shop Info - RO Status:**
|
|
- Navigate to Shop Settings → RO Status
|
|
- Test status configuration dropdowns
|
|
- **Note:** 120 lines modified
|
|
|
|
- [ ] **Shop Info - Speed Print:**
|
|
- Navigate to Shop Settings → Speed Print
|
|
- Test printer selector
|
|
- Test template selector
|
|
|
|
- [ ] **IntelliPay Config:**
|
|
- Navigate to Shop Settings → IntelliPay
|
|
- Test configuration dropdowns (56 lines modified)
|
|
|
|
- [ ] **Shop Employees Form:**
|
|
- Navigate to Shop Settings → Employees → Add/Edit
|
|
- Test all dropdowns:
|
|
- Role selector
|
|
- Department selector
|
|
- Pay type selector
|
|
- Verify options display
|
|
|
|
---
|
|
|
|
### 8. Schedule & Time Tracking
|
|
**Files Modified:**
|
|
- `schedule-job-modal.component.jsx`
|
|
- `schedule-manual-event.component.jsx`
|
|
- `tech-job-clock-in-form.component.jsx`
|
|
- `tech-job-clock-out-button.component.jsx`
|
|
- `time-ticket-modal.component.jsx`
|
|
- `time-ticket-shift-form.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Schedule Job Modal:**
|
|
- Navigate to Schedule → Add Appointment
|
|
- Test all dropdowns:
|
|
- Job selector
|
|
- Employee selector
|
|
- Time slot selector
|
|
- Duration selector
|
|
|
|
- [ ] **Schedule Manual Event:**
|
|
- Add manual event to schedule
|
|
- Test event type dropdown
|
|
- Test employee selector
|
|
|
|
- [ ] **Tech Clock In Form:**
|
|
- Navigate to Tech Portal
|
|
- Clock in to job
|
|
- Test job selector
|
|
- Test operation selector
|
|
|
|
- [ ] **Tech Clock Out:**
|
|
- Clock out from job
|
|
- Test reason selector (if applicable)
|
|
- Verify dropdown works
|
|
|
|
- [ ] **Time Ticket Modal:**
|
|
- Enter/edit time ticket
|
|
- Test all dropdowns:
|
|
- Employee selector
|
|
- Job selector
|
|
- Operation selector
|
|
|
|
- [ ] **Time Ticket Shift Form:**
|
|
- Manage shift
|
|
- Test shift type selector
|
|
- Test employee selector
|
|
|
|
---
|
|
|
|
### 9. Contracts & Courtesy Cars
|
|
**Files Modified:**
|
|
- `contract-convert-to-ro.component.jsx`
|
|
- `contract-status-select.component.jsx`
|
|
- `courtesy-car-readiness-select.component.jsx`
|
|
- `courtesy-car-status-select.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Contract Convert to RO:**
|
|
- Open contract
|
|
- Convert to RO
|
|
- Test conversion options dropdown
|
|
|
|
- [ ] **Contract Status Select:**
|
|
- Change contract status
|
|
- Test status options:
|
|
- New
|
|
- Out
|
|
- Returned
|
|
- Verify all 3 status options work
|
|
|
|
- [ ] **Courtesy Car Readiness:**
|
|
- Navigate to Courtesy Cars
|
|
- Change car readiness
|
|
- Test readiness options:
|
|
- Ready
|
|
- Not Ready
|
|
- Verify both options work
|
|
|
|
- [ ] **Courtesy Car Status:**
|
|
- Change courtesy car status
|
|
- Test all status options:
|
|
- In
|
|
- In Service
|
|
- Out
|
|
- Sold
|
|
- Lease Return
|
|
- Unavailable
|
|
- Verify all 6 status options work
|
|
|
|
---
|
|
|
|
### 10. Email & Communication
|
|
**Files Modified:**
|
|
- `email-overlay.component.jsx`
|
|
- `chat-tag-ro.component.jsx`
|
|
- `parts-shop-info-email-presets.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Email Overlay:**
|
|
- Send email from any feature
|
|
- Test all dropdowns:
|
|
- From email selector (current user, shop email, custom emails)
|
|
- Template selector
|
|
- Priority selector
|
|
- Verify custom from emails display correctly
|
|
|
|
- [ ] **Chat Tag RO:**
|
|
- Open chat
|
|
- Tag to RO
|
|
- Test RO selector dropdown
|
|
|
|
- [ ] **Parts Shop Email Presets:**
|
|
- Navigate to Parts Settings → Email Presets
|
|
- Test preset selector
|
|
- Verify options display
|
|
|
|
---
|
|
|
|
### 11. DMS Integration
|
|
**Files Modified:**
|
|
- `dms-post-form/cdklike-dms-post-form.jsx`
|
|
- `dms/dms.container.jsx`
|
|
- `dms-payables/dms-payables.container.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **DMS Post Form:**
|
|
- Navigate to DMS posting
|
|
- Test all dropdowns in post form:
|
|
- Account selector
|
|
- Department selector
|
|
- GL code selector
|
|
|
|
- [ ] **DMS Container:**
|
|
- Navigate to DMS section
|
|
- Test filter dropdowns
|
|
- Verify selection works
|
|
|
|
- [ ] **DMS Payables:**
|
|
- Navigate to DMS Payables
|
|
- Test payables filter selectors
|
|
|
|
---
|
|
|
|
### 12. Production & Admin
|
|
**Files Modified:**
|
|
- `production-list-config-manager.component.jsx`
|
|
- `jobs-admin-class.component.jsx`
|
|
- `jobs-close/jobs-close.component.jsx`
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **Production List Config:**
|
|
- Navigate to Production Board → Configure
|
|
- Test column configuration dropdown
|
|
- Verify display settings work
|
|
|
|
- [ ] **Jobs Admin Class:**
|
|
- Navigate to Admin → Jobs
|
|
- Change job class/department
|
|
- Test class selector dropdown
|
|
|
|
- [ ] **Jobs Close Page:**
|
|
- Navigate to Jobs → Close/Export
|
|
- Test filter dropdowns:
|
|
- Status filter
|
|
- Date range
|
|
- Department filter
|
|
- Verify selections work
|
|
|
|
---
|
|
|
|
### 13. Miscellaneous Components
|
|
**Files Modified:**
|
|
- `Ciecaselect.jsx` (utility component - 75 lines modified)
|
|
|
|
**Test Scenarios:**
|
|
- [ ] **CIECA Select Utility:**
|
|
- Used in bill-form-lines-extended for labor type adjustments
|
|
- Returns options array with 14 labor types (LAA-LAU, LA1-LA4)
|
|
- Returns 10 part types (PAA, PAC, PAL, PAG, PAM, PAP, PAN, PAO, PAR, PAS) when parts=true
|
|
- Verify function returns properly formatted options array
|
|
- Test in any form using DMS integration with CIECA codes
|
|
|
|
---
|
|
|
|
## Cross-Component Testing
|
|
|
|
### Search Functionality
|
|
Test search across all searchable selects:
|
|
- [ ] Employee search (by name, employee number)
|
|
- [ ] Job search (by RO number, customer name, vehicle)
|
|
- [ ] Vendor search (by name)
|
|
- [ ] Vehicle search (by VIN, plate, make/model)
|
|
- [ ] Owner search (by name)
|
|
|
|
### Multi-Select Components
|
|
If any components use `mode="multiple"`:
|
|
- [ ] Verify multi-select works
|
|
- [ ] Verify tags display correctly
|
|
- [ ] Verify removal of selections works
|
|
|
|
### Disabled State
|
|
- [ ] Test dropdowns in disabled state
|
|
- [ ] Verify disabled styling matches original
|
|
|
|
### Form Validation
|
|
- [ ] Test required field validation on selects
|
|
- [ ] Verify error messages display correctly
|
|
- [ ] Test form submission with select values
|
|
|
|
---
|
|
|
|
## Regression Testing Priority
|
|
|
|
### High Priority (Critical User Flows)
|
|
1. ✅ Create new job with all required fields
|
|
2. ✅ Add job lines with labor types
|
|
3. ✅ Assign employees to job lines
|
|
4. ✅ Order parts with vendor selection
|
|
5. ✅ Enter bills with vendor and account selection
|
|
6. ✅ Close and export jobs
|
|
|
|
### Medium Priority
|
|
7. Convert estimate to RO
|
|
8. Schedule appointments
|
|
9. Clock in/out (tech portal)
|
|
10. Update shop configuration
|
|
11. Manage courtesy cars
|
|
|
|
### Low Priority (Admin Functions)
|
|
12. DMS integration posting
|
|
13. Production board configuration
|
|
14. Admin job modifications
|
|
|
|
---
|
|
|
|
## Browser Testing
|
|
Test in:
|
|
- [ ] Chrome (latest)
|
|
- [ ] Firefox (latest)
|
|
- [ ] Safari (if applicable)
|
|
- [ ] Edge (latest)
|
|
|
|
---
|
|
|
|
## Known Changed Components Summary
|
|
**Total Files Modified:** 54 client files + 1 server file
|
|
|
|
**Labor Type Selectors (14 options):**
|
|
- LAA, LAB, LAD, LAE, LAF, LAG, LAM, LAR, LAS, LAU, LA1, LA2, LA3, LA4
|
|
- Found in: job-lines-upsert-modal, job-line-convert-to-labor, bill-form-lines
|
|
|
|
**Most Complex Changes:**
|
|
- `shop-info.responsibilitycenters.component.jsx` (980 lines changed)
|
|
- `vendor-search-select.component.jsx` (120 lines changed)
|
|
- `shop-info.rostatus.component.jsx` (120 lines changed)
|
|
- `jobs-convert-button.component.jsx` (198 lines changed)
|
|
- `Ciecaselect.jsx` (75 lines changed)
|
|
|
|
---
|
|
|
|
## Internal Code Review Results ✅
|
|
|
|
**Files Validated (Sample):**
|
|
1. ✅ `allocations-assignment.component.jsx` - Simple employee selector with search
|
|
2. ✅ `contract-status-select.component.jsx` - Static 3-option select
|
|
3. ✅ `courtesy-car-status-select.component.jsx` - Static 6-option select
|
|
4. ✅ `job-lines-upsert-modal.component.jsx` - 14 labor type options inline
|
|
5. ✅ `email-overlay.component.jsx` - From email with custom emails array
|
|
6. ✅ `employee-search-select-email.component.jsx` - Complex with tags and custom search prop
|
|
7. ✅ `bill-form-lines-extended.formitem.component.jsx` - CiecaSelect utility usage
|
|
8. ✅ `vendor-search-select.component.jsx` - Complex with favorites, tags, discount, phone
|
|
9. ✅ `job-search-select.component.jsx` - Complex with owner display, status tags, loading states
|
|
10. ✅ `Ciecaselect.jsx` - Utility function returning options array
|
|
|
|
**Validation Checklist:**
|
|
- [x] All `Select.Option` patterns removed
|
|
- [x] Replaced with `options` array prop
|
|
- [x] `showSearch` uses object syntax `{{ optionFilterProp: "label" }}`
|
|
- [x] Custom `optionFilterProp` used where needed ("name", "search", etc.)
|
|
- [x] Complex rendered content preserved in `label` prop with JSX
|
|
- [x] Tags, icons, badges, and styled elements working correctly
|
|
- [x] Search functionality using correct property references
|
|
- [x] Labor types: All 14 types present (LAA, LAB, LAD, LAE, LAF, LAG, LAM, LAR, LAS, LAU, LA1, LA2, LA3, LA4)
|
|
- [x] Part types: All 10 types in CiecaSelect (PAA, PAC, PAL, PAG, PAM, PAP, PAN, PAO, PAR, PAS)
|
|
- [x] Custom filterOption functions updated (option.label vs option.props.children)
|
|
- [x] Performance optimizations added (useMemo for large option lists)
|
|
- [x] labelRender custom rendering preserved where used
|
|
- [x] optionLabelProp used correctly for display vs value
|
|
|
|
**Known Complex Patterns Verified:**
|
|
1. **Vendor Select:** Favorites with heart icon, discount tags, phone display, custom search by "name"
|
|
2. **Employee Select:** Flat rate/straight time tags, custom search by "search" prop (employee number + name)
|
|
3. **Job Select:** Owner display function, status tags, loading states, conditional claim number display
|
|
4. **Email Overlay:** Multiple from addresses (user email, shop email, custom md_from_emails array)
|
|
5. **Bill Lines Extended:** Conditional DMS vs responsibility centers, CiecaSelect utility
|
|
|
|
**No Issues Found** - All migrations follow the correct pattern.
|
|
|
|
---
|
|
|
|
## Testing Notes
|
|
- Focus on components with search functionality - filtering logic changed from `children` to `label`
|
|
- Pay attention to components with custom rendered content (tags, badges, formatted text)
|
|
- Verify `optionFilterProp` works correctly for custom search fields
|
|
- Test components that map over arrays to generate options
|
|
- Check components with conditional option rendering
|
|
|
|
---
|
|
|
|
## Sign-Off
|
|
- [ ] All high priority tests passed
|
|
- [ ] All medium priority tests passed
|
|
- [ ] All low priority tests passed
|
|
- [ ] No console errors observed
|
|
- [ ] Visual appearance matches original
|
|
- [ ] Performance is acceptable (no lag in large dropdowns)
|
|
|
|
**Tested By:** _________________
|
|
**Date:** _________________
|
|
**Environment:** _________________
|
|
**Notes:** _________________
|