Platform Feature Requirements

Prev Next

This document details the unique platform feature requirements that your app must meet to deliver a seamless and consistent user experience.


Sign-in and authentication requirements (AR)

AR-01 Sign in via pairing code or DIAL (via casting)

Customers with existing sign-in credentials should be able to sign-in successfully using a pairing code or casting from an alternative device.

Additional notes:

  • Note on URL for PIN pairing: This must be a friendly URL in the form partnerweb.com/subpage and be no longer than 30 characters. It must have search engine optimization to cater for users who enter it in their search bar.

Acceptance criteria

As a user that has existing app credentials, I want to sign in to app via pairing code using a browser on an alternative device or to cast from the app on a mobile or tablet device or use a QR code to speed up the sign-in flow.

Sign-in via PIN-Pairing
  • Given I have launched the app,
  • When I am required to sign in,
  • Then I must be given the option to sign-in via a PIN-pairing journey.

OR

Sign-in via DIAL
  • Given I have launched the app,
  • When I am required to sign-in,
  • Then I must be presented with instructions for logging in via DIAL.

OR

Sign-in via QR code
  • Given I have launched the app,
  • When I am required to sign-in,
  • Then I must be given the option to sign-in via a QR Code journey. We recommend the QR code deep link passes the PIN-pairing code in the pay load directly.

AR-02 Sign-in via keyboard

Users must be given the ability to enter their credentials (e.g. email address and password) using an on-screen keyboard.

Acceptance criteria

As a user that has existing app credentials, I want to the ability to sign in to app via on-screen keyboard, so that I don’t have to switch devices.

Having launched the app
  • Given I have launched the app,
  • When I am required to sign-in,
  • Then I must be given the ability to enter my credentials (e.g. email address and password) via an on-screen keyboard

AR-03 App sign-in response: success & fail

The app should successfully sign in quickly, or present a relevant invalid response. This is so that users can start accessing content as quickly as possible.

Additional notes:

  • This requirement does not depend on whether the user has subscribed to the app via the app platform or directly with the app partner themselves.

Acceptance criteria

As a user, I want sign-in to be quick, so that I can start browsing and accessing content as soon as possible.

  • Given the user has entered in invalid sign-in credentials within the app,
  • When they select sign-in,
  • Then the app must not sign the user in and display a relevant error message (e.g. "username / password not recognised") within 1 second.
Having entered a valid PIN pair code on a browser
  • Given the user has entered in a valid PIN pair code on a browser,
  • When they select pair on that browser,
  • Then the app must sign the user within 1 second on the device.
Having scanned a QR code and entered valid credentials
  • Given the user has scanned a QR code on a mobile then entered valid credentials,
  • When they select sign-in,
  • Then the app must sign the user within 1 second on the device.

Deep linking requirements (DL)

The app Platform uses key intents when deep-links are selected from the app Platform experience and passed to an app to determine the right behavior for the user. Below are the intents used on the app Platform:

  • The EntityIntent goes to an entity or Show page. When a user has yet to engage with a show, we pass the entity intent.
  • The PlaybackIntent goes straight into the playback of the selected asset. When a user has engaged with a single asset or episode from a series, we pass the Playback intent for that asset.

DL-01 Direct playback deep linking from cold start

  • When your app is in the unloaded state and a user selects to watch content from a show center or a content tile, then your app needs to load first before the content starts playing.
  • When a user selects a deep link and your app has loaded, then the user should be placed in the correct place within your app.

Acceptance criteria

As a new user, when I select a specific piece of app content from the platform UI, I want to access that piece of content within the app, so that I can start watching the content I desired.

Scenario prerequisites:

  1. I'm signed in if applicable
  2. Metadata ingested or editorial direct playback deep-links are being used (Playback Intent)
App is in the unloaded state in the app platform
  • Given I am in the platform UI and the app is in the unloaded state,
  • When I select the Watch button from the app content show center or the app content tile if direct playback deep-links have been used or via DIAL,
  • Then the app will need to load first before the content starts playing.
Having selected the deep link in the loaded app
  • Given I have selected the deep link and the app has loaded, the user will be placed in the correct place in the app

DL-02 Show page deep linking from cold start

When your app is in the unloaded state, and a user selects your app content tile, then your app needs to load first before your app content show page displays (within your app).

Additional notes:

For apps we ingest metadata the only instance where this might be possible is if we have not ingested metadata for a particular title yet but we still want to merchandise it.

Scenario prerequisites

  1. I'm signed in if applicable.
  2. Editorial shows page deep link used or Watch action from ingested metadata (Entity Intent).

Acceptance criteria

As a new user, when I select a specific piece of app content from the platform UI, I want to access that piece of content within the app, so that I can start watching the content I desired.

In the unloaded state within the platform UI
  • Given I am in the platform UI and the app is in the unloaded state,
  • When I select the app content tile,
  • Then the app will need to load first before the app content show page displays (within the app).

DL-03 Direct playback deep linking from inactive state

Implementation prerequisite

The app must support Firebolt® Lifecycle states (see requirements QS01-QS07)

When your app is in the inactive state, and a user selects the 'watch' button from your app titles show center or your app content tile, then your app needs to start full screen playing. Your app should not reload.

Acceptance criteria

As a new user, when I select a specific piece of app content from the platform UI, I want to access that piece of content within the app, so that I can start watching the content I desired.

