Quarto rendering
Verification
Scope
Tables, plots, figure captions, cell options, state across cells, multibyte text, tracebacks, and syntax highlighting in HTML; kernel metadata and outputs in ipynb; plot figures in PDF through Typst; kernel reuse under the Quarto daemon.
References
- Versions
- PHP 8.5.10, Python 3.14.7, ipykernel 7.4.0, jupyter_client 8.10.0, Quarto 1.10.18, vl-convert vl-convert 1.9.0, phibble 0.5.3, phplyr 0.4.6, phiz 0.5.2
Data
Method
pytest renders the fixture documents with Quarto 1.10.18 through a kernel registered from the tested commit and inspects the HTML, ipynb, and PDF output.
- Check
- End-to-end run with the external program
- Note
- PDF figure check: run, passed.
- Recorded
- 2026-11-01, PHP 8.5.10, macOS 27.0.1 (arm64), commit 46349a3
Tolerances
exact equality
Applies to: Rendered content
HTML, ipynb, and PDF
x: package value; r: reference value.
Results
26 comparisons: 26 pass, 0 fail, 0 skipped.
| Case | Quantity | Status |
|---|---|---|
| the kernelspec was written by juphyter into a temporary directory | Rendered output | pass |
| the notebook sits below the project it finds its packages in | Rendered output | pass |
| html renders the phibble frame as a table | Rendered output | pass |
| html renders the phplyr summary as a table | Rendered output | pass |
| html draws the plot from the vega lite specification | Rendered output | pass |
| html keeps the figure caption beside the plot | Rendered output | pass |
| html honors echo false | Rendered output | pass |
| html carries state from one cell to the next | Rendered output | pass |
| html keeps a multibyte string intact | Rendered output | pass |
| html shows the traceback with cell frames | Rendered output | pass |
| html shows both values a cell displayed | Rendered output | pass |
| php cells are syntax highlighted | Rendered output | pass |
| ipynb records the kernel and the php that ran the cells | Rendered output | pass |
| ipynb carries the plot the stream output and the plain text | Rendered output | pass |
| ipynb holds one representation per output rather than all four | Rendered output | pass |
| ipynb loses an html table the way any kernels table is lost | Rendered output | pass |
| ipynb drops the error output of a failing cell | Rendered output | pass |
| the kernel publishes four representations of a plot | Rendered output | pass |
| the run says whether vl convert was found | Rendered output | pass |
| pdf renders the plot as a figure from the static svg | Rendered output | pass |
| a second render reuses the daemonized kernel | Rendered output | pass |
| the second render produces the same document | Rendered output | pass |
| the daemon leaves no engine or watchdog behind | Rendered output | pass |
| a kept alive kernel survives a long idle period | Rendered output | pass |
| the process listing carries a long command line whole | Rendered output | pass |
| the explicit kernelspec front matter needs the spec directory | Rendered output | pass |
Limitations
Known differences
- quarto render --to ipynb drops HTML tables and error outputs, for any kernel.
Reproduction
From the repository root
python -m pip install -r tests/Quarto/requirements.txt
composer install
JUPHYTER_QUARTO_IDLE=180 python -m pytest tests/Quarto -v
- Raw record
- site/verifications/quarto-render.json
- Full results
- tests/Quarto/test_render.py
- Input data
- tests/Quarto/fixture