Repository navigation
Open
Description
Somehow we have some failing test in some situations
running 2 tests from ./smoke/render/render-page-layout.test.ts
[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf ...'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (1m0s)
'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (2m0s)
'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (4m0s)
'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (8m0s)
FAILED (10m0s)
[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html ...'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (1m0s)
'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (2m0s)
'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (4m0s)
'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (8m0s)
FAILED (10m0s)
Ful log
running 2 tests from ./smoke/render/render-page-layout.test.ts
[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf ...'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (1m0s)
'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (2m0s)
'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (4m0s)
'[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf' has been running for over (8m0s)
FAILED (10m0s)
[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html ...'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (1m0s)
'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (2m0s)
'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (4m0s)
'[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html' has been running for over (8m0s)
FAILED (10m0s)
ERRORS
[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf => ./test.ts:346:8
error: AssertionError: Failed assertion:
--------------------------------------------------------------------------------
[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf
./run-tests.sh smoke/render/render-page-layout.test.ts
[verify] > Output Created
No output created message
AssertionError: No output created message
at Module.assert (https://jsr.io/@std/assert/0.224.0/assert.ts:18:11)
at assert (https://jsr.io/@std/testing/0.224.0/asserts.ts:608:11)
at Object.verify (file:///home/runner/work/quarto-cli/quarto-cli/tests/verify.ts:316:7)
at fn (file:///home/runner/work/quarto-cli/quarto-cli/tests/test.ts:256:25)
at eventLoopTick (ext:core/01_core.js:218:9)
at async innerWrapped (ext:cli/40_test.js:180:5)
at async outerWrapped (ext:cli/40_test.js:123:14)
OUTPUT:
- The project is out-of-sync -- use `renv::status()` for details.
processing file: tufte-pdf.qmd
1/29
2/29 [fig-margin]
3/29
4/29 [fig-fullwidth]
5/29
6/29 [fig-main]
7/29
8/29 [fig-main-margin-cap]
9/29
10/29 [unnamed-chunk-1]
11/29
12/29 [fig-two-together]
13/29
14/29 [fig-two-separate]
15/29
16/29 [fig-margin-together]
17/29
18/29 [unnamed-chunk-2]
19/29
20/29 [fig-margin-separate-a]
21/29
22/29 [unnamed-chunk-3]
23/29
24/29 [unnamed-chunk-4]
25/29
26/29 [unnamed-chunk-5]
27/29
28/29 [unnamed-chunk-6]
29/29
output file: tufte-pdf.knit.md
pandoc
to: latex
output-file: tufte-pdf.tex
standalone: true
pdf-engine: lualatex
variables:
graphics: true
tables: true
default-image-extension: pdf
reference-location: margin
metadata
documentclass: scrartcl
classoption:
- DIV=11
- numbers=noendperiod
papersize: letter
header-includes:
- \KOMAoption{captions}{tableheading}
block-headings: true
title: A Quarto Page Layout Example
subtitle: Inspired by Tufte Handout, Using Quarto
date: today
citation-location: margin
bibliography:
- skeleton.bib
Rendering PDF
running lualatex - 1
timed out after 10 minutes
Stack trace:
at asErrorEx (file:///home/runner/work/quarto-cli/quarto-cli/src/core/lib/error.ts:74:12)
at logError (file:///home/runner/work/quarto-cli/quarto-cli/src/core/log.ts:348:15)
at fn (file:///home/runner/work/quarto-cli/quarto-cli/tests/test.ts:239:13)
at eventLoopTick (ext:core/01_core.js:218:9)
at async innerWrapped (ext:cli/40_test.js:180:5)
at async outerWrapped (ext:cli/40_test.js:123:14)
throw new AssertionError(msg);
^
at assert (https://jsr.io/@std/assert/0.224.0/assert.ts:18:11)
at Module.fail (https://jsr.io/@std/assert/0.224.0/fail.ts:17:3)
at fail (https://jsr.io/@std/testing/0.224.0/asserts.ts:663:11)
at fn (file:///home/runner/work/quarto-cli/quarto-cli/tests/test.ts:320:11)
[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html => ./test.ts:346:8
error: AssertionError: Failed assertion:
--------------------------------------------------------------------------------
[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html
./run-tests.sh smoke/render/render-page-layout.test.ts
[verify] > Output Created
No output created message
AssertionError: No output created message
at Module.assert (https://jsr.io/@std/assert/0.224.0/assert.ts:18:11)
at assert (https://jsr.io/@std/testing/0.224.0/asserts.ts:608:11)
at Object.verify (file:///home/runner/work/quarto-cli/quarto-cli/tests/verify.ts:316:7)
at fn (file:///home/runner/work/quarto-cli/quarto-cli/tests/test.ts:256:25)
at eventLoopTick (ext:core/01_core.js:218:9)
at async innerWrapped (ext:cli/40_test.js:180:5)
at async outerWrapped (ext:cli/40_test.js:123:14)
OUTPUT:
timed out after 10 minutes
Stack trace:
at asErrorEx (file:///home/runner/work/quarto-cli/quarto-cli/src/core/lib/error.ts:74:12)
at logError (file:///home/runner/work/quarto-cli/quarto-cli/src/core/log.ts:348:15)
at fn (file:///home/runner/work/quarto-cli/quarto-cli/tests/test.ts:239:13)
at eventLoopTick (ext:core/01_core.js:218:9)
at async innerWrapped (ext:cli/40_test.js:180:5)
at async outerWrapped (ext:cli/40_test.js:123:14)
throw new AssertionError(msg);
^
at assert (https://jsr.io/@std/assert/0.224.0/assert.ts:18:11)
at Module.fail (https://jsr.io/@std/assert/0.224.0/fail.ts:17:3)
at fail (https://jsr.io/@std/testing/0.224.0/asserts.ts:663:11)
at fn (file:///home/runner/work/quarto-cli/quarto-cli/tests/test.ts:320:11)
FAILURES
[smoke] > quarto render docs/page-layout/tufte-pdf.qmd --to pdf => ./test.ts:346:8
[smoke] > quarto render docs/page-layout/tufte-html.qmd --to html => ./test.ts:346:8
FAILED | 0 passed | 2 failed (20m0s)
This is due to timeout and it makes our CI fail but no always/
- Main is passing
- Latest PR on main is passing
- I have one PR on 1.8 not passing due to this
- Our timing of tests (sequential timed test run one after the others) that fails because of this (https://github.com/quarto-dev/quarto-cli/actions/runs/19023126991/job/54321943546)
Locally documents renders fine and test seems to ./smoke/render/render-page-layout.test.ts at least on windows.
Investigation required.
Activity
cderv commentedon Nov 5, 2025
So it works locally too on Ubuntu.
Somehow we have similar issue in our broken smoke-all non parallelized. Some random test like are failling because running forever.
So it is has if at some point running lots of Quarto document as part of Deno.test() if failing us in some situation.
This will be a hard one to understand as I can reproduce locally - at least on individual test. And running all the tests is really time consuming !!
cderv commentedon Nov 5, 2025
Progress ! I can reproduce locally when running the bucket
So this is good base to understand what is happening..
cderv commentedon Nov 5, 2025
This is something related to the TeX Live environment.
With a clean TinyTeX install, the document renders. But run as part of the bucket, something as installed inside the LaTeX environment, and it makes the document hang. Really weird, but not the first time I encounter this problem.
cderv commentedon Nov 5, 2025
So the problem is
./smoke/render/render-format-extension.test.tsrunning before. it installs some packages that creates the hang for tufte.qmdIt happens with
academic/document.qmdwhen rendering withelsevier-pdfformat.Something happens that then make the hanging with other render. It is probably related to lualatex engine... 🤔
cderv commentedon Nov 5, 2025
This could also be something related to very old elsarticle in Quarto Journals!
But it passes in a clean environment - I added CI there: https://github.com/quarto-journals/elsevier/actions/runs/19108165036/job/54597685613
I am thinking of testing those formats in the repo there instead of in this CI to avoid this mess.
cderv commentedon Nov 5, 2025
Root cause found!
After extensive binary search testing (narrowing down from 51 files), I've identified the exact cause: the outdated
elsarticle.clsbundled in the test extension.The problematic file:
Version mismatch:
What's happening:
When
./smoke/render/render-format-extension.test.tsrenders withelsevier-pdfformat:Key difference between versions:
The critical fix in v3.4c is:
\RequirePackage[T1]{fontenc}This was missing in v3.3, causing font encoding issues with modern TinyTeX.
Confirmed with testing:
Fresh TinyTeX each time:
Solution:
Update the bundled
elsarticle.clsfrom v3.3 to v3.4c in the test extension. The current version can be pulled from a fresh TinyTeX install or CTAN.cderv commentedon Nov 5, 2025
Updating elsevier format in
This should help !
cderv commentedon Nov 5, 2025
Fix confirmed! ✅
After updating the extension locally with:
cd tests/docs/extensions/format/academic quarto update extension quarto-journals/elsevier --no-promptThe extension was updated from elsarticle.cls v3.3 (2020/11/20) → v3.4c (2025/01/11).
Verification test:
./smoke/render/render-format-extension.test.ts(with updated v3.4c extension)docs/smoke-all/article-layout/tables/tufte.qmdimmediately afterResult:
The extension update successfully resolves the TinyTeX corruption issue. The fix will be available once the upstream PRs (quarto-journals/elsevier#38 and quarto-journals/elsevier#40) are merged and the extension needs to be updated in the quarto-cli test suite.
Update journal extensions before running format extension tests
Update journal extensions before running format extension tests
Update journal extensions before running format extension tests
cderv commentedon Nov 7, 2025
It seems like we have issue with JSS.
cderv commentedon Nov 7, 2025
Update: Root cause identified
Used binary search to narrow down the issue:
smoke/extensions/extension-render-journals.test.tsjss-pdf)Root cause: JSS render triggers
tlmgr updatewhich regenerates lualatex format files. The oldjss.cls v3.3(2021) is incompatible with the regenerated formats, causing subsequent lualatex renders to hang.This is the same pattern as the previous elsevier issue - likely needs similar fix (adding
\RequirePackage[T1]{fontenc}to jss.cls).Continuing investigation Monday to confirm and implement fix.
cderv commentedon Nov 10, 2025
After more investigation, it could be related to really recent update of tabular and array environment
But I can reproduce the problem reliably while
cderv commentedon Nov 11, 2025
So I have for now opt-out the tests
This will be while waiting this LaTeX solves itself or that we solve it on our side.
[-]Fix failing tests due to timeout[/-][+]Fix failing tests due to timeout because of LaTeX update breaking tufte doc[/+]cderv commentedon Nov 11, 2025
Root Cause Identified
The hang is caused by updating both
latexandtoolspackages to version 76708 together. This is a LaTeX Project upstream bug.Minimal reproduction:
Updating either package individually causes errors but not hangs. The combination causes an infinite hang.
Confirmed on both Linux and Windows.
Add flaky test debugging methodology to dev-docs
Add flaky test debugging methodology to dev-docs