Baseline Functionality Requirements

Prev Next

This document details the minimum operational and functional requirements that your app must meet to launch on our platform.


Operational requirements (OR)

We use these metrics to monitor reliability and performance to ensure your user-expected quality of performance is met.

OR-01 Time To Minimally Useable

95% of all launches must be less than 10 seconds over a 24hr period, with a minimum of 1000 launches. Time to Minimally Useable (TTMU) is the time from when your app starts loading into the WPE runtime until your app calls the Lifecycle.ready() method. (See Launch Completed metric below).

Additional notes:

  • UK Only: On Sky Glass, the app splash screen must appear within 2 seconds after launching the app from a cold start.
  • UK Only: On a Sky Q multiroom device, an extra 10% load time is allowed.
  • The app should always operate without issues if a user has at least 2.5mbps available. If the app experiences a lower network speed or loss of connectivity, then the app must handle this gracefully.
  • The app must always support the ability for it to be placed into an Inactive state in order to reduce load times.
  • Profile selection should be a function within the app, it should not be a barrier to content discovery or playback.
  • Loading times are dependent on the app and hardware on the set-top-box (STB). Loading indicators are controlled by the app.

Methodology

Lifecycle.ready() - /* When app is launched */

Acceptance Criteria

As a user, I want the app to launch quickly so that I can start using it.

App launch Time to Minimally Useable
  • Given I am using an platform device connected to a controlled network speed of 20mbps,
  • When I launch the app from a cold start (i.e., it is in the 'unloaded state', not inactive state),
  • Then the app splash screen (displaying the app identification / logo) must appear within 5 seconds,
    • And the app UI must load within 10 seconds.

OR-02 Error Free Session Rate

The Error-Free Session Rate (EFSR) must be greater than 95% over a 4hr period (min 1000 launches). The EFSR is the number of Error Free Sessions divided by the total number of sessions over a given 4hr time period. An error free session is any app session in which there were zero user-detectable errors (inclusive of errors which do not display an error message), which are tracked via Metrics.error().

Methodology

Error-free session count ÷ Total session count

OR-03 Errors Per Content Minute

The Errors Per Content Minute (EPCM) must be Less than 0.05 over a 4hr period (min 1000 launches). The EPCM is the total number of user-detectable errors per minute of content viewed by users. This is an aggregated metric and not measured on a per-session basis.

Methodology

console.count( Metrics.error() ) / sum( Metrics.stopContent() - Metrics.startContent() )

Reporting requirements (RR)

As a content partner, it is your responsibility to resolve all issues related to your app reported by us or your users. Your users exist all around the world, so you must provide 24/7 support 365 days per year with no exceptions.

RR-01 Launch completed

App must call Lifecycle.ready() method when app has become usable (i.e., has loaded and is able to handle user inputs).

RR-02 Error detected

App must call Metrics.error() method the moment your app detects a user-visible error.

RR-03 User interaction

The corresponding Metrics.startContent() or Metrics.stopContent() method must be called to indicate when a user starts or stops interacting with content (e.g., watching a video, playing a game, listening to music).

RR-04 Incident response time

You must respond to any issues within the priority level requirement listed in the Incident Priority Levels.

RR-05 Incident resolution time

You must resolve any issues within the priority level requirement listed in the Incident Priority Levels.


Functional requirements (FR)

These requirements are designed for your app to function properly on all devices and allow users to view your content.

FR-01 Response time

The time it takes for your app to show a response to a user key-press must be less than 100ms. The user selects 'play' and it either starts playing or a 'loading' icon appears within 100ms. App navigation.

FR-02 App navigation

The current focus during navigation must be clearly identified on screen.

Additional notes:

  • Identification can be via a coloured box, highlighted image or subtle re-sizing.

Acceptance criteria

As a user, I want to be able to navigate through the app menu with ease and be certain which item is in focus.

Tile and menu focus
  • Given I am in the app UI,
  • When I navigate between content tiles or menu,
  • Then the current in focus must be clearly identified on screen.
