QA/Browser Technologies/WebAPI

From MozillaWiki
Jump to: navigation, search

Overview

The Mozilla WebAPI team is aiming at providing all the necessary APIs to build a basic HTML5 phone experience within the next 3-6 months. Most of the known APIs (derived from bugzilla) are listed here. Main Tracking Bug for following status of project is here.

Blue means the feature has already shipped in a previous version of firefox.

Green means the feature has landed recently, or is landing soon.

Red means the feature is currently a work in progress.

Application Areas Required APIs
Dialer Web Telephony API, Web SMS API, Contacts API, Visibility API
Battery Battery API
Address Book Contacts API
Messaging and Video Chat Web Telephony API, Web SMS API, Contacts API, WebRTC
Storage File System API, IndexedDB API
Camera Camera API, Camera Support for Desktop, Filesystem API
Settings and Status Device Status API, Settings API
Games Mouse Lock API, Vibrator API
Sensors Accelerometer API, Block Orientation Change, Proximity Sensor, Compass, Light Sensor, Speech-to-Text, Joystick API, Joystick Rumble Support
Maps Geolocation API, Contacts API
Apps OWA API, DOM Crypt API, App-State API, App-Pin API, tab/app-modal popup API, Cross-Origin URI Load API, Full Window API, navigator.mozApps
Graphics OpenCL, Animated Sprite API, Opacity Threshold API, CSS Tracer API, Native Resolution API, Fullscreen from Content API
Printing WebPrint API
Audio Sound Playback API (multishot)
Hardware Interfaces WebUSB API, WebBluetooth API, DOM3 Keyboard Event types API, WebNFC API, Network Type API, Network Manager API, Sensor API
Security Display Sleep/Screenlock API, BLOCK Display Sleep/Screenlock API, Allow loosening same-origin checks support

Mozilla will most likely not implement the FileSystem API. For local file access, we have implemented FileReader and plan to implement parts of the FileWriter specification. A file system abstraction can additionally be built on top of IndexedDB.

Team Details

The team is starting out initially as just John Hammink (as more members will be added over time). Also Malini Das will be writing functions within Marionette project to support test automation of Web APIs and B2G.

Team Members and Assignments

Name Contact Availability Project Assignments
John Hammink jhammink@mozilla.com MoCo Employee (full time) Project Lead, Automation
Malini Das mdas@mozilla.com MoCo Employee (full time) Lead Developer, Marionette Framework
Tony Chung tchung@mozilla.com MoCo Employee (full time) QA Team Manager

Current Status

APIs Landed in Q4 2011

This section should contain a list to the active current team project page. The section will be included as part of the top level QA organization page.

Project Description QA Owner
[[<link>| Web Telephony API Test Plan]] Description of Web Telephony API Test Plan John
[[<link>| WebSMS API Test Plan]] Description of WebSMS API Test Plan John
[[<link>| Battery API Test Plan]] Description of Battery API Test Plan John
[[<link>| Contacts API Test Plan]] Description of Contacts API Test Plan John
[[<link>| Visibility API Test Plan]] Description of Visibility API Test Plan John
[[<link>| WebRTC API Test Plan]] Description of WebRTC API Test Plan John
[[<link>| IndexedDB API Test Plan]] Description of IndexedDB API Test Plan John
[[<link>| Camera API Test Plan]] Description of Camera API Test Plan John
[[<link>| Vibrator API Test Plan]] Description of Vibrator API Test Plan John
[[<link>| Accelerometer API Test Plan]] Description of Accelerometer API Test Plan John
[[<link>| Geolocation API Test Plan]] Description of Geolocation API Test Plan John
[[<link>| Fullscreen from Content API Test Plan]] Fullscreen from Content API Test Plan John


Overall Approach

Each API must be assured of its robustness and fitness for purpose. APIs must work at Integrationlevels with each other and with external testapps, Application level supporting entire applications, and as part of an end-to-end system.

To that end, the testplan for each API could consist of the following deliverables in each case:

  • Integration Tests - Tests for JS interfaces at integration level. These are usually automated and might deploy a framework like Jasmine, Marionette and/or something like Robotium with custom classes, TBD.
  • Application Tests - These would most likely consist of
    • test pages - Test HTML pages implementing the WebAPI(s) in question
    • native test apps - in the case of Android, it should be possible to get api values directly from OS as a basis of comparison
    • manual test cases - stored in Case Conductor. Note that we will be running parallel manual and automated testing efforts so that test coverage is not lost while automation is being built up. Also, it is not generally possible to automate everything.

...and ultimately... automated functional testing - most likely in a combination of tools like e.g. Robotium and Marionette. The plan is to try to leverage the test pages and test apps/code developed (and manually tested against) earlier.

In addition to functionality, each api may have the following quality targets:

  • Usability
  • Reliability
  • Performance
  • Scalability
  • Security

So TBD, there may be additional tests or test strategies deployed iteratively as the project evolves.

It should be noted Some APIs (and areas of support) however only work in conjunction with other APIs, so these must be combined when writing test apps.

Environments

List what's needed for test environments here. links to test cases, test servers, unit tests, etc..

The following matrix which is a WIP will be used as a template for determining device and browser version support for each api:

https://docs.google.com/spreadsheet/ccc?key=0AhE7m4JB2j6tdEJFZ3NoZkRoRTM3TTRpQll3UjZLYnc#gid=4

Environment matrices for each API or area will ultimately list:

  • all supported devices and hardware types
  • all supported browser versions
  • b2g

Resources

List links to any associated Resources

Meetings

List team meetings, schedule, and dial in time here.

Community Contribution

  • list any tips and tricks on how community can be involved