Skip to content

Fix macOS nightly smoke failures for pdf-standard and Julia plot tests - #14938

Merged
cderv merged 1 commit into
mainfrom
fix/macos-binary-smoke-julia-subfig-ua-title
Sep 23, 2026
Merged

cderv merged 1 commit into
mainfrom
fix/macos-binary-smoke-julia-subfig-ua-title

Conversation

@cderv

@cderv cderv commented Sep 23, 2026

Copy link
Copy Markdown
Member

Since #14706, the nightly built-version workflow runs the smoke suite on macOS, the only place it runs there. Two tests have failed every night since: docs/smoke-all/pdf-standard/ua-missing-title.qmd and docs/crossrefs/julia-subfig.qmd. Neither is specific to the built binary, a dev-mode run on a macOS runner shows the same behavior.

Root cause

The veraPDF install step in test-smokes.yml only runs on Linux, while the pdf-standard fixtures only exclude Windows. ua-missing-title.qmd is the one fixture asserting on veraPDF's own verdict (PDF validation failed for ua-2), so on macOS it rendered, printed "verapdf is not installed" and the expected warning never came.

The Julia crossref figure tests plot with Plots/GR through the julia engine. GR.jl only picks a file-based workstation when it detects IJulia, Pluto, VS Code or Atom. A QuartoNotebookRunner worker matches none of them, so on macOS GKS launches its interactive gksqt window. On the headless runner gksqt does not reliably start: the render either blocks until the 10 minute test timeout (worker waiting on the gksqt child) or the worker dies with TerminatedWorkerException. Which one happens is racy, julia-subfig.qmd just lost the race every night. Linux has no display, so GKS never starts gksqt there.

Fix

veraPDF is now installed on all non-Windows runners. The macOS runner ships Java 21, which veraPDF needs.

The four Julia Plots tests in smoke/crossref/figures.test.ts (julia.qmd, julianative.qmd, julia-subfig.qmd, julianative-subfig.qmd) are skipped on macOS. The gksqt behavior affects any headless macOS julia-engine render, not only our CI, so it will be reported upstream rather than worked around here. Setting GKSwstype in the CI environment was considered but not adopted for that reason.

Test plan

  • macOS runner, dev mode, with the veraPDF gate change: veraPDF 1.28.2 installs, ua-missing-title.qmd passes
  • macOS runner: captured the hang (gksqt child process, GR thread blocked on it) and the worker crash on repeated Julia Plots renders
  • smoke/crossref/figures.test.ts on Windows: all 8 tests still run and pass
  • Next nightly macOS leg: the four Julia tests are reported as ignored and the job is green

The nightly macOS leg is the first time the smoke suite runs on macOS, and it hit two gaps unrelated to the built binary.

veraPDF was only installed on Linux, while the pdf-standard fixtures only exclude Windows. ua-missing-title is the one fixture that asserts on veraPDF's own output, so on macOS it rendered without validation and the expected WARN never appeared. The runner ships Java 21, so veraPDF installs fine there.

The Julia crossref figure tests plot with Plots/GR. GR.jl does not recognize a julia-engine (QuartoNotebookRunner) worker as an embedded display, so on macOS GKS launches its interactive gksqt window. On the headless runner gksqt does not reliably start, and the render either blocks until the 10 minute test timeout or the worker dies. This is a GR/QuartoNotebookRunner behavior to be reported upstream, so these four tests are skipped on macOS for now.
@posit-snyk-bot

posit-snyk-bot commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@cderv
cderv merged commit e6ba830 into main Sep 23, 2026
51 checks passed
@cderv
cderv deleted the fix/macos-binary-smoke-julia-subfig-ua-title branch September 23, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants