# `TF008` HTML output
Generate Myst Markdown from the specification in YAML, then have sphinx generate a static website
:::{dropdown} Is a test for
:open:
:icon: check-circle-fill
:color: primary
[`SF003` HTML output](/requirements/SF003)
:::
## Initial state
The [uv](https://docs.astral.sh/uv/getting-started/installation/) tool is required.
The expected state is the final state of
[`TF004` Add comments](/tests/TF004)
## Procedure
### Step 1
Install the speky CLI tool
```console
$ uv tool install git+https://github.com/agagniere/speky#master
[...]
Installed 1 executable: speky
```
### Step 2
Use it to generate Myst Markdown from the specification in YAML
```console
$ speky spec.yaml tests.yaml comments.yaml \
--output-folder pages --project-name Foo
Loading spec.yaml
Loading tests.yaml
Loading comments.yaml
```
### Step 3
Install sphinx with dependencies
```console
$ uv tool install sphinx --with furo,sphinx-design,sphinx-copybutton,myst-parser
[...]
Installed 4 executables: sphinx-apidoc, sphinx-autogen, sphinx-build, sphinx-quickstart
```
### Step 4
Configure sphinx
```console
$ cat conf.py
```
```python
project = 'Dummy'
language = 'en'
extensions = [ 'myst_parser', 'sphinx_design' ]
html_theme = 'furo'
myst_enable_extensions = [ 'colon_fence' ]
```
### Step 5
Run sphinx to generate HTML
```console
$ sphinx-build -M html pages output --conf-dir .
[...]
The HTML pages are in output/html.
```
### Step 6
View the static website
```console
$ open output/html/index.html
```
### Step 7
Validate the site contains a page for `S01`, which contains:
- The unique identifier and summary as the page title
- The statement as a paragraph
- A link to `T01` in a dropdown: "Tested by"
### Step 8
Click on the link to `T01`, and verify that:
- `S01` is listed as a tested requirement: "Is a test for"
- The procedure is displaye, with each step in the expected order