B2G/QA/WebAPI Test Plan/Screen Orientation

From MozillaWiki
< B2G‎ | QA‎ | WebAPI Test Plan
Jump to: navigation, search

B2G Screen Orientation API Test Plan

Summary

Lead Geo Mealer (irc: geo)
Contributors TBD
API Description Get notification when screen orientation changes as well as control which screen orientation a page/app wants.
API Developer Mounir Lamouri
API Project Page Screen Orientation
API Tracking Bugs bug 720794, bug 740188, bug 673922
API Status Delivered and ready for test

Scope

This test plan covers functional testing of the Screen Orientation API as delivered for Boot2Gecko. It does not attempt to cover performance, security, or other kinds of testing at this time.

Strategy

Screen Orientation can be tested most effectively using QEMU commands to manipulate the virtual orientation of the device, so primary testing will be via Marionette/JS through CI.

Some basic sanity tests can be added to Mochitest for other platforms, and a test app should be created to verify the API on-device.

API

Screen Orientation API is relatively simple, and is defined as part of the nsIDOMScreen interface.

It includes a basic attribute to get current orientation, methods to lock/unlock orientation to a desired value (for example, for an app that only runs in landscape), and an event to let applications know when an orientation change has occured.

Orientation locking is available to apps and frames contained in apps. A non-app can only use the locking API if it is fullscreen.

nsIDOMScreen (subset)

Attributes

  • readonly DOMString mozOrientation
    Can be landscape-primary, landscape-secondary, portrait-primary, portrait-secondary

Methods

  • boolean mozLockOrientation(in DOMString orientation)
  • void mozUnlockOrientation()

Events

  • onmozorientationchange

Tests

Marionette/JS

Tacking bug: bug 805005

Basic Positive Tests

Not implemented yet:

  • Lock orientation to each different value. (Rotate to different value first).
    • Verify mozOrientation changes as expected and onmozorientationchange fires
  • Lock orientation to the current value
    • Verify onmozorientationchange doesn't fire.
  • Rotate virtual device around Z axis
    • Verify no orientation change or event
  • Rotate virtual device around X axis
    • Verify mozOrientation changes as expected and onmozorientationchange fires
  • Rotate virtual device around Y axis
    • Verify mozOrientation changes as expected and onmozorientationchange fires

All positive tests past just sanity checking require use of the emulator to vary rotation. Emulator semantics for rotation are unknown, and initial tries didn't result in something usable. See bug 760735 for more details.

mochitest-plain

Sanity Tests

  • Verify mozOrientation in [portrait-primary|portrait-secondary|landscape-primary|landscape-secondary]

Basic Negative Tests

  • Attempt to lock orientation to invalid string
  • Attempt to lock orientation to empty string
  • Attempt to lock orientation to number
  • Attempt to lock orientation to null

Not implemented yet:

  • If not running as app, attempt to lock orientation when not full-screen.
    • Unsure how to do this check in mochitest. Not a super-high-value test.

Test App Design

Basic test application can be found here. It surfaces all major bits of the API for interactive testing.


This page is based on the WebAPI Test Plan Template