| # 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>` |