# Test Guide
## Functional Test
Open `./*.html` files in Web Browsers.
## Unit Test
### Rendering-relevant
Our test strategy is to compare the rendered canvas of current version with last release version. The comparison can either based on the *content* of rendered canvas, or the *stack* of canvas operations.
When a test case fails, it doesn't necessary to be a bug since the rendering method may be changed intentionally in a commit. So in this case, we output the rendering result of both versions and the diff result.
Make sure `../dist/echarts.js` is the built based on current source files by:
```bash
cd ../build
npm install
bash build.sh
```
By default, we compare current version with last release version. To run the test, you should first download last release using:
```bash
cd ../test/ut
./configure
```
which will download `echart.js` of last release into `./ut/tmp/oldEcharts.js`.
Then, open `./ut/ui.html` in Web Browsers.
#### Compare current with a specific release
If one argument is passed, we take it as the hash code of a release and compare current version with `/dist/echarts.js` of the that version.
```bash
# this compares current `/dist/echarts.js` with that of v3.1.6
./configure 3724a16
```
#### Compare arbitrary two commits
Since `/dist/echarts.js` is only the build result of release versions, to compare arbitrary versions, you need to checkout specific commits and build the source files. Put the build results as `./tmp/oldEcharts.js` and `./tmp/newEcharts.js` will work.
### Rendering-irrelevant
Open `./ut.html` files in Web Browsers.