Sign-in focus
  • Given I am on the app landing/sign-in page,
  • When I navigate between options and through sign up and/or sign in,
  • Then the current in-focus state of the user selection must be clearly identifiable on screen.

FR-03 Search submission

When a user submits a search, the correct list of content options is presented to the user.

Acceptance criteria

As a user, I want to be able to search within the app so that I can find what I’m looking for.

Search submission
  • Given I have entered the minimum number of search characters within the app,
  • When the search is submitted,
  • Then the correct asset list should be returned for the searched characters.
Play from search
  • Given I select a title from the returned asset list,
  • When I select the play option,
  • Then the asset should play successfully.

FR-04 Playback start

The amount of time between a user requesting playback and the asset starting playback must be less than 3 seconds.

FR-05 Device support

Your app must support all platform-compliant Remote Specifications so that any compatible remote app works as expected to control the app according to the Button Mapping and Trickplay requirements.

Acceptance criteria

As a user, I want to be able to use any compatible remote to control the app in line with the Button Mapping and Trickplay requirements, so that each of the relevant remotes I use to access the app works as expected.

Supported remote
  • Given I have a supported remote,
  • When I interact with the app using the remote control,
  • Then the app should work as expected.
Touch dish remote with touch turned on
  • Given I am using a remote control with a touch dish,
  • When I interact with the apps using swipe/swipe-and-hold/select commands,
  • Then the app should work as expected.
Touch dish remote with touch turned off
  • Given I am using a Touch remote control with touch functionality turned off,
  • When I interact with the apps using click/click-and-hold/select commands,
  • Then the app should work as expected.

FR-06 Memory usage

Your app should use ~190Mb in stable states. However, 220Mb is acceptable. Your app should also reduce memory consumption to below 120Mb while in the 'inactive' state.

Additional notes:

FR-07 Local storage

Your app must be able to operate without local storage as a starting point.

FR-08 IP stack

All endpoints must be reachable by IPv4 & IPv6. Many X1 Devices are IPv6 only which means they cannot connect directly to any service that does not have an IPv6 address. Any services your app may use, including those used to monetize your advertising inventory, must be able to communicate with the platform through both IPv6 & IPv4.

FR-09 HTTPS

Your app must use HTTPS for all connections (including those related to data and content delivery).

FR-10 Web standards

Your app should follow W3C standards, see www.w3.org for more info

FR-11 Deep linking

Your app must support deep linking via the Lifecycle navigateTo event.

FR-12 Screen saver

Your app must develop its own app screen saver that deploys within 15 minutes of inactivity. The screen saver must not deploy during active video playback.

FR-13 Search

The search results in your app should match the search query. The asset selected from the search should play successfully.

FR-14 Error messaging

When error messages are displayed, they are clearly displayed in the user's preferred language or local language. The error message must also include information on what the issue is and what the solution is.

Additional notes:

  • List of error codes and meanings must be made available to distributors prior to launch.

Acceptance criteria

As a user, I want to be provided with helpful error messages, so that in the event of a problem, I understand the issue and know the solution (if applicable).

Error message display
  • Given there is an issue (I.e. network disconnected),
  • When I navigate the app,
  • Then I will see an error message with clear information on what the issue is and what the solution is, if applicable.
Error message language
  • Given there is an issue,
  • When an error message is displayed,
  • Then it will be displayed in my local language.
Error message code
  • Given there is an issue,
  • When an error message is displayed,
  • Then it will present an error code.

FR-15 Maximum number of devices per-account

Users must be presented with a message indicating the maximum number of devices has been reached and advised of action to take in order to use your app on their current device.

Acceptance criteria

As a user, I want to be informed when I have reached my maximum numbers of devices for my account, so that I understand what my options are.

Launch with maximum number of devices
  • Given I have launched the app under the same account on the maximum number of devices,
  • When I launch the app on an additional device under the same account,
  • Then I must be presented with a message indicating that the maximum number of devices has been reached,
    • And advised of action I must take in order to use the app on the current device.
