| # Web Testing Infrastructure | |
| Testing support for IREE's web platform port: | |
| * Scripts to build tests with CMake/Emscripten | |
| * HTML/JS for displaying individual tests and test suites | |
| * Scripting to parse the list of tests provided by `ctest` into the format | |
| expected by the HTML/JS test suite runner | |
| ## Quickstart | |
| 1. Install IREE's host tools (e.g. by building the `install` target with CMake) | |
| 2. Install the Emscripten SDK by | |
| [following these directions](https://emscripten.org/docs/getting_started/downloads.html) | |
| 3. Initialize your Emscripten environment (e.g. run `emsdk_env.bat`) | |
| 4. From this directory, run `bash ./build_sample.sh [path to install] && bash ./serve_sample.sh` | |
| 5. Open the localhost address linked in the script output | |
| ## Implementation Details | |
| * Our tests (and benchmarks) generate binary files that when executed run tests | |
| then return an exit code | |
| * When compiling for the web using Emscripten, each binary target produces a | |
| `.js` and a `.wasm` file | |
| * Running an Emscripten-produced binary on a webpage requires just defining the | |
| `Module` object and importing the `.js` | |
| * The [`test-runner.html`](test-runner.html) webpage runs an individual test, | |
| based on URL parameters | |
| * `ctest --show-only=json-v1` outputs a JSON file enumerating all tests and | |
| their properties (working directory, required files, arguments, etc.). The | |
| [`parse_test_list.py`](parse_test_list.py) script parses this file into a | |
| list of HTML elements linking to the test runner webpage with properties set | |
| * The [`index_template.html`](index_template.html) webpage absorbs that list | |
| of hyperlinks and runs them in an `<iframe>` |