Scenario prerequisites

  1. I'm signed in if applicable.
  2. The app is in inactive state.
  3. Metadata ingested or editorial direct playback deep-links are being used (Playback Intent).
In the inactive state within the platform UI
  • Given I am within the platform UI and the app is in the inactive state,
  • When I select the watch button from an app titles show center or the app content tile if direct playback deep-links have been scheduled or via DIAL,
  • Then the app will be made visible in full screen and the title will start playing; the app does not reload.

DL-04 Show page deep linking from inactive state

Implementation prerequisite

The app must support Firebolt® Lifecycle states (see requirements QS01-QS07)

When your app is in the inactive state, and a user selects your app's content tile, then your app needs to full-screen display the show page within your app. Your app should not reload.

Acceptance criteria

As a user, when I am in an app and dismiss out of the app via the back button to the platform UI, I want to be able to access back into the app from where I left off so that I can continue my journey within the app.

Scenario prerequisites:

  1. I'm signed in, if applicable.
  2. The app is in the inactive state.
  3. Editorial show page deep link used or Watch action from ingested metadata (Entity Intent).
In the inactive state within the platform UI
  • Given I am within the platform UI and the app is in the inactive state,
  • When I select the app content tile,
  • Then the app content show page displays in full screen within the app; the app does not reload.

DL-05 Direct playback deep linking from background active state (mini-tv)

When your app is in the background active state and the 'watch' button is selected from your app's show center or content tile, then your app must be made visible in full screen and start playing the selected content.

Acceptance criteria

As a user, when I am in an app in mini-tv, I want to be able to access back into the app from where I left off so that I can continue my journey within the app.

Scenario prerequisites

  1. I'm signed in if applicable.
  2. The app is in background active state (mini-tv).
  3. Metadata ingested or editorial direct playback deep-links are being used (Playback Intent).
In the supported background active state and within the platform UI
  • Given I am within the platform UI with the app in background active state and the app supports Firebolt lifecycle states,
  • When I select the watch button from an titles show center or the app content tile if direct playback deep-links have been scheduled or via DIAL,
  • Then the app will be made visible in full screen and the title will start playing; the app does not reload.
In the unsupported Firebolt background active state and within the platform UI
  • Given I am within the platform UI with the app in background active state and the app does not support Firebolt Lifecycle states,
  • When I select the watch button from an app's titles show center or the app content tile if direct playback deep-links have been scheduled or via DIAL,
  • Then the app will be made visible in full screen and the title will start playing; the app will re-load first.

DL-06 Show page deep linking from background active state (mini-tv)

When your app is in the background active state and the user selects your app content tile, then your app content displays in full screen.

Acceptance criteria

As a user, when I am in an app in mini-tv, I want to be able to access back into the app from where I left off so that I can continue my journey within the app.

Scenario prerequisites

  1. I'm signed in, if applicable.
  2. The app is in background active state (mini-tv).
  3. Editorial show page deep link used or Watch action from ingested metadata (Entity Intent).
In the supported background active state and within the platform UI
  • Given I am within the platform UI with the app in background active state and the app supports Firebolt Lifecycle states,
  • When I select the app content tile,
  • Then the app content in-app show page displays in full screen; the app does not reload.
In the unsupported Firebolt background active state state and within the platform UI
  • Given I am within the platform UI with the app in background active state and the app does not support Firebolt Lifecycle states,
  • When I select the app content tile,
  • Then the app content in-app show page displays in full screen; the app will re-load first.

DL-07 Direct Playback deep linking from Foreground Active state

When your app is in foreground active state and the user selects your app content tile, then your app content will remain in full screen and the content will start playing.

Acceptance criteria

As a user, when I am in an app in Foreground Active state, I want to be able to access back into the app from where I left off so that I can continue my journey within the app.

Scenario prerequisites

  1. I'm signed in if applicable.
  2. The app is in foreground active state (full screen).
  3. Metadata ingested or editorial direct playback deep-links are being used (Playback Intent).
In the supported foreground active state and within the platform UI
  • Given I am within the Platform UI with the app in foreground active state and the app supports Firebolt Lifecycle states,
  • When I select an app content tile to play via DIAL or via voice,
  • Then the app will be remain visible in full screen and the title will start playing; the app does not reload.
In the unsupported Firebolt background active state and within the platform UI
  • Given I am within the Platform UI with the app in background active state and the app does not support Firebolt Lifecycle states,
  • When I select an app content tile to play via DIAL or via voice,
  • Then the app will be made visible in full screen and the title will start playing; the app will re-load first.

DL-08 Show Page deep linking from Foreground Active state

When your app is in the Foreground Active state and the user uses voice search for an app title, then your app will display the app content in-app in full screen.

Acceptance criteria

As a user, when I am in an app in full screen, I want to be able to access back into the app from where I left off, so that I can continue my journey within the app.

Scenario prerequisites

  1. I'm signed in if applicable.
  2. The app is in Foreground Active state (full screen).
  3. Editorial show page deep link used or Watch action from ingested metadata (Entity Intent).
In the supported foreground active state and within the platform UI
  • Given I am within the platform UI with the app in foreground active state and the app supports Firebolt Lifecycle states,
  • When I select an app content tile to play via DIAL or via voice,
  • Then the app will be remain visible in full screen and the title will start playing; the app does not reload.