Streaming with maximum number of devices
  • Given I am simultaneously streaming within the app under the same account on the maximum number of devices,
  • When I try to stream within the app on an additional device under the same account,
  • Then I must be presented with a message indicating that the maximum number of devices has been reached,
    • And advised of action I must take in order to stream within the app on the current device.

FR-16 Dial

If an app supports DIAL, then the app must launch, play the asset, and then push the app to the device using the cast function on the user's mobile/tablet device.

Acceptance criteria

As a user I want to be able to launch app on the SoIP device by using the cast function from the app on my mobile/tablet device.

Scenario prerequisites:

  • Launch the app on a companion mobile device, play an asset and then push the app to the device using DIAL protocol.
App has been launched on device
  • Given I have launched the app on the device,
  • When I select to push the app to the device,
  • Then the asset must start playing on the device.
App has not yet been launched on device
  • Given I have not launched the app on the device,
  • When I select to push the app to the device,
  • Then the app must load on the device and the asset must start playing without further interaction required.

FR-17 App features

All available functionalities within the app are working correctly.

Additional notes:

  • This is only applicable for apps in the UK: Test teams must be provided with the full list of feature functionality in the app.
  • The Certification process will confirm the full functionality of these features and we would expect to resolve any issue with a feature that does not work prior to launch, based on discussions with us.

FR-18 Button mapping

Button mapping must not deviate from the platform button maping guidance. Rare exceptions may be made, but the alternative mapping must remain intuitive to prevent user confusion.


Audio / video quality requirements (AV)

AV-01 Quality

  • UI resolution must be a minimum of 1080p.
  • Video resolution must have capability of 1080p and use adaptive bitrate (ABR).
  • Audio bitrate on asset playback must be a minimum of 96Kbit/s.
  • The asset quality selected must play in the stated format (HD, UHD, HDR, etc)

Acceptance criteria

As a user, I want the app to meet certain minimum requirements for quality so that I can enjoy the best experience in the app.

Scenario prerequisites:

  • Launch the app on a companion mobile device, play an asset and then push the app to the device using DIAL protocol.
User interface
  • Given I have launched the app,
  • When I am navigating the UI,
  • Then the UI resolution must be a minimum of 1080p.
Video content
  • Given I have launched the app,
  • When I have started playback,
  • Then the video resolution must have capability of 1080p and use an adaptive bitrate (ABR).
Audio content
  • Given I have launched the app,
  • When I have started playback,
  • Then the minimum audio bitrate must be 96 Kbit/s.
Video playback
  • Given I have launched the app,
  • When I have started playback,
  • Then HD/UHD/HDR assets must play successfully in the stated format.

AV-02 Screen resolution

Your app must support rendering at both 720p and 1080p screen resolutions.

AV-03 Dolby Digital+ and Dolby Audio

Your app must provide the best audio format when it exists and must not restrict this. If your app has Atmos Audio (or Dolby Digital+), it must be made available on the device.

Additional notes:

  • A user can set their digital audio preference in the platform UI by navigating to Settings>Setup>Audio visual> Digital audio output HDMI and selecting Normal, Dolby Digital or Dolby Digital+
  • A user who sets Dolby Digital+ in their HDMI audio output settings, who is not connected to a Dolby Atmos or Dolby Digital+ compatible audio system, may hear no audio.

Acceptance criteria

As a user, I want audio to play in Dolby Atmos, Dolby Digital+ or Dolby Digital Audio when available so that I can enjoy the best experience in the app.

Dolby Atmos audio supported
  • Given I have set Dolby Digital+ in Settings and my audio device does support Dolby Atmos,
  • When I select content available in Dolby Atmos,
  • Then the content must play in Dolby Atmos.
Dolby Atmos audio not supported (fallback to Dolby Digital+)
  • Given I have set Dolby Digital+ in Settings and my audio device does not support Dolby Atmos but does support Dolby Digital+,
  • When I select content available in Dolby Atmos,
  • Then the content must play in Dolby Digital+.
Dolby Digital+ supported
  • Given I have set Dolby Digital+ in Settings,
  • When I select content available in Dolby Digital+,
  • Then the content must play in Dolby Digital+.
