Phase 2: User Acceptance Tests
After you are done with development tests, perform the following User Acceptance Tests (UATs).
When migrating to native applications, also perform these additional tests.
Core validation tests checklist
1. Validate playback of on‑demand HLS and DASH assets
- Verify VOD organic playback is completed.
- Verify VOD seeks forward and backward.
- Verify VOD can restart after the media completes.
Expected results:
- Events
readyandplayingfire within an acceptable time. - No fatal errors, nor unhandled player crashes.
- Video renders correctly (no decoding artifacts), and audio is synced.
- Accurate frame/resume and no stalls.
- The
playbackfinishedevent fires at completion. - Correct content duration and time position after seek.
- Events
seekandseekedare sent when seeking forward and backward. - Events
playandplayingare sent after the video restarts.
2. Validate live streaming behavior and DVR
- Test Live HLS.
- Test Live Dash.
- Test DVR windows seeking.
- Test Live Play/Pause (optional, for special requirements).
Expected results:
- Playback is continuous.
- Latency is within expected SLA.
- Seeking in the DVR window returns expected content/time.
- The
timechangedevent is triggered regularly during live streaming.
3. Validate adaptive bitrate and quality selection HLS and Dash
- Start with full bandwidth, then throttle to force a downswitch. Restore bandwidth to upswitch within reasonable time.
- Verify quality start level with
startupBitrateproperty ormaxStartupBitrate( for Web SDK). - Validate manual quality selection of bitrate from player controls.
Expected results:
- Quality Change events triggered:
Videoqualitychanged. - Playback continues smoothly.
- Video and audio continue in sync.
- Quality (resolution/bitrate) decreases when bandwidth drops and increases when restored.
- No repeated oscillation between levels.
- No severe rebuffering beyond defined thresholds.
4. Validate network auto-recovery and error handling
- Start live video playback and simulate network outage (3 to 10 seconds). Verify if the player retries and resumes playback automatically without page reload.
- Simulate a long outage and verify if the player emits appropriate error state.
For more information on network auto-recovery, see this Bitmovin community post.
Expected results:
- The player retries per configured retry policy.
- When connection returns, playback resumes without page reload.
- Error codes are meaningful and logged.
5. Validate autoplay and muted behaviors conform to product requirements
- Verify that
muted: trueandautoplay: truestart video playback in modern browsers. - Verify that
muted: falseandautoplay: truedon't start video playback, unless allowed. - Verify that
muted: trueandautoplay: falsedon't start video playback. - Verify that
muted: trueandautoplay: falsedon't start the video playback.
Expected results:
- Modern browsers block autoplay of unmuted content, unless allowed.
- The event
readyis triggered even when the playback is blocked due to unmuted autoplay policy. - Muted autoplay works in Chrome, Safari, Edge.
- The player provides a big play button when the playback is blocked.
- The playback can be started manually when the autoplay is blocked.
- The user is able to mute or unmute the player by using the mute button in the control bar.
6. Validate closed captions/subtitles
- Verify the enable/disable option for side-loaded WebVTT captions for VOD HLS/Dash.
- Verify the enable/disable option for side-loaded TTML captions for VOD HLS/Dash.
- Verify the enable/disable option for embedded captions CEA-608/708 VOD HLS/Dash.
- Verify multiple language tracks and switch languages at runtime.
- Verify seeking while captions are active.
- Verify default start configuration for closed captions enabled/disabled.
- Verify changing appearance: style, font, color.
- Verify live video with captions.
For more information, see Subtitles & Captions Support.
Expected results:
- Captions display accurately and stay in sync through seeks and ABR changes.
- Accessibility: closed captions can be toggled from the keyboard.
- Events for live closed captions are triggered:
cueenter,cueexit,cueparsed.
7. Validate Low Latency (LL-HLS or LL-Dash) and Startup/Live Latency
- Confirm LL-HLS can play with
enableLowLatencyon/off (requires special stream to validate). - Confirm LL-Dash can play with
enableLowLatencyULL on/off (requires special stream to validate).
For more information, see Low Latency Support .
Ads validation tests checklist
The advertisement plugin validation testing is divided into two types of technologies:
- Client side ad insertion (CSAI), for example:
- Google IMA SDK
- Server side ad insertion (SSAI), for example:
- Google IMA DAI SDK
- Freewheel SDK (partial support)
- Yospace
For more information, see Setting up Ads with the Web Player.
Test the following use cases across ad plugins and technology you use:
- Ad playback events (pre-roll, mid-roll, post-roll).
- Quartiles are sent for each ad pod: first quartile, mid quartile, third quartile.
- Ad break started and completed for live streams.
- Join live streaming during ad break playback.
- Video and audio of media assets continue in sync after ad break completes.
- CC settings are retained after ad break completes.
- Validate the player status if the device is locked during ad playback.
- The player session is completed after post-roll ends.
- Player controls during ad playback should not interfere with the ad vs video asset.
- Video is not started if the ad is paused.
- No audio overlap.
- Validate ad break with multiple ad pods.
- Validate the "Learn More" functionality.
- "More Info" webpage is presented.
- Video playback is paused while the user is in the advertisement website.
- Ad playback resumes when the user returns from the website.
- Validate skippable ads, if applicable.
- Validate single inline ads, if applicable.
- Validate non-linear inline ad, if applicable.
- Validate bumper ads around ad breaks, if applicable.
- Validate vast timeout settings.
Freewheel test scenarios for mobile
- [Freewheel] [Simulate 403 FW_ADS_URL] [Video Plays normally]
- [Freewheel] [Simulate 404 FW_ADS_URL] [Video Plays normally]
- [Freewheel] [Audio-Focus] [Do not overlap with Video Content]
- [Freewheel] [Seek before midRoll cuePoint once played] [MidRoll is not triggered again]
- [Freewheel] [Seek after midRoll cuePoint] [MidRoll is triggered]
- [Freewheel] [Background in PreRoll] [Ad Resumes when foreground]
- [Freewheel] [Background in MidRoll] [Ad Resumes when foreground]
- [Freewheel] [Background in PostRoll] [Ad Resumes when foreground]
- [Freewheel] [Lock Screen in PreRoll] [Ad Resumes when unlocked]
- [Freewheel] [Lock Screen in MidRoll] [Ad Resumes when unlocked]
- [Freewheel] [Lock Screen in PostRoll] [Ad Resumes when unlocked]
- [Freewheel] [Tap Over PreRoll] [WebPage displayed - Ad Resumes]
- [Freewheel] [Tap Over MidRoll] [WebPage displayed - Ad Resumes]
- [Freewheel] [Tap Over PostRoll] [WebPage displayed - Ad Resumes]
Analytics and observability validation tests checklist
Usually, each analytics provider has its own set of capabilities and a dedicated visualization dashboard.
The following tests are general test scenarios focused on validating video quality of experience (QoE) and user engagement (for example, startup time, rebuffering, playback failures).
When performing UAT for analytics and observability modules, focus on validating these two main elements:
- Accuracy: Are the events and metrics correct?
- Completeness: Are all relevant events captured consistently?
Initialization and session tracking tests
- Verify that the analytics session starts when playback begins (check playerReady, playing event).
- Verify that unique session IDs are generated per playback attempt.
- Verify that metadata (custom data fields, for example, customData1–5) is correctly attached to sessions.
- Verify analytics is initialized with the correct license key and endpoint.
- Confirm GDPR/consent integration, if required (analytics blocked until consent given).
Basic playback events tests
- Play a VOD to completion. Ensure startup, play, and ended events are reported.
- Play Live video for 10 minutes. Ensure startup and play events are reported.
- Start playback and then abandon it quickly before the video starts. Ensure startup events are reported.
- Start playback, pause, and then resume. Ensure pause and play events are reported.
- Seek to different parts of the video. Ensure forward and backward seeks are logged with correct timestamps/durations.
- Simulate video rebuffing. Verify that buffering events (stall, resume) logged with accurate duration.
- Mute and unmute audio. Ensure audio status is reported, if applicable.
Closed captions and subtitles tests
- Enable and disable closed captions. Verify enabling/disabling captions generates analytics events.
- Track selection. Verify that switching subtitle languages triggers correct metadata updates.
Custom metadata and errors tests
- Set custom metadata in the configuration. Verify that your custom metadata appears in the analytics backend.
- Trigger a player error. For example: network disconnect, invalid manifest, DRM failure (if used). Ensure player errors are reported in the analytics module.
Ads playback scenarios tests
- Ad start/complete: Verify that ad impressions, start, and completion events are tracked correctly.
- Ad quartiles: Verify that 25%, 50%, 75%, and 100% milestones are logged.
- Ad errors/skipped: Ensure skipped ads and errors are reported.
- Ad clickthrough: Verify click tracking works, if applicable.
- Include ad breaks with multiple ad pods and bumper ads around.
- Include ad breaks with pre roll, mid roll, and post roll ads.
Data validation against backend
Compare captured analytics data in the Observability dashboard with the expected:
- Number of sessions.
- Startup time distribution.
- Average bitrate.
- Buffer ratio.
- Ad impressions.
Other validation tests
Verify functionality of the listed features.
- DRM content playback
- Validate Widevine and Playready Support.
- Validate Fairplay Support for Apple devices.
- Validate special request headers requirements.
- See DRM Support for more information.
- Casting Devices
- Start VOD Playback
- Live Streaming
- Playlist Functionality
- DRM Playback
- Ads Playback
- For more information, see CAF Support and How to debug streams on Chromecast devices.
- Web content accessibility guidelines
- Keyboard navigation.
- Voice over announcements for each button in player controls.
- Voice over announcements for close captions settings.
- For more information, see Bitmovin Player Accessibility.
Validation tests for native applications
When migrating from web video players to native apps on mobile (Android or iOS) or CTV (Android TV, Apple TV, Fire TV, and so on), follow most of the core playback validation test scenarios (for example, startup time, buffering, errors, analytics tracking, DRM, ads, and so on) and perform these additional tests to reflect the unique characteristics of native environments.
Platform and operating system integration tests
- Lifecycle events: App going background → foreground (meanwhile, playback resumes/pauses correctly, analytics continues)
- Interruptions: Incoming call, notification, multitasking (PiP on mobile, app switching on TV)
- Sleep/wake: Device lock/unlock, HDMI unplug/replug (TVs)
- Headphone/Bluetooth/AirPlay/Cast integration: audio route changes
Device and hardware variability tests
- Performance under low memory or CPU pressure (older devices and minimum OS supported)
- Different display refresh rates (24 Hz, 30 Hz, 60 Hz, 120 Hz)
- HDR/Dolby Vision/HLG playback validation
- Multi-audio/video track switching on constrained devices
Native player behaviors tests
- Seek behavior (scrubbing with remote on TV, gesture scrubbing on mobile)
- Subtitle/closed caption rendering (native font rendering, safe area, multiple languages)
- Ad playback (CSAI/SSAI) with native overlays and skip controls
Connectivity and environment tests
- Offline/download playback (required for mobile):
- DRM license acquisition and expiration validation
- Network transitions (Wi-Fi ↔ LTE ↔ offline)
- Adaptive bitrate (ABR): Validate profile switching under varying network conditions, especially mobile (cellular throttling, handovers).
- Edge cases on CTV: Poor Wi-Fi on streaming sticks, Ethernet disconnect on TVs
Input and control methods tests
- Touch gestures (mobile): pinch-to-zoom, double-tap seek, swipe-to-volume/brightness
- Remote navigation (CTV): D-pad, voice control, TV OS-specific behaviors
- Casting scenarios: AirPlay, Chromecast, Android Cast, ensuring session handoff works correctly
Analytics and session tracking tests
Confirm analytics/events consistency vs. web SDK:
- Playback sessions across the app lifecycle.
- Offline viewing events → queued and sent later.
- Multiple player instances (for example, PiP + main player).
Security and DRM tests
- Platform DRM-specific testing:
- Widevine (Android/CTV)
- FairPlay (iOS/tvOS)
- HDCP enforcement on HDMI outputs (TVs)
- License renewal, expiry, and clock skew scenarios
CTV-specific scenarios tests
- App store compliance checks (including tvOS Human Interface Guidelines, Android TV playback rules)
- HDMI-CEC interactions (play/pause using TV remote)
- App suspension and long playback sessions (marathon viewing, 8+ hours)
- Multiple users/profiles (especially on Apple TV with Family Sharing)
Updated 14 days ago