In the unsupported Firebolt background active state and within the platform UI
  • Given I am within the platform UI with the app in background active state and the app does not support Firebolt Lifecycle states,
  • When I select an app content tile to play via DIAL or via voice,
  • Then the app will be made visible in full screen and the title will start playing; the app will re-load first.

DL-09 App Launch

When a user selects your app's launch point, then your app should load and the intended screen should become visible.

Acceptance criteria

As a user, when I am in the platform UI, I want to be able to select the app launch point so I can browse the app and/or engage with content in the app.

Scenario prerequisites

  1. The app is available on the device.
  2. I'm signed in, if applicable.
In the unloaded state within the platform UI
  • Given I am in the platform UI and the app is in the unloaded state,
  • When I select the app tile,
  • Then the app must load before displaying the in app Homepage.
In the inactive state within the platform UI
  • Given I am within the platform UI and the app is in the inactive state and the supports Firebolt Lifecycle states,
  • When I select the app tile,
  • Then the app will be made visible in full screen and the homepage will show; the app does not reload.
In the background active state and within the platform UI
  • Given I am within the platform UI with the app in Background active state and the app supports Firebolt Lifecycle states,
  • When I select the app launch tile,
  • Then the app will be made visible in full screen; the app does not reload.
In the foreground active state within the platform UI
  • Given I am within the platform UI with the app in Foreground active state and the app supports Firebolt Lifecycle states,
  • When I voice search for the same app,
  • Then the app remains displays in full screen; the app does not reload.

App UI requirements

UI-01 App Synopsis

Example: App Synopsis UI

You must have a clear description of your app up to 180 characters long.

Additional notes:

  • We recommend up to 180 characters but can go up to a maximum of 200 pending review on the app platform.
  • See image guidelines for additional asset specifications.

Acceptance Criteria

As a user, I want a synopsis for an app, so that I understand what the app is and what content it offers.

App synopsis visibility in platform UI
  • Given the user is browsing the app platform UI,
  • When they navigate to the app launch point and the app synopsis is visible,
  • Then the synopsis must be fully visible.

UI-02 Content Synopsis

Example: Content synopsis UI

You must have a clear description of your content up to 200 characters long. This appears alongside the content hero image.


Quick start feature requirements (QS)

QS-01 Foreground Active to Background Active (when pressing 'home' on remote)

Your app must transition from the Foreground Active state to the Background Active state appropriately without issue when the user presses 'home' on the remote.

Additional notes:

  • This transition does not require the app to support Firebolt Lifecycle states; this is a platform level capability.

Acceptance Criteria

Transition to Background Active
  • Pressing home on the remote will bring the app platform UI into the foreground and moves the app into the Background Active state.
  • The app will be visible in the mini-tv (currently playing tile)
  • The app will remain in the Background Active state until user either plays a content from another provider or selects the app via app launch point, app content tile or the mini-TV itself which transitions the app back into full screen (Foreground Active)
  • Currently, when the app is in the Background Active state, the app will not be able to receive trickplay commands from the remote except for Play and Pause commands. These commands apply when the mini-tv is in or out of focus.

QS-02 Background Active to Foreground Active

Your app must transition from the Background Active state to the Foreground Active state appropriately without issue.

Additional notes:

  • This transition does not require the app to support Firebolt Lifecycle states; this is a platform level capability.

Acceptance Criteria

Transition to Foreground Active
  • Pressing select when the mini-tv is in focus will navigate to full screen for the app and therefore place it back into the Foreground Active state from the Background Active state.
  • The app can also move from the Background Active to Foreground Active state if the user selects a piece of content from the particular app when browsing the app platform UI. The app will be brought into the foreground either immediately into playback or onto the show-page, depending on the deep-link type. The app should not relaunch.
  • If the app has been placed in the Background Active state without any AV content playing, then navigation will be to the point in the app's UI in full screen.
  • If the app has been placed in the Background Active state with AV content playing or paused, then the app will continue with the same piece of content playing or paused in full screen when moved back to Foreground Active state.

QS-03 Background Active to Inactive

Implementation prerequisite

The app must support the applicable Firebolt Lifecycle states.

Your app must transition from the Background Active state to the Inactive state appropriately without issue.

Acceptance Criteria

Transition to Inactive
  • Given the app is in the Background Active state,
  • When the user selects a different piece of content (e.g., ingested VOD, a different app),
  • Then the app will be moved to the Inactive state,
    • And the app should immediately stop any AV content playing and free up resources to enter the low-resource Inactive state.

QS-04 Inactive to Foreground Active (Quick Start launch)

Implementation prerequisite

The app must support the applicable Firebolt Lifecycle states.

Your app must transition from the Inactive state to the Foreground Active state appropriately without issue.

Additional notes:

  • The app does not need to have integrated with Firebolt Lifecycle States to support this transition.
  • If the app had transitioned into the Inactive state from an Active state within the last 60 seconds, the app must reopen at the same place within the app UI that the user was in previously. The exception is if the app is being launched via a deep link, in which case it will transition to Foreground Active to the content playback or showpage the link relates to.
  • If the app supports in-app profiles, then the app should keep the same profile logged in.
  • If the app had transitioned into the Inactive state from an Active state after 60 seconds, the app must transition to the app homepage.
  • If the app supports in-app profiles, then the app should take you to a Profile Selection screen. The exception is if the app is being launched via a deep link, in which case it should transition to Foreground Active to the content playback or showpage the link relates to, using the most recently used app profile.