Dolby Digital+ not supported (fallback to Dolby Digital)
  • Given I have set Dolby Digital in Settings,
  • When I select content available in Dolby Atmos, Dolby Digital+, or Dolby Digital,
  • Then the content must play in Dolby Digital.

AV-04 Standard playback

There must not be any AV issues on playable assets including advertisements.

Acceptance criteria

As a user, I want content including ads to be played with no issues, so that I can enjoy playback without unnecessary interruption to my experience.

Content playback start
  • Given I am playing video within the app,
  • When content starts playing,
  • Then there must be no AV issues experienced.
Advertisement playback start
  • Given I am playing video within the app,
  • When an advertisement starts playing,
  • Then there must be no AV issues experienced.
Streaming interruption
  • Given I am playing video within the app,
  • When a streaming interruption is caused by a technical or network connectivity related issue,
  • Then graceful handling of the interruption to playback is expected.

AV-05 Playback issues

If there is a streaming interruption due to technical or network connectivity, your app must gracefully handle the interruption and resume playback as expected.

AV-06 Extended playback

There may not be any playback issues when playing videos for an extended period of time.

Acceptance criteria

As a user, I want to be able to play video for long periods of time (10+ hours) without issue, so that my experience is not interrupted.

10+ hours of audio playback
  • Given I am playing video within the app,
  • When the playback time exceeds 10 hours,
  • Then the audio must continue to play back without issue.
10+ hours of video playback
  • Given the user is playing video within the app,
  • When the playback time exceeds 10 hours,
  • Then the video must continue to play back without issue.

Accessibility requirements (AC)

AC-01 Accessibility

Your app must meet WCAG AAA compliance standards as well as the legal requirements for closed captioning, see Accessibility documentation for more info.

AC-02 Audio description

While watching video content, users must be able to turn on available audio description using the audio description menu. The audio description feature must be turned on/off respectively and activate immediately in the video playback.

Acceptance criteria

As a user, I expect all video content within the app to have audio description where available.

Turn on audio description
  • Given I am watching video content within the app,
  • When I navigate to the audio description menu,
  • Then I should be able to turn on audio description and have it immediately activated in the video playback.
Turn off audio description
  • Given I am watching video content within the app,
  • When I navigate to the subtitles menu,
  • Then I should be able to turn off audio description and have it immediately deactivated in the video playback.

AC-03 Closed captions / subtitles

While watching video content, users must be able to turn on available closed captions / subtitles using the subtitle menu. The closed captions and subtitles must be turned on/off respectively and activate immediately in the video playback.

Acceptance criteria

As a user, I expect all video content within the app to have closed captions or subtitles where available.

Turn on closed captions / subtitles
  • Given I am watching video content within the app,
  • When I navigate to the subtitles menu,
  • Then I should be able to turn on closed captions / subtitles and have them immediately activated in the video playback.
Turn off closed captions / subtitles
  • Given I am watching video content within the app,
  • When I navigate to the subtitles menu,
  • Then I should be able to turn off closed captions / subtitles and have them immediately deactivated in the video playback.

Localization requirements (LC)

LC-01 Price listing

All pricing must display in the user's local currency.

Acceptance criteria

As a user, I expect to see any prices displayed in my local currency.

  • Given I am using the app in Territory,
  • When the app displays any prices,
  • Then those prices should appear in the local currency.

LC-02 Language

All text including error messages, on-screen keyboard, and navigation must be displayed in the official language of the user's territory unless the user has changed their preferred language settings.

Additional notes:

  • Where an app is designed to serve the audience of a specific language other than the official language then this should be flagged to the distributor.

Acceptance criteria

As a user, I expect to see an app appear in my local language.

Text displayed in official territory language
  • Given I am using the app in Territory,
  • When the app displays any text (including branding, error messages and on-screen keyboards),
  • Then the text must be displayed the official language of Territory (or any other indigenous language as appropriate).

LC-03 Localized advertising

All advertising displayed must be localised and relevant to the user.

Acceptance criteria

As a user, I expect to see advertising relevant to my territory.

