375 lines
13 KiB
Markdown
375 lines
13 KiB
Markdown
|
|
# End-to-End Testing: Advanced Features
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
This document covers the comprehensive testing plan for the FCP XML Export & Conform and Hi-Res Auto-Relink features.
|
||
|
|
|
||
|
|
## Prerequisites
|
||
|
|
|
||
|
|
- Running MAM API server (`services/mam-api`)
|
||
|
|
- Running Worker service (`services/worker`)
|
||
|
|
- Redis instance (for BullMQ)
|
||
|
|
- S3-compatible storage
|
||
|
|
- Premiere Pro 2024 (Windows 10/11 or macOS 13+)
|
||
|
|
- Premiere Pro CEP panel installed and connected to the MAM server
|
||
|
|
- At least one project with assets in the MAM
|
||
|
|
- Assets should have hi-res originals uploaded to S3
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## FCP XML Export & Conform
|
||
|
|
|
||
|
|
### Test 1: Simple Timeline Export
|
||
|
|
|
||
|
|
1. Create a new sequence in Premiere with a single video track and 3 clips
|
||
|
|
2. Each clip should be imported through the MAM plugin (to create the asset mapping)
|
||
|
|
3. Click **Advanced > Export & Conform Timeline**
|
||
|
|
4. Select the "Web Delivery" preset
|
||
|
|
5. Click **Start Conform**
|
||
|
|
6. **Expected**: Slide panel closes, progress bar shows job status
|
||
|
|
7. Monitor the job via the Jobs page in the web UI
|
||
|
|
8. **Expected**: Job transitions through parsing, processing, encoding, uploading
|
||
|
|
9. **Expected**: New asset appears in the grid with name "Conformed: [Sequence Name]"
|
||
|
|
10. Import the conformed asset and verify playback
|
||
|
|
|
||
|
|
### Test 2: Complex Timeline (Multi-Track, Transitions)
|
||
|
|
|
||
|
|
1. Create a sequence with 3 video tracks and 6+ clips total
|
||
|
|
2. Include video transitions (cross-dissolve, dip to color)
|
||
|
|
3. Some clips should have speed/duration changes
|
||
|
|
4. Export and conform using "Broadcast Quality" preset (ProRes)
|
||
|
|
5. **Expected**: All clips are processed; transitions are rendered into the output
|
||
|
|
6. **Expected**: Output codec matches ProRes, high quality
|
||
|
|
|
||
|
|
### Test 3: All Codec Presets
|
||
|
|
|
||
|
|
| Preset | Codec | Expected Extension |
|
||
|
|
|--------|-------|--------------------|
|
||
|
|
| Broadcast Quality | ProRes | .mov |
|
||
|
|
| Web Delivery | H.264 | .mp4 |
|
||
|
|
| Archive | H.265/HEVC | .mp4 |
|
||
|
|
| Custom (H.264) | H.264 | .mp4 |
|
||
|
|
| Custom (ProRes) | ProRes | .mov |
|
||
|
|
|
||
|
|
1. Run conform job for each preset
|
||
|
|
2. Verify the output codec via `ffprobe` or Premiere's project panel
|
||
|
|
|
||
|
|
### Test 4: All Resolution Options
|
||
|
|
|
||
|
|
1. Test with "Match Sequence" - output should match the sequence resolution
|
||
|
|
2. Test "4K" - output should be 3840x2160
|
||
|
|
3. Test "1080p" - output should be 1920x1080
|
||
|
|
4. Test "720p" - output should be 1280x720
|
||
|
|
|
||
|
|
### Test 5: Frame Rate Handling
|
||
|
|
|
||
|
|
Test with sequences at each frame rate:
|
||
|
|
|
||
|
|
| Frame Rate | Type | Notes |
|
||
|
|
|------------|------|-------|
|
||
|
|
| 23.976 fps | Non-drop | Common for cinema |
|
||
|
|
| 24 fps | Non-drop | Film standard |
|
||
|
|
| 25 fps | Non-drop | PAL standard |
|
||
|
|
| 29.97 fps | Drop-frame | NTSC standard |
|
||
|
|
| 30 fps | Non-drop | Progressive |
|
||
|
|
| 59.94 fps | Drop-frame | High-frame rate NTSC |
|
||
|
|
| 60 fps | Non-drop | High-frame rate progressive |
|
||
|
|
|
||
|
|
Verify:
|
||
|
|
- Timecodes are correct in output
|
||
|
|
- No frame rate mismatch warnings
|
||
|
|
- Audio sync is maintained
|
||
|
|
|
||
|
|
### Test 6: Job Cancellation
|
||
|
|
|
||
|
|
1. Start a conform job with a long timeline (5+ minutes)
|
||
|
|
2. Before it completes, navigate to the Jobs page
|
||
|
|
3. Cancel the job
|
||
|
|
4. **Expected**: Job status changes to "cancelled" or "failed"
|
||
|
|
5. **Expected**: No orphaned partial output in S3
|
||
|
|
|
||
|
|
### Test 7: Network Failure During Upload
|
||
|
|
|
||
|
|
1. Start a conform job
|
||
|
|
2. Disconnect the network while the FCP XML is uploading
|
||
|
|
3. **Expected**: Error message displayed in the plugin
|
||
|
|
4. Reconnect and retry the job
|
||
|
|
5. **Expected**: Job completes on retry
|
||
|
|
|
||
|
|
### Test 8: Server Failure During Conform
|
||
|
|
|
||
|
|
1. Start a conform job
|
||
|
|
2. Restart the worker service while the job is active
|
||
|
|
3. **Expected**: Job is stalled then moved back to "waiting" by BullMQ's stall detection
|
||
|
|
4. **Expected**: Worker picks it up on restart and completes it
|
||
|
|
|
||
|
|
### Test 9: Verify Conformed Asset in MAM
|
||
|
|
|
||
|
|
1. After conform completes, locate the new asset in the MAM grid
|
||
|
|
2. Verify metadata: correct codec, resolution, frame rate, duration
|
||
|
|
3. Verify the conformed asset has the `conform_source_sequence_id` set
|
||
|
|
4. Import the asset into a new Premiere sequence
|
||
|
|
5. Verify playback and audio sync
|
||
|
|
|
||
|
|
### Test 10: Re-Importing Conformed Asset
|
||
|
|
|
||
|
|
1. After conform, import the conformed asset into a new Premiere project
|
||
|
|
2. **Expected**: Asset imports and plays correctly
|
||
|
|
3. Verify the asset shows up in the imported assets list
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Hi-Res Auto-Relink
|
||
|
|
|
||
|
|
### Test 11: Relink Single Clip
|
||
|
|
|
||
|
|
1. Have a sequence with 1 clip that was imported via MAM proxy workflow
|
||
|
|
2. Click **Advanced > Fetch & Relink All**
|
||
|
|
3. **Expected**: Clip list shows 1 clip with checkbox checked
|
||
|
|
4. Click **Fetch & Relink**
|
||
|
|
5. **Expected**: Server trims the hi-res original to match the timeline clip
|
||
|
|
6. **Expected**: Clip is relinked in Premiere
|
||
|
|
7. **Expected**: Success summary shows 1 clip relinked
|
||
|
|
|
||
|
|
### Test 12: Relink Multiple Clips (5-10)
|
||
|
|
|
||
|
|
1. Create a sequence with 5-10 clips from various assets
|
||
|
|
2. Run the relink workflow
|
||
|
|
3. **Expected**: All clips are processed in parallel (concurrency up to 4)
|
||
|
|
4. **Expected**: All clips are relinked successfully
|
||
|
|
|
||
|
|
### Test 13: Same Asset, Multiple Instances
|
||
|
|
|
||
|
|
1. Create a sequence that uses the same source asset in 3 different positions
|
||
|
|
2. Each instance should have different in/out points (different trim ranges)
|
||
|
|
3. Run the relink workflow
|
||
|
|
4. **Expected**: Each instance gets a separate trimmed segment (different clipInstanceId)
|
||
|
|
5. **Expected**: Each instance is individually relinked to its trimmed segment
|
||
|
|
|
||
|
|
### Test 14: Various Codecs
|
||
|
|
|
||
|
|
Test with source clips in each codec:
|
||
|
|
|
||
|
|
| Codec | Format | Expected |
|
||
|
|
|-------|--------|----------|
|
||
|
|
| ProRes 422 | .mov | Segment trims correctly |
|
||
|
|
| ProRes 4444 | .mov | Alpha channel preserved (if applicable) |
|
||
|
|
| DNxHR HQ | .mxf | Segment trims correctly |
|
||
|
|
| H.264 | .mp4 | Segment trims correctly |
|
||
|
|
| HEVC/H.265 | .mp4 | Segment trims correctly |
|
||
|
|
| XDCAM | .mxf | Segment trims correctly |
|
||
|
|
|
||
|
|
### Test 15: Selective Relink (Deselect Some Clips)
|
||
|
|
|
||
|
|
1. Create a sequence with 5 clips
|
||
|
|
2. Open the clip list and uncheck 2 clips
|
||
|
|
3. Click **Fetch & Relink**
|
||
|
|
4. **Expected**: Only the 3 checked clips are relinked
|
||
|
|
5. **Expected**: The 2 unchecked clips remain as proxies
|
||
|
|
|
||
|
|
### Test 16: Retry Logic for Failed Relinks
|
||
|
|
|
||
|
|
1. Simulate a network error during segment download (disconnect Wi-Fi)
|
||
|
|
2. Start the relink workflow
|
||
|
|
3. **Expected**: Failed clip shows "retry" in the summary
|
||
|
|
4. Reconnect and retry
|
||
|
|
5. **Expected**: Failed clips are retried and succeed on second attempt
|
||
|
|
|
||
|
|
### Test 17: Locked Premiere Project
|
||
|
|
|
||
|
|
1. With a collaborator's project open (if available), or a read-only project
|
||
|
|
2. Run the relink workflow
|
||
|
|
3. **Expected**: Appropriate error message about project being locked
|
||
|
|
4. **Expected**: Plugin does not crash
|
||
|
|
|
||
|
|
### Test 18: Missing Hi-Res Originals
|
||
|
|
|
||
|
|
1. Create a sequence with a clip whose hi-res original has been deleted from S3
|
||
|
|
2. Run the relink workflow
|
||
|
|
3. **Expected**: The worker reports "Asset not found" for that clip
|
||
|
|
4. **Expected**: Summary shows that clip as failed with appropriate error
|
||
|
|
|
||
|
|
### Test 19: Network Failure During Download
|
||
|
|
|
||
|
|
1. Start the relink workflow with 3+ clips
|
||
|
|
2. Disconnect the network during the download phase
|
||
|
|
3. **Expected**: Download fails with network error
|
||
|
|
4. **Expected**: Summary shows failed clips with "download error" message
|
||
|
|
5. Reconnect and retry
|
||
|
|
6. **Expected**: Succeeds on retry
|
||
|
|
|
||
|
|
### Test 20: Temp Segment Cleanup After 24 Hours
|
||
|
|
|
||
|
|
1. Complete a relink workflow (creates temp segments)
|
||
|
|
2. Verify the temp segment records exist in the database
|
||
|
|
3. Fast-forward the system clock by 25 hours (or set `expires_at` to the past)
|
||
|
|
4. Wait for the cleanup task to run (within 1 hour)
|
||
|
|
5. **Expected**: Temp segments are deleted from S3 and database
|
||
|
|
6. **Expected**: Cleanup log shows "X deleted, 0 errors"
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## GUI Redesign
|
||
|
|
|
||
|
|
### Test 21: Visual Consistency with Web-UI
|
||
|
|
|
||
|
|
1. Open the Premiere plugin panel
|
||
|
|
2. Compare colors with the web-ui (open in browser)
|
||
|
|
3. Verify OKLCH color tokens match:
|
||
|
|
- Background surfaces (bg-panel, bg-surface, bg-raised)
|
||
|
|
- Text hierarchy (primary, secondary, tertiary)
|
||
|
|
- Accent color is the same blue-purple hue
|
||
|
|
- Status colors (green, red, yellow) match
|
||
|
|
4. **Expected**: Consistent visual identity between web and Premiere panel
|
||
|
|
|
||
|
|
### Test 22: Responsive Layout
|
||
|
|
|
||
|
|
1. Dock the panel at various widths (200px, 400px, 600px)
|
||
|
|
2. Verify the layout adjusts:
|
||
|
|
- Asset grid columns adapt to available width
|
||
|
|
- Buttons remain visible at all widths
|
||
|
|
- Details panel is usable at all widths
|
||
|
|
- Slide panels render correctly
|
||
|
|
|
||
|
|
### Test 23: Color Contrast (WCAG AA)
|
||
|
|
|
||
|
|
1. Measure contrast ratios:
|
||
|
|
- Text primary on bg-panel: should be ≥ 4.5:1
|
||
|
|
- Text secondary on bg-panel: should be ≥ 3:1
|
||
|
|
- Accent text on accent background: should be ≥ 3:1
|
||
|
|
2. **Expected**: All text meets WCAG AA contrast requirements
|
||
|
|
|
||
|
|
### Test 24: Font Rendering
|
||
|
|
|
||
|
|
1. Verify body text renders in Inter (or system fallback)
|
||
|
|
2. Verify metadata and technical values render in JetBrains Mono
|
||
|
|
3. Check font loading from web-ui server (not bundled):
|
||
|
|
- Look for 404s in the console
|
||
|
|
- Verify fonts load after server connection is established
|
||
|
|
|
||
|
|
### Test 25: Button States
|
||
|
|
|
||
|
|
Test each button for all states:
|
||
|
|
|
||
|
|
| State | Visual Indicator |
|
||
|
|
|-------|------------------|
|
||
|
|
| Default | Normal styling |
|
||
|
|
| Hover | Background lightens, subtle lift |
|
||
|
|
| Active/Pressed | Returns to default position |
|
||
|
|
| Disabled | 38% opacity, no pointer events |
|
||
|
|
|
||
|
|
### Test 26: Slide Panel Animations
|
||
|
|
|
||
|
|
1. Open the Export & Conform slide panel
|
||
|
|
2. **Expected**: Panel slides in from the right (translateX animation)
|
||
|
|
3. Close the panel
|
||
|
|
4. **Expected**: Panel slides out to the right
|
||
|
|
5. Test the same with the Relink clip list panel
|
||
|
|
6. **Expected**: Smooth 250ms ease-out transitions
|
||
|
|
|
||
|
|
### Test 27: Progress Indicators
|
||
|
|
|
||
|
|
1. Start any long-running operation (conform, relink)
|
||
|
|
2. **Expected**: Progress bar appears with percentage
|
||
|
|
3. **Expected**: Progress bar fills smoothly
|
||
|
|
4. **Expected**: Status label updates with current operation
|
||
|
|
5. **Expected**: Progress bar disappears on completion
|
||
|
|
|
||
|
|
### Test 28: Toast Notifications
|
||
|
|
|
||
|
|
1. Perform actions that trigger messages:
|
||
|
|
- Connect to server → "Connected..." (success)
|
||
|
|
- Failed connection → "Failed to connect" (error)
|
||
|
|
- Import complete → "Imported" (success)
|
||
|
|
- Relink summary → shows success/failure counts (info)
|
||
|
|
2. **Expected**: Messages appear at the top of the panel
|
||
|
|
3. **Expected**: Messages auto-dismiss after 5 seconds
|
||
|
|
4. **Expected**: Success = green, Error = red, Info = accent blue
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Performance Testing
|
||
|
|
|
||
|
|
### Test 29: Conform Job with 30-Minute Timeline
|
||
|
|
|
||
|
|
1. Create a sequence with 30+ minutes of clips
|
||
|
|
2. Run the conform workflow with H.264 Web Delivery preset
|
||
|
|
3. Measure:
|
||
|
|
- XML generation time (< 2 seconds)
|
||
|
|
- Upload time (depends on network)
|
||
|
|
- Server parsing time (< 5 seconds)
|
||
|
|
- FFmpeg transcode time (varies by server GPU/CPU)
|
||
|
|
- Total time
|
||
|
|
4. **Expected**: Completes within reasonable time (under 30 minutes on GPU-enabled server)
|
||
|
|
|
||
|
|
### Test 30: Relink 50+ Clips Simultaneously
|
||
|
|
|
||
|
|
1. Create a sequence with 50+ clips (can duplicate assets)
|
||
|
|
2. Run the relink workflow
|
||
|
|
3. Measure:
|
||
|
|
- Timeline analysis time
|
||
|
|
- Server trim queue time
|
||
|
|
- Total download time
|
||
|
|
4. **Expected**: All clips processed within reasonable time
|
||
|
|
5. **Expected**: No timeout errors
|
||
|
|
|
||
|
|
### Test 31: Multiple Concurrent Conform Jobs
|
||
|
|
|
||
|
|
1. Start 3 conform jobs in rapid succession
|
||
|
|
2. **Expected**: Jobs are queued FIFO
|
||
|
|
3. **Expected**: Only 1 job is active at a time (concurrency: 1)
|
||
|
|
4. **Expected**: Queued jobs show "waiting" status
|
||
|
|
5. **Expected**: Each job completes in turn without data corruption
|
||
|
|
|
||
|
|
### Test 32: Server Load During Peak Usage
|
||
|
|
|
||
|
|
1. While a conform job is running, perform other operations:
|
||
|
|
- Browse assets in the web UI
|
||
|
|
- Upload new files
|
||
|
|
- Search the asset catalog
|
||
|
|
2. **Expected**: API remains responsive (under 500ms response time)
|
||
|
|
3. **Expected**: Conform job continues without error
|
||
|
|
|
||
|
|
### Test 33: Premiere Pro Responsiveness
|
||
|
|
|
||
|
|
1. Start a relink workflow for 10 clips
|
||
|
|
2. During the operation, interact with Premiere:
|
||
|
|
- Scrub the timeline
|
||
|
|
- Open other panels
|
||
|
|
- Play back the sequence
|
||
|
|
3. **Expected**: Premiere remains responsive (no freezing)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Test Environments
|
||
|
|
|
||
|
|
| Environment | OS | Premiere Version | Notes |
|
||
|
|
|-------------|----|------------------|-------|
|
||
|
|
| **Workstation A** | Windows 11 | Premiere Pro 2024 (v24.x) | Primary test environment |
|
||
|
|
| **Workstation B** | Windows 10 | Premiere Pro 2024 (v24.x) | Legacy Windows |
|
||
|
|
| **Workstation C** | macOS 14 Sonoma | Premiere Pro 2024 (v24.x) | macOS testing |
|
||
|
|
| **Workstation D** | macOS 13 Ventura | Premiere Pro 2024 (v24.x) | Legacy macOS |
|
||
|
|
|
||
|
|
### Network Profiles
|
||
|
|
|
||
|
|
| Profile | Bandwidth | Latency | Notes |
|
||
|
|
|---------|-----------|---------|-------|
|
||
|
|
| Local | 1 Gbps | < 1ms | Server on same LAN |
|
||
|
|
| Fast WAN | 100 Mbps | 10ms | Remote server |
|
||
|
|
| Slow WAN | 10 Mbps | 50ms | VPN or limited connection |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Acceptance Criteria
|
||
|
|
|
||
|
|
- [ ] All test scenarios pass
|
||
|
|
- [ ] No crashes or data loss in any tested configuration
|
||
|
|
- [ ] Clear error messages displayed for all failure modes
|
||
|
|
- [ ] Performance meets expectations across all tested environments
|
||
|
|
- [ ] UI matches the Wild Dragon design system specification
|
||
|
|
- [ ] Font loading from web-ui server works (no bundled fonts)
|
||
|
|
- [ ] Temp segment cleanup runs and removes expired data
|
||
|
|
- [ ] Slide panel animations are smooth and meet motion specs
|
||
|
|
- [ ] All button states render correctly
|
||
|
|
- [ ] Color contrast meets WCAG AA standards
|