Acceptance Criteria

Launching from Inactive state on SoIP device at 20mbps
  • Given I am using a SoIP device connected to a controlled network speed of 20mbps,
  • When I launch the app from an Inactive state,
  • Then the app UI must load within 1 second.

QS-05 Unloaded to Foreground Active (cold start launch)

Your app must transition from the Inactive state to the Foreground Active state appropriately without issue.

Additional notes:

  • The app does not need to have integrated with Firebolt Lifecycle States to support this transition.

Acceptance Criteria

Launching from Unloaded state (cold start) on SoIP device at 20mbps
  • Given I am using a SoIP device connected to a controlled network speed of 20mbps,
  • When I launch the app from an Unloaded state (i.e., a cold start launch),
  • Then the app UI must load within 10 seconds.

QS-06 Foreground Active to Inactive (when pressing 'dismiss' on remote)

Implementation prerequisite

The app must support the applicable Firebolt Lifecycle states.

Your app must transition from the Foreground Active state to the Inactive state appropriately without issue when the user presses 'dismiss' on the remote. There are two methods of exiting the app and placing it into the Inactive state fromthe Foreground Active state:

  1. Pressing 'dismiss' on the remote.
  2. Launching content that exists outside of the app via voice command or DIAL.

Additional Note

  • Pressing the 'dismiss' button on the remote will exit the app, placing it into the Inactive state. Pressing 'home' on the remote does not exit the app completely, despite the app not being in the foreground. This instead places the app into the Background Active state (see QS01 Foreground Active to Background Active transition).

Acceptance Criteria

Exiting app using 'dismiss' button on remote
  • Given I am in the app,
  • When I exit out of the app using the 'dismiss' button on the remote,
  • Then the app should stop playing any A/V content,
    • And the platform UI will be brought into the foreground, and place the app into the Inactive state,
    • And the app shall remain in the same place within the app UI for 60 seconds before transitioning the app's home page,
    • And after 60 seconds, the app must revert to the in-app homepage.

QS-07 Full System Reboot

Implementation prerequisite

The app must support the applicable Firebolt Lifecycle states.

Your app must begin in the Inactive state after a reboot if your app was the last app launched prior to the reboot. Your app must also follow the same acceptance criteria as the QS-04 Inactive to Foreground Active transition.

If your app requires authentication, and the user has successfully authenticated prior to a full system reboot, the user must remain authenticated so that the next time your app is launched they can access your app without being asked to sign in again.

QS-08 App Crash from Active Foreground / Background

Implementation prerequisites
  • The app must support the applicable Firebolt Lifecycle states.
  • The app must be able to detect an app crash.

If your app is in a Foreground Active or Background Active state and detects a crash, then your app should issue a Lifecycle.close() with reason as Error. The app should launch from a cold start state when it launches next (see QS-05 for cold start launch requirements).

QS-09 Glance mode while app is in Foreground Active

This is only applicable for users in the UK.

If your app has been running with no activity from the user after 3 minutes while in the Foreground Active state, then Glance mode should not trigger.

QS-10 Glance mode while app is in Unloaded, Inactive, or Background Active

This is only applicable for users in the UK.

If your app has been running with no activity from the user after three minutes while in the Unloaded, Inactive or Background Active state, then Glance mode should trigger.

QS-11 Lifecycle on XiOne (DE & IT) devices

This requirement is only applicable to distribution with Germany (DE) and Italy (IT)

If your app is on a XiOne device (DE & IT), then the lifecycle behavior must match the requirements outlined in QS-04 through QS-07, and QS-08. However, the following changes will apply:

  1. There will be no Background Active state. The states for Q will either be Unloaded, Active, or Inactive.
  2. There is no Switcher rail in the UI.

Lifecycle requirements QS-01 through QS-03 will not apply to these devices.


Trickplay Behavior Requirements (TP)

TP-01 Play

Your content should play or resume as expected when the user selects to play content. This includes playing from the content tile, fast-forwarding / rewinding content, or when the content is paused.

Acceptance criteria

As a user, I want to be able to forward or rewind so that I can control my playback in the app consistently.

Scenario prerequisites:

  • The user is watching content in the app – applicable to FFWD/RW-able adverts as well.
Paused while watching content
  • Given I am watching content and it is paused,
  • When I play content,
  • Then the content must play within 0.5 seconds.
On a content tile in the app UI
  • Given I am on a content tile in the app UI,
  • When I press play,
  • Then the content must play within 2 seconds.
Paused on a content tile
  • Given I am on a content tile or on pause,
  • When I press play,
  • Then the video content and audio content must play in-sync.
Resuming playback after fast-forwarding or rewinding
  • Given I am fast-forwarding/rewinding content,
  • When I play/resume content,
  • Then the content must play within 2 seconds.

TP-02 Pause

Your content should pause when the user selects to pause content. This includes pausing while watching, fast-forwarding, or rewinding content.

Acceptance criteria

As a user, I want to be able to forward or rewind so that I can control my playback in the app consistently.

scenario : The user is watching content in the app – applicable to FFWD/RW-able adverts as well.

Watching Content
  • Given I am watching content,
  • When I pause content,
  • Then the content must be paused within 0.5 seconds.
Pausing while fast-forwarding or rewinding
  • Given I am fast-forwarding or rewinding content,
  • When I pause content,
  • Then the content must be paused within 2 seconds.

