REMOTE ORIGIN

Few Facts

  • RO founded Feb 2016 (7 yrs)
    • US market work since 2012 (11 yrs)
  • Web application development
  • OTT Testing service
  • Team ~10 developers, located in Prague, Czech Republic
  • REMOTE in the DNA

Some reference projects

  • FuboTV - Smart TV App
    • Development
    • Testing - Production regression testing
  • NBC News
  • Red Bull - Smart TV App
    • Development
  • Samsung Product Innovation Team, OptumSoft, Swrve,…

OTT Testing

Usage
Scenarios

Pre-release Testing (QA)

  • Identify regressions
  • Decrease testing time
  • Avoid human errors
  • Increase overall productivity

Quality of Service (QOS)

  • Continuous testing of the application’s health
  • Tests ensure the entire application and services stacks are properly functioning
  • Crucial features like browsing, playback, authentication, …
  • Soak, Stress, Fuzz testing

Solution Strengths

  • Flexibility
    • Ability to adjust to clients needs
    • Ability to integrate with various CI systems
    • Adjustments for specific app validation limitations
  • Developer oriented
    • Using standard libraries (Mocha, Jasmine)

    • Tests code stored in project GIT

Testable Apps

Any HTML5 application running inside the browser on a device can be tested.

  • Classic DOM Applications (React)
    • Evaluating DOM and its state
  • WebGL Applications (LightningJS)
    • evaluating exposed application state

Supported Platforms

  • Samsung
  • LG
  • Xbox
  • Vizio
  • Hisense
  • Android / Fire TV (webview)
  • Other JavaScript-based platforms

Tests Specification

  • Writen in JavaScript
  • Supports standard testing frameworks
    • Jasmine, Mocha, Cucumber, …
  • Stored with the App codebase (GIT)
  • Various reporting outputs

Code example

Jasmine (React App)


            it('Test of navigation and focus in menu', () => {
                expect($('.menu').isExisting()).toEqual(true)
                sendKey('ArrowLeft', 2)
                expect(containsClass($$('.list_of_items')[3].getAttribute('className'), 'is-focused')).toEqual(true)
                sendKey('Enter')
                waitUntilBufferingIsGone(browser, 10000)
                browser.waitUntil(() => {
                    return $('.menu_item').getAttribute('className') === 'menu_item is-active'
                }, 10000)
                sendKey('Return', 2)
            })
            

Code example

Jasmine (LightningJS App)


            it('Go back to grid', async () => {
                await sendKey('Back')
                const isFocused = await browser.execute(() => {
                    const focusPath = window.app.focusPath
                    return focusPath.findIndex((e) => e.ref === 'Back') !== -1
                })
                expect(isFocused).toBe(true)
                await sendKey('Ok')
                [selectedRow, selectedCol] = await browser.execute(() => {
                    const focusPath = window.app.focusPath
                    const col = focusPath.find((e) => e.ref === 'Content')
                    const row = focusPath.find((e) => e.ref === 'Row')
                    return [col.selectedIndex, row.selectedIndex]
                })
                expect([selectedCol, selectedRow]).toBeEqual([0,2])
            })
            

Solution
Components

Controller Desktop App

  • Manage devices
  • Run tests and manage test results
  • Develop test in sandbox browser
  • Control devices over the local network
  • Control other users’ devices (distributed lab)

USB Remote Control

  • Control devices via virtual keyboard

OTT Application Bundle

  • Appended into the OTT App as the <script>
  • Evaluate the Application
  • Sends information from inside the OTT device to the server

Server

  • Orchestrate all testing

CI Setup

Video Demo

What We Offer

  • OTT Testing Services
    • Testing consulting
    • Tests development
    • Device testing lab
  • Smart TV Development

Let’s talk

+1 (415) 315-9776

+420 720 407 748

[email protected]