Skip to content

soundcloud/areweplayingyet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Are We Playing Yet?

A pragmatic HTML5 Audio test suite

This is an open and public initiative to bring more harmony into HTML5 Audio implementations. The specifications are missing some features and sometime leaves room for interpretation. We want to un-mute the Web and make Audio rock! If you feel the same, you can report browsers bugs, write tests, fill issues and join our conversation.

ToC

  • Running AWPY
  • Write tests
    • Intro
    • Test structure
    • Terminating tests
  • Submitting issues
    • To browser vendors
    • To AWPY

Running AWPY

You need nodejs and npm.

brew install node
curl http://npmjs.org/install.sh | sh

To prepare the dependencies for the project run the following command in the root of the repository:

npm install

To run the http server invoke the following command:

node server.js

Now you should be able to load http://localhost:3000.

Write tests

Intro

Create a new file in /public/tests
The name should be prefixed by the test type and separated by a hyphen-minus and look like this: type-name
e.g.: event-seeking.js

Miscellaneous tests should be prefixed by "support"

Test structure

A test consists of this basic JSON structure:

({
  name: '', // required (identical to your filename)
  description: '', // required (used as title on the website)
  spec: 'http://…', // optional
  longdesc: 'lorem ipsum…', // optional
  reports: { // optional
    chrome: {
      desc: 'lorem ipsum…',
      link: 'http://…'
    }
  },
  assert: function(finish) { // required
    var audio = this.audio;
  }
})

We encourage you to document it as much as possible by linking to specifications, describing it precisely & including known browser bugs.

Valid values for reports are:

  • firefox
  • opera
  • chrome
  • safari
  • ie
  • firefoxMobile
  • operaMobile
  • android
  • ieMobile
  • safariMobile

Terminating tests

There a 3 ways to terminate a test:

  • passing
  • failing
  • failing by timeout, 15 seconds after loadedmetadata event was triggered

To make a test pass you need to call

finish(true);

To make a test fail call

finish(false);

Submitting issues

To browser vendors

We encourage you to submit issues to browser vendors, here is a list of sites where you can do so for different browsers:

To AWPY

You're very welcome to make suggestions, report issues and open pull requests for changes and new tests.

Before opening a new issue take a second to verify if it doesn't already exist.

If you open a new one, please label it correctly.

Feel free to propose changes to this document.
Happy audio hacking.

Releases

No releases published

Packages

No packages published