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