TP-03 Fast-forward

Your content should fast-forward when the user selects to fast-forward content and present a visual indication of timeline progress. This includes increasing speed while fast-forwarding (x2, x6, x12, and x30).

Acceptance criteria

As a user, I want to be able to forward or rewind so that I can control my playback in the app consistently.

scenario : The user is watching content in the app – applicable to FFWD or RW-able adverts as well.

Fast-forward response time
  • Given I am watching content,
  • When I fast-forward content,
  • Then the content must fast-forward within 0.5 seconds.
Fast-forward speed increments
  • Given I am watching content,
  • When I fast-forward content,
  • Then the content must fast-forward at the following multiple speeds x2, x6, x12, x30.
Fast-forward button activation
  • Given I am watching content,
  • When I fast-forward content,
  • Then fast-forward should be enabled on one button click (either single press or held down).
Fast-forward visual progress indicator
  • Given I am watching content,
  • When fast-forward content,
  • Then I should get a visual indication of progress in time via the Player UI elements.
Fast-forward UI persistence
  • Given I am watching content,
  • When I fast-forward content,
  • Then trickplay UI elements should display until the user aborts FFWD.

TP-04 Rewind

Your content should rewind when the user selects to rewind content and present a visual indication of timeline progress. This includes increasing speed while rewinding (x2, x6, x12, and x30).

Acceptance criteria

As a user, I want to be able to forward or rewind so that I can control my playback in the app consistently.

scenario : The user is watching content in the app – applicable to FFWD or RW-able adverts as well.

Rewind response time
  • Given I am watching content,
  • When I rewind content,
  • Then the content must rewind within 0.5 seconds.
Rewind speed increments
  • Given I am watching content,
  • When I rewind content,
  • Then the content must rewind at the following multiple speeds x2, x6, x12, x30.
Rewind button activation
  • Given I am watching content,
  • When I rewind content,
  • Then rewind should be enabled on one button click (either single press or held down).
Rewind visual progress indicator
  • Given I am watching content,
  • When I rewind content,
  • Then I should get a visual indication of progress in time via the Player UI elements.
Rewind UI persistence
  • Given I am watching content,
  • When I rewind content,
  • Then trickplay UI elements should display until the user aborts rewind.

TP-05 Scrubbing

When a user presses and holds the left or right button, a visual audio or video selector must slide across a visual timeline within the player UI of your app.

As an example, user can forward from position 00:00 to 03:00 in a piece of content.

Acceptance criteria

As a user, I want to be able to scrub forward or backwards so that I can control my playback.

Scenario prerequisites:

  • The user is watching content in the app – applicable to FFWD or RW-able adverts as well.
Scrubbing selector movement
  • Given I am watching content,
  • When I press and hold the left or right button,
  • Then I should be able to move the audio or video selector to a specific time.
Scrubbing response time
  • Given I am watching content,
  • When I move the audio track or video selector to a specific time,
  • Then the content must move to that point within 2 seconds.
Scrubbing visual progress indicator
  • Given I am watching content,
  • When I move the audio track or video selector to a specific time,
  • Then I should get a visual indication of progress in time via the Player UI elements.
Scrubbing UI persistence
  • Given I am watching content,
  • When I move the audio track or video selector to a specific time,
  • Then trickplay UI elements should display until the user aborts scrubbing.

Playback Requirements (PB)

See UI Examples for examples of app UI.

PB-01 Initiating Playback from the Show Center UI - Hero zone

Your app content should play and resume as expected from the content tile, fast-forwarding or rewinding content, or when content was previously paused.

Additional notes:

  • Requires both metadata integration and consumption data integration.

Acceptance criteria

As a user, when I press select the watch call to action on a piece of content from the Show Page UI (hero zone), I want the to load that piece of content, so that I can start watching it.

Sign-in not required - content with resume point
  • Given I am in the platform UI and the app does not require the user to sign-in to view content,
  • When I have selected a piece of content to play from the platform UI Show Center that has a resume point (UI Example: Continue -> Playback Intent),
  • Then the app must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
Sign-in not required - content without resume point
  • Given I am in the platform UI and the app does not require the user to sign-in to view content,
  • When I have selected a piece of content to play from the platform UI Show Center that does not have a resume point (UI Example: Watch action -> Entity Intent),
  • Then the app must load and take me to the show page.
Signed in where required - content with resume point
  • Given I am in the platform UI and I am signed into an app where sign-in is required to view content,
  • When have selected a piece of content to play from the platform UI Show Center that has a resume point (UI Example: Continue -> Playback Intent),
  • Then the app must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
Signed in where required - content without resume point
  • Given I am in the platform UI and I am signed into an app where sign-in is required to view content,
  • When have selected a piece of content to play from the platform UI Show Center that does not have a resume point (UI Example: Watch action -> Entity Intent),
  • Then the app must load and take me to the show page.
Not signed in where sign-in is required - content with resume point
  • Given I am in the platform UI and I am not signed into an app where sign-in is required to view content,
  • When have selected a piece of content to play from the platform UI Show Center, that has a resume point (UI Example: Continue -> Playback Intent),
  • Then the app must load, and I must be presented with the sign-in screen. Once signed-in the content must start playing. There must be no further information screens or interstitials that require user interaction after the sign-in journey.