Localized advertising by territory
  • Given I am using the app in Territory,
  • When the app displays any advertising,
  • Then the advertising must be localized and relevant to users in Territory.

LC-04 Localized content

Content displayed within the app must be relevant to the user and users must not be able to view content outside of their regional licensing.

Acceptance criteria

As a user, I expect to see the relevant content to my region or territory.

Localized content by territory
  • Given I am using the app in Territory,
  • When the app displays content,
  • Then the content must be relevant to users in Territory.
Localized content by region
  • Given I am using the app,
  • When the app displays content,
  • Then the content must be relevant to users in that region.

LC-05 Audio language

The content audio must default to the local language or the preferred language set by the user.

Acceptance criteria

As a user, when I am in playback, I expect the app audio to default to my local language.

Audio defaults to official territory language
  • Given I am using the app in Territory,
  • When the app displays content,
  • Then the audio must be the official language of Territory.

LC-06 Localization content error

Users must be given an error message when trying to view content restricted by their territory.

Additional notes:

  • If you have a regional app with shared content on another regional app, we recommend showing an error message explaining how to view selected content in the other app.

Acceptance criteria

As a user, I expect to see a relevant error message if I try to view content that is not available in my country or territory.

Content unavailable in territory
  • Given I am using the app in Territory,
  • When the app displays content that is not available in my region/territory,
  • Then the app must display a user friendly error message.

Example: I am in Scotland, but trying to play content only available in England. The app should notify me that the content isn't available in my region.


Parental safety requirements (PS)

PS-01 App for everyone

If your app is accessible to children, then content within it should be appropriate or have the option to filter out or PIN protect adult content.

Additional notes:

  • In this context “Adult Content” means material that contains images of a sexual nature and/or strong language.
  • There is the option to Block or require a PIN for specific Apps (as chosen by the user) in the settings menu of the distributor UI.
  • Should your app be accessible to children and/or contain kids content, it must have a protection mechanism such as PIN or content filters to protect younger audiences from accessing unsuitable content (which may be additional content beyond the “Adult Content” described above). It is also desirable to have profiles so users can keep their content separated. In addition, there should be other features such as a Walled Garden, which either requires a PIN to exit or a confirmation when trying to exit from the kid’s area of the app.
  • Should your app be targeted towards children (e.g. YouTube Kids), there must only be content suitable for children.
  • Children's Online Privacy Protection Rule (COPPA), E.U. General Data Protection Regulation (GDPR), and any other applicable laws or regulations.
  • For apps in the US, user profiles for Kids should only be created by the parent, as per COPPA.

Acceptance criteria

As a parent, I want a mechanism to protect against age-rated content, so that my child does not watch inappropriate content.

Child target audience content
  • Given that children are one of the target audiences of an app,
  • When using the app,
  • Then the content within the app must be appropriate for children.
Filtering or PIN protection for adult content
  • Given that the app contains contents adult content,
  • When using the app,
  • Then there must be an option to filter out or PIN protect this content.

PS-02 App for kids

If your app is targeted towards children, then all content must be suitable for children.

PS-03 Advertising

If your app is aimed towards children or users of unknown age, then all advertisements displayed on your app must only contain content that is appropriate for children. All advertisements must also comply with all legal regulations and industry standards related to advertising to children.

Acceptance criteria

As a parent, I want a mechanism to protect against inappropriate content.

Child-appropriate advertising
  • Given the app contains advertising aimed at children or to users of an unknown age,
  • When an advertisement is shown within the app,
  • Then the advertisement displayed must only contain content that is appropriate for children.
Regulation and standards compliance for child advertising
  • Given the app contains advertising aimed at children or to users of an unknown age,
  • When an advertisement is shown within the app,
  • Then the advertisement displayed must comply with all applicable legal regulations and industry standards relating to advertising to children.

PS-04 Data collection

If your app is aimed towards children or users of unknown age, then all advertisements displayed on your app must only If your app collects personal information from children (including APIs and SDKs), then the user must be aware of such data collection.

Acceptance criteria

As a parent, I want an awareness of data collection within the app

