## Introdution ##

testharness.js provides a framework for writing low-level tests of
browser functionality in javascript. It provides a convenient API for
making assertions and is intended to work for both simple synchronous
tests and for tests of asynchronous behaviour.

## Getting Started ##

To use testharness.js you must include two scripts, in the order given:

``` html
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
```

## Full documentation ##

Full user documentation for the API is in the
[docs/api.md](https://github.com/w3c/testharness.js/blob/master/docs/api.md) file.

You can also read a tutorial on 
[Using testharness.js](http://darobin.github.com/test-harness-tutorial/docs/using-testharness.html).
