Certification Testing
TomorrowOS should not mark a feature as supported unless it has been tested on a real device. Certification testing is how TomorrowOS proves that a feature works on a specific operating system, device model, firmware version and player runtime. This page describes how to certify against the shipped TomorrowOS surface today: the CMS SDK, WebSocket device commands, and the Tizen / BrightSign players.Purpose
The purpose of certification testing is to make TomorrowOS capability claims trustworthy. Digital signage platforms vary heavily across:- Operating system
- Device model
- Firmware / OS version
- Media engine (AVPlay,
roVideoPlayer, etc.) - Player package version
- Network and storage conditions
Core principle
No evidence, no supported claim.If a feature has not been tested, treat it as unknown. If it only works in some conditions, document it as partial, model-dependent or firmware-dependent.
Current platforms
See:
docs/os/tizen.mddocs/os/brightsign.md
Commands to certify
Certify the shipped device command surface, not aspirational nested APIs.
CMS helpers that should also be exercised:
Certification status
Capability reporting
Players report command support throughdevice.info.getCapabilities as:
- What
getCapabilitiesclaims - What actually works on that model / firmware
Known hardware / firmware gates
Record these before calling a combination production-safe:Certification record
Each certification record should include:- Operating system (
tizen/brightsign) - Device manufacturer
- Device model
- Firmware / OS version
- TomorrowOS player version
- CMS / SDK version
- CMS URL used for pairing
- Test date
- Tester
- Result summary
- Known limitations
- Evidence or notes
Minimum certification areas
Every supported OS, model and firmware combination should be tested across these areas.
Areas that are not shipped public APIs yet (do not block V1 certification on them):
- Multi-screen video wall sync API
- Dedicated proof-of-play / proof-of-display API
- Separate
packages.validate/ install / rollback API - Nested
tomorrow.capabilities.check(...)client API
Setup tests
Minimum tests:- Player installs / boots on the target device
- Orientation can be set
- CMS URL can be set
localhost/127.0.0.1is rejected or fails as expected for on-device players- LAN IP or hosted CMS URL connects successfully
- Pairing code appears
tos.pairing.verify(code)brings the device online
- Orientation intro + on-device CMS setup screen
- Supported baseline: Tizen 6.5 and 7.0
- Configure
config.jscmsEndpoint+orientation - Hosted CMS BrightSign zip usually auto-fills CMS URL
- Never use
localhostincmsEndpoint; use LAN IP for local testing
Device tests
Minimum tests:device.info.getreturns modeldevice.info.getreturns firmwaredevice.info.getCapabilitiesreturns the expected command map- Capability claims match later command results
Image playback tests
Publish a policy playlist and confirm:- JPG playback
- PNG playback
- Large image playback
- Image scaling / letterboxing acceptable for the panel
- Image → image transition without black gap
Video playback tests
Publish a policy playlist and confirm:- MP4 / H.264 playback
- 1080p H.264 playback
- 4K H.264 playback where the panel claims to support it
- Looping
- First-frame readiness
- Image → video
- Video → image
- Video → video
- BrightSign Series 3: require firmware 9.1.140+ for video playback; treat 4K H.264 as a hardware limit and certify with 1080p H.264
- Prefer documenting exact resolution, codec profile and bitrate used in the test
Black-gap transition tests
Confirm current content stays visible until the next item is ready. Minimum tests:- Image → image
- Image → video
- Video → image
- Video → video
- Single-image loop
- Single-video loop
- Multi-item playlist wrap
docs/guides/black-gap-playback.md for the shipped Tizen / BrightSign behaviour.
Widget tests
Widgets are playlist items, not a separate package API. Minimum tests:.zip/.wgtpackage item with defaultindex.html- Package item with custom
entryFile - Hosted HTML widget (
type: "widget") - Cache reuse after reboot for same
url+version - Missing entry file fails safely to brand idle
- Widget → media and media → widget handoff
docs/guides/widget-zip-packages.md.
Asset / offline tests
Minimum tests:- Successful image download into local cache
- Successful video download into local cache
- Offline replay of already-cached media
- Publish blocked or fails clearly when assets are unreachable from the CMS side
device.content.clearreturns to brand idle- Reconnect after network loss still accepts a later
setPolicy
Display control tests
Minimum tests where supported:device.power.reboot- Resume after reboot
device.display.setOnOffTimersetdevice.display.setOnOffTimerclear (onOffTimer: null)
supported: false, mark the test not-applicable.
Do not certify brightness / volume / arbitrary power APIs that are not part of the shipped command surface.
Telemetry tests
Minimum tests:- Device appears online after pair
- Heartbeat / online state remains healthy during playback
device.telemetry.captureScreenwhere supported
- Require firmware 1080+ before marking screenshot as production-supported
Recovery tests
Minimum tests:- Reboot while playing → resumes acceptably
- Orientation change / reload path (Tizen Red A) does not permanently brick playback
- Re-pair / reconnect pushes or restores policy as expected
- Failed playlist item falls back to brand idle instead of hanging on black
Example certification report
Passing criteria
A feature may be considered production-supported for a combination when:- It passes the required tests on that OS + model + firmware
- It works through the documented command / CMS path
- Known limitations are written down
- Failure behaviour is acceptable (usually brand idle, not black hang)
- The result can be reproduced
When to avoid a supported claim
Do not mark a feature as supported if:- It only worked once
- Model or firmware was not recorded
- It depends on a private workaround
- It fails under common deployment conditions
- Capability says supported but real hardware fails
- Screenshot / 4K / timer was not re-checked after a firmware note
Certification workflow
Recommended workflow:- Select OS (
tizenorbrightsign) - Select device model
- Record firmware / OS version
- Record player + SDK versions
- Complete setup + pairing
- Run
device.info.get+device.info.getCapabilities - Run image / video / transition tests
- Run widget tests
- Run offline / recovery tests
- Run reboot + on/off timer tests
- Run screenshot tests (respect firmware gates)
- Export certification notes
- Update OS docs / capability matrix with limitations
Production readiness
Certification improves confidence, but it does not guarantee every customer deployment. Production use still requires:- Customer-specific content testing
- Network testing
- Security review
- Rollback / support planning
- Monitoring after go-live