User awareness of child data collection
  • Given the app collects any personal information from children, including through APIs and SDKs,
  • When I as a parent am using the app,
  • Then I must be made aware of such data collection.

PS-05 Explicit filtering

If your app has music or audio content that is tagged as 'explicit', then your app must provide a tool for a user to filter out explicit content.

Additional notes:

Ideally, users should able to configure this filter within your app on the app Platform, however, a global setting via an off-platform website or mobile device will suffice.

Acceptance criteria

As a parent, I want a mechanism to protect against explicit content, so that my child does not watch inappropriate content.

  • Given that the user is in a music/audio app or any app that has any content tagged as ‘explicit’ (e.g. Fitness apps),
  • Then the app must provide a tool to filter out explicit content.

PS-06 Parental PIN

It is important that your app only allows authorized users to make purchases or watch mature content. When the device's Parental PIN setting is active, then your app should adhere to it and trigger a Parental PIN prompt when inappropriate content is accessed or a purchase is attempted. See the Parental Controls documentation for additional information regarding Content Ratings Approvals & Purchase Approvals.

PS-07 Youth Protection

This is only applicable for apps in Germany and Austria.

Your app must meet German Youth Protection regulations by having an approved Youth Protection Program.

Additional notes:

  • Apps distributed in Germany must meet German Youth Protection regulations by having an approved Youth Protection Programme. For any content that is merchandised, an age rating must be visible on screen which should be provided through metadata ingest. If not ingested, then this should be part of the editorial process.

Acceptance criteria

As a parent, I want a mechanism to protect against age rated content, so that my child does not watch inappropriate content.

Visible age rating on content tile
  • Given that the content is visible on the screen,
  • When the user focuses on the content tile,
  • Then there should be a visible age rating on screen.
Visible age rating in hero zone
  • Given the user is on a content showpage (e.g. for TV shows or Movies),
  • Then there should be a visible age rating for the relevant episode or movie title in the hero zone.

Legal requirements (LR)

LR-01 Terms & Conditions

The Terms & Conditions (T&Cs) must be available and relevant for each user's territory. Terms & Conditions can be a single item covering all applicable territories or can be territory-specific.

Additional notes:

  • If you are providing a link to the T&Cs, then this link must be maintained at all times while the app is available.
  • If an app is being provided to multiple territories, there must be T&Cs available that are relevant for each territory (either as single T&Cs covering all applicable territories or specific T&Cs for each).

LR-02 Privacy Policy

The Privacy Policy needs to describe, at a minimum, data collection and use of data. It must be available and relevant for each user's territory. The Privacy Policy can be a single Privacy Policy covering all applicable territories, or can be territory-specific.

Additional notes:

  • The Privacy Policy needs to describe, amongst other things, the apps data collection and use of data. If you are providing a link to the Privacy Policy then this link must be maintained at all times while the app is available. Where an app is being provided to multiple territories, there must be a Privacy Policy available that are relevant for each territory (either as a single Privacy Policy covering all applicable territories or specific Privacy Policies for each).

LR-03 Impressum

This is only applicable for users in Germany.

Your app must contain the full text of Impressum indicating who is responsible for the content displayed. A user must be able to access the Impressum within 2 clicks of your app's landing page.

Additional notes:

  • An Impressum is the term given to a legally mandated statement of the ownership and authorship of a document, which must be included in books, newspapers, magazines and websites published in Germany and certain other German-speaking countries, such as Austria and Switzerland.

Acceptance criteria

As a user in Germany, I must be able to see who is responsible for the content shown within the app.

Impressum access
  • Given that I am using the app in Germany,
  • When I launch the app,
  • Then the must contain the Impressum text in full, which indicates who is responsible for the content shown on a website or within 2 clicks of the landing page.

LR-04 Open source software

If your app uses open source software, then your app must contain the Open Source software license information.

Acceptance criteria

As a user, if an app uses any source code licensed under Free or Open Source Software licenses, I must be able to view the relevant licenses within the app.

Open source software license information
  • Given that I am using an app that uses open source software,
  • When I use the app,
  • Then the app must contain the open source software license information.