Not signed in where sign-in is required - content without resume point
  • Given I am in the platform UI and I am not signed into an app where sign-in is required to view content,
  • When have selected a piece of content to play from the platform UI Show Center, that does not have a resume point (UI Example: Watch action -> Entity Intent)
  • Then the app must load, and I must be presented with the sign-in screen. Once signed-in the app must take me to the show page.

PB-02 Initiating Playback from the Show Center UI - Available Now zone

Your app content should load and play the correct episode when the user presses 'Play' on a specific piece of content in the Show Center UI.

Additional notes:

  • The app platform will not be able to include your app in the platform UI Show Center.

Acceptance criteria

As a user, when I browse down the platform UI Show Center to the “Available Now” zone and press “Play” on a specific piece of content, I want the app to load that specific piece of content, so that I can start watching it.

Available Now zone - sign-in not required
  • Given I am in the platform UI and the app does not require the user to sign-in to view content,
  • When I have selected an episode to play from the platform UI Show Center 'Available Now' zone,
  • Then the app must load the correct episode and the content must start playing. There must be no information screens or interstitials that require user interaction. (UI Example: Specific asset selection -> Playback Intent).
Available Now zone - signed in where required
  • Given I am in the platform UI and I am signed into an app where sign-in is required to view content,
  • When I have selected an episode to play from the platform UI Show Center 'Available Now' zone,
  • Then the app must load the correct episode and the content must start playing. There must be no information screens or interstitials that require user interaction. (Specific asset selection -> Playback Intent).
In the platform UI and not signed in where sign-in is required
  • Given I am in the platform UI and I am not signed into an app where sign-in is required to view content,
  • When have selected an episode to play from the platform UI Show Center ''Available Now" zone,
  • Then the app must load, and I must be presented with the sign-in screen. Once signed-in the correct episode / content must start playing. There must be no further information screens or interstitials that require user interaction after the sign-in journey. (UI Example: Specific asset selection -> Playback Intent).

PB-03 Initiating Playback from a Merchandised Title (via Show Page)

When a user selects a piece of merchandised app content, then the platform UI should display the correct editorialized app content within the UI show page.

Additional notes:

  • Merchandising is at platform discretion and requires app metadata integration.

Acceptance criteria

As a user, when I select a specific, editorialized piece of app content from the Sky UI, I want to access that particular piece of content within the , so that I can start watching the content I desired.

In the platform UI and selected a piece of merchandised app content
  • Given I am in the platform UI,
  • When I select a piece of merchandised content,
  • Then the platform UI Show Page will be displayed, and playback can be initiated from the Hero zone watch call to action or Available Now tab.

PB-04 Initiating playback from an app platform Show Page (no consumption data)

The CTA must say 'Watch' within the hero zone if the user has not yet watched any content from your app.

Scenario prerequisites:

  • User has landed on the show page for an app which they have not engaged with and there is no resume point

Acceptance criteria

Not having started to watch any content
  • Given the user hasn't started to watch any content for this particular app,
  • When the user is on the hero zone,
  • Then the CTA button will say 'Watch' (UI Example: Watch action -> Entity Intent).
Having selected watch from the hero zone
  • Given the user selected 'Watch' (UI Example: Watch action -> Entity Intent) from the Hero zone,
  • When the app is launched,
  • Then the user will be directed to content show page within the app.

PB-05 Initiating Playback from an app platform Show Page (consumption data available)

The CTA must say 'Continue' within the hero zone if the user had previously started watching content from your app. The 'Continue' action must be based on the resume point of the content.

Acceptance criteria

Scenario prerequisites:

  • User has landed on the show page for a which they do have a resume point and have started to engage with.
Having started to watch any content for this particular app and the app has provided consumption data
  • Given the user has started to watch any content for this particular app on the app platform,
    • And the app has provided consumption data,
  • When the user is on the hero zone,
  • Then the CTA button will display a Continue action based on the resume point (UI Example: Continue -> Playback Intent).
Having selected the continue watching resume point
  • Given the user selects the continue watching resume point (UI Example: Continue -> Playback Intent),
  • When the app is launched,
  • Then the user will be directed to content playback within the app.

PB-06 Resuming playback from platform UI

Your app content should display the correct piece of content or episode in the app platform's Continue Watching rail or Show Page.

Additional notes:

  • Resuming playback requires the app to have integrated both metadata and consumption data.

Acceptance criteria

As a user, when I surface a piece of content from within the app in the platform UI (either via a Continue Watching rail or from a Show Page), I want the platform UI to surface the current episode I’m watching or the next episode to play (UI Example: Continue -> Playback Intent).

In the app and have part-watched an episode from a series
  • Given I am in the platform UI,
    • And I have part-watched an episode from a series in the app,
  • When I surface a Show page that series,
    • And the app has provided resume points,
  • Then the platform UI will be able to indicate to me the part-watched episode to view, the amount watched and allow me to continue watching.
In the app and have fully watched an episode from a series
  • Given I am in the platform UI
    • And I have fully watched an episode from a series in the app,
  • When I surface a Show Page for that series,
    • And the app has provided resume points,
  • Then the platform UI will be able to indicate to me the next episode to view and allow me to continue watching.
In the platform UI and part-watched show and app provided resume points
  • Given I am in the platform UI,
    • And I have part-watched a show in the app,
    • And the app has provided resume points,
  • When I browse a Continue Watching rail,
  • Then the platform UI will able to indicate to me the part-watched episode to view, the amount watched and allow me to continue watching.
