From 41553fb826f22dba612c08a941bc1807210cadd1 Mon Sep 17 00:00:00 2001 From: Christophe Dervieux Date: Wed, 23 Sep 2026 16:47:34 +0200 Subject: [PATCH] Fix macOS nightly smoke failures for pdf-standard and Julia plot tests 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. --- .github/workflows/test-smokes.yml | 2 +- tests/smoke/crossref/figures.test.ts | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-smokes.yml b/.github/workflows/test-smokes.yml index 6793247b12a..dcf594d59c2 100644 --- a/.github/workflows/test-smokes.yml +++ b/.github/workflows/test-smokes.yml @@ -417,7 +417,7 @@ jobs: quarto install tinytex - name: Install veraPDF for PDF standard validation - if: runner.os == 'Linux' && (format('{0}', inputs.buckets) == '' || contains(inputs.buckets, 'pdf-standard')) + if: runner.os != 'Windows' && (format('{0}', inputs.buckets) == '' || contains(inputs.buckets, 'pdf-standard')) env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | diff --git a/tests/smoke/crossref/figures.test.ts b/tests/smoke/crossref/figures.test.ts index 5a23b41b7ce..563d3c8dc64 100644 --- a/tests/smoke/crossref/figures.test.ts +++ b/tests/smoke/crossref/figures.test.ts @@ -4,6 +4,7 @@ * Copyright (C) 2020-2022 Posit Software, PBC */ +import { isMac } from "../../../src/deno_ral/platform.ts"; import { ensureFileRegexMatches, ensureHtmlElements } from "../../verify.ts"; import { testRender } from "../render/render.ts"; import { crossref } from "./utils.ts"; @@ -62,6 +63,10 @@ testRender(pythonSubfigQmd.input, "html", false, [ ]), ]); +// GR launches its gksqt GUI from julia-engine workers on macOS, which hangs +// or crashes Plots renders on headless CI runners. +const juliaPlotsContext = { ignore: isMac }; + for (const file of ["julia.qmd", "julianative.qmd"]) { const juliaQmd = crossref(file, "html"); testRender(juliaQmd.input, "html", false, [ @@ -75,7 +80,7 @@ for (const file of ["julia.qmd", "julianative.qmd"]) { ], [ /\?@fig-/, ]), - ]); + ], juliaPlotsContext); } for (const file of ["julia-subfig.qmd", "julianative-subfig.qmd"]) { @@ -94,7 +99,7 @@ for (const file of ["julia-subfig.qmd", "julianative-subfig.qmd"]) { ], [ /\?@fig-/, ]), - ]); + ], juliaPlotsContext); } const knitrQmd = crossref("knitr.qmd", "html");