In the platform UI and the app has provided resume points
  • Given I am in the platform UI,
    • And the app has provided resume points,
  • When I browse a Continue Watching rail,
  • Then the platform UI will be able to indicate to me the next episode to view and allow me to continue watching.
Resume playback from the platform UI
  • Given I am in the platform UI,
  • When I resume playback of a piece of app content I had been watching,
  • Then the app must playback from where the user has most recently left off.

PB-07 Initiating playback from the platform UI - play now/continue watching

Your app content should play the correct piece of content or episode from the app platform's Continue Watching or Play Now rail without additional user action when the user presses 'Play'.

Additional notes:

  • Requires both metadata integration and consumption data integration.
  • The app loading time is subject to the app Load Times requirements (OR01) . Where the content is subject to pre-roll advertising, idents, etc. the playing of these assets will fulfil this requirement.

Acceptance criteria

As a user, when I select “Play” on a piece of content from the “Play Now”/ “Continue Watching” rail I want the app to load and the content to start playing straightaway without any information screens and without the need for further button presses. (UI Example: Continue -> Playback Intent).

In the app platform where sign-in is not required for viewing
  • Given I am in the platform UI and the app does not require the user to sign-in to view content,
  • When I have selected a piece of content to play from the "Play now" / "Continue Watching" rail (Playback Intent),
  • Then the app must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
Signed into the platform UI where sign-in is required for viewing
  • Given I am in the app platform UI and I am signed into an app where sign-in is required to view content,
  • When I have selected a piece of content to play from the "Play now" / "Continue Watching" rail (Playback Intent),
  • Then the app must load and the content must start playing. There must be no information screens or interstitials that require user interaction.
Not signed in while in the platform UI where sign-in is required for viewing
  • Given I am in the platform UI and I am not signed into an app where sign-in is required to view content,
  • When have selected a piece of content to play from the "Play now" / "Continue Watching" rail (Playback Intent),
  • Then the app must load, and I must be presented with the sign-in screen. Once signed-in the content must start playing. There must be no further information screens or interstitials that require user interaction after the sign-in journey.

Ad break requirements (AB)

AB-01 Trickplay during advertisements

If a user initiates FFWD, RWD, scrub, or skip during an ad break, then your app must present a notification indicating which functions are unavailable during the ad break.

Additional notes:

  • This is to avoid the Trickplay UI displaying at the start of every ad-break in normal viewing mode and impacting the viewing experience.

Acceptance criteria

User has initiated FFWD, RWD, etc. in an ad break
  • Given a user has initiated FFWD, RWD, scrub and/or Skip in an ad break,
  • Then the app must gracefully handle on-screen notifications for non-functioning trickplay options,
    • And black screens, error screens or other visible transitions/ inconsistencies should not be presented at any point using trickplay between ads and content playback,
    • And Trickplay UI elements displayed should be consistent with the user interface for trickplay during content,
    • And user should get a visual indication of progress (time) for ads via the Player UI elements (e.g., a timeline, countdown clock or an equivalent).
User has not attempted trickplay
  • Given that a user has not attempted trickplay or attempted to control playback in any way,
  • Then the Ad Trickplay UI should not be invoked.

AB-02 Visual timeline

When the user attempts to initiate trickplay, a visual timeline within the player's UI elements must be presented to indicate the progress for ads.

AB-03 Transitions

Black screens, error screens, or other visible transitions/ inconsistencies should not be presented at any point using trickplay between ads and content playback


Dismiss button requirements (DB)

On remotes that have a 'back button' instead of a 'dismiss button', the same requirements apply to 'back buttons'.

DB-01 App exit behavior

When a user is on your app's homepage and the dismiss button is pressed, then your app must exit and return the user back to the same point they launched your app from within the platform UI. Confirmation dialogues are not permitted for this action.

Acceptance criteria

As a user, I want the app to exit quickly so that I can get back to the platform UI.

Scenario prerequisites:

  • A confirmation dialogue on app exit is not permitted.
  • On exit, the current UI behavior will place the user back to the same point at which they launched the app
  • If the hierarchical back is not the best solution, then historical back can be used on the basis that:
  • Dismissing no more than 3 times will return back to the app platform's UI.
  • On the dismiss journey, the app should exit via a show page and the in-app homepage.
On the app homepage
  • Given I am on the app homepage,
  • When I press "Dismiss",
  • Then the app must exit back to the distribution app platform's UI.
Within the app
  • Given I am within an app,
  • When I press "Dismiss",
  • Then the app must exit hierarchically back through via the app homepage and then dismiss back into the app platform's UI.

DB-02 Dismiss button during playback

If on-screen UI is visible, the dismiss button first applies to going back to full-screen playback.

Acceptance criteria

As a user, I want the app to be intuitive when dismissing during playback.

Trickplay bar is open within app during content playback
  • Given I am within the app during playback of content,
    • And the trickplay bar is open,
  • When I press "Dismiss",
  • Then the app should close the trickplay bar.
Trickplay bar closed within during content playback
  • Given I am within the app during playback of content,
    • And the trickplay bar is closed,
  • When I press "Dismiss",
  • Then the app should follow Ending Content during playback requirements below.
User trick playing content within app during content playback
  • Given I am within the app during playback of content,
    • And the user is trickplaying content,
  • When I press "Dismiss",
  • Then the app content should stop trickplaying.

DB-03 Ending content during playback

When a user is watching content, no on-screen UI is present, and the dismiss button is pressed, then your app must take the user to the in-app showpage for that show. Confirmation dialogues are not permitted for this action.

Additional notes:

  • Some remotes have a back button instead of dismiss, the same requirement applies to the back button on these remotes.

Acceptance criteria

As a user, I want the app to stop playback quickly.

Watching Content in the app
  • Given I am in the app watching content,
  • When I press "Dismiss",
  • Then the app must stop playback and take me to the in app Show page for that show.

DB-04 Remote capability

A confirmation dialogue on app playback ending is not permitted. Your app should respond as expected when interacting with supported remotes (including touch dish and touch remotes).


Gaming requirements (GG)

To provide customers playing games a good experience, the following requirements must be met.

GG-01 Bluetooth pairing - settings

Previous ID: F10

Customers can pair a Bluetooth device.

Acceptance criteria

As a user, I want to be able to pair my Bluetooth controller through the Settings menu with ease, so my controller will navigate cloud gaming Cloud Gaming Apps.

Having navigated to settings CTA in the gaming app
  • Given I am in the Gaming app,
  • When I navigate to the Settings CTA,
  • Then a warning message will inform me I need to connect a controller,
    • And the Settings option loads,
    • And the Pair Bluetooth device option will be surfaced.
Having selected a game without controller connected
  • Given I have not connected my controller,
  • When I select a game,
  • Then a warning message will inform me I need to connect a controller,
    • And the Settings option loads,
    • And the Pair Bluetooth device option will be surfaced.
Having selected pair bluetooth devices
  • Given I am on the Bluetooth pairing option,
  • When I select the Pair Bluetooth devices option,
  • Then the Gaming app will deep link to Ent OS settings page -> Pair devices screen.

GG-02 Cloud gaming app navigation - game controller

Previous ID: F13

Customers can use a Bluetooth game controller.

Acceptance criteria

As a user, I want to use my paired Bluetooth controller within the Gaming app, so that I can navigate the UI with ease

See button mappings for more information.

GG-03 Cloud saves

Previous ID: F15

Customers can save and resume progress within a game.

Acceptance criteria

As a user, I want my saves to be stored in the cloud, So that I can resume my game.

Subscribed to cloud gaming app and have played a game
  • Given I am subscribed to a Cloud Gaming app,
    • And I played a game on the Gaming app service,
  • When I re-enter the game from the service,
  • Then I will be presented with the option to resume from my last save point.
Subscribed to cloud gaming app
  • Given I am subscribed to a Cloud Gaming app,
  • When I continue to be subscribed,
  • Then my save games will be retained indefinitely.
No longer subscribed to cloud gaming app
  • Given I am no longer subscribed to the Cloud Gaming app where my cloud save is stored,
  • When I do not re-subscribe to the Cloud Gaming app where my save is stored,
  • Then my saves will be stored for a minimum of 2 years in line with data protection rules.

GG-04 Cloud gaming app responsiveness

Previous ID: NF2

Interactions by the customer with the Gaming app must not be delayed.

Acceptance criteria

As a user, I want the to respond quickly when I am using it so that I do not have to wait while navigating.

Using an EntOS device connected to a controlled network
  • Given I am using an EntOS device connected to a controlled network speed of at least 20mbps,
  • When navigating the UI,
  • Then it must feel smooth and intuitive.
Tile-to-tile transition time
  • Given I am navigating the UI,
  • When conducting a tile-to-tile transition,
  • Then it must occur within 100ms.
Asset playback start time from UI
  • Given I am navigating the UI,
  • When I playback an asset within the UI,
  • Then it must play within 3 seconds.

GG-05 Visual playback latency

Previous ID: NF4

The visual element of gaming content must not have lag.

Acceptance criteria

As a user, I want a visually responsive gaming experience when I am cloud gaming, so that I can immerse myself in the experience.

Visual latency while in-game
  • Given I am in the Gaming app,
    • And I selected a game to begin playing,
    • And the game loads,
  • When in-game,
  • Then the end to end latency should be less than 150ms.

GG-06 Audio playback latency

Previous ID: NF5

The audio element of gaming content must not lag behind the visual element.

Acceptance criteria

As a user, I want an audibly responsive gaming experience when I am cloud gaming, So that the visual and audible experience are in sync

Audio latency while in-game
  • Given I am in the Gaming app,
    • And I selected a game to begin playing,
    • And the game loads,
  • When in-game,
  • Then the Audio latency should be less than 250ms.

GG-07 Resuming games from EntOS UI

Previous ID: PB1

Customers can quickly resume playback directly from EntOS.

Acceptance criteria

As a user, when I play a game from within the Gaming app in EntOS UI (either via a Continue Playing rail or from a Game entity/destination Page), I want EntOS UI to surface the current game I’m playing (Continue -> Cloud game resume Intent).

Save point has been generated within a game while playing in EntOS
  • Given I am in EntOS UI,
    • And I have started playing a game and generated a cloud save point within the Gaming app,
  • When I surface a Game entity page,
    • And the Gaming app has provided cloud save points,
  • Then EntOS UI will be able to indicate to me the cloud save / resume point to view, and allow me to continue playing.
While in EntOS UI
  • Given I am in EntOS UI,
  • When I select a game to resume,
  • Then the Gaming app must deep link to the game entity page within the Gaming app.