Skip to content

Debug ff-matrix gha workflow #12989

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Jul 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
152455a
Use node 20
cderv Jun 26, 2025
8a14e48
No need for playwright
cderv Jun 26, 2025
a988128
Update ff-matrix workflow based on smoke test one
cderv Jun 26, 2025
0e92024
Opt-in on pull requests to run on the current PR
cderv Jun 27, 2025
b04caa3
Add to ff-matrix workflow too
cderv Jun 27, 2025
e05af1c
Is installing node dependencies helping ?
cderv Jun 27, 2025
52b76da
fixup - only run linux to try fix hanging issue
cderv Jun 27, 2025
dd32e13
fixup - only run linux to try fix hanging issue
cderv Jun 27, 2025
cae3d5c
Rename step as this is not smoke test but feature-format-matrix
cderv Jun 27, 2025
63dc851
debug - let's try all crossref tests
cderv Jun 27, 2025
cfbf2a8
debug - try floats one only
cderv Jun 27, 2025
c81fa4e
debug - try two in a row
cderv Jun 27, 2025
f23e2a6
debug - try all files in floats
cderv Jun 27, 2025
85b0e6a
debug - I was missing table file
cderv Jun 27, 2025
9b97b07
debug - only run table document
cderv Jun 27, 2025
75381c2
hide table test and try re-running all floats tests
cderv Jun 27, 2025
883d784
reactivate all tests
cderv Jun 27, 2025
4a20493
Revert "reactivate all tests"
cderv Jun 27, 2025
95fd58a
debug - Restore case fail with all floats
cderv Jun 27, 2025
52a2a11
Run tmate for live debug
cderv Jun 27, 2025
f87df74
debug remove duplicated call
cderv Jun 27, 2025
aadfee9
Add a way to skip test on CI based on metadata
cderv Jul 8, 2025
81219d1
Fix revealjs link
cderv Jul 8, 2025
7a7f9d6
Typst ref now always have #ref( and supplement
cderv Jul 8, 2025
a24929e
remove tmate debugging
cderv Jul 8, 2025
e81299b
Reapply "reactivate all tests"
cderv Jul 9, 2025
48e7bb7
Reactivate Windows
cderv Jul 9, 2025
7235121
in typst #align does not have new line anymore inserted before box
cderv Jul 9, 2025
930573f
Account for Pandoc 3.2.1 new method for ensuring images don’t overflow
cderv Jul 9, 2025
a8e80ef
fixup - align
cderv Jul 9, 2025
d761a8b
typo in link
cderv Jul 9, 2025
4f119b0
No more figure element with Typst on Table
cderv Jul 9, 2025
ed0fd5f
use test-smokes.yml for ff-matrix
cderv Jul 9, 2025
9391b16
unused import
cderv Jul 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
221 changes: 38 additions & 183 deletions .github/workflows/test-ff-matrix.yml
Original file line number Diff line number Diff line change
@@ -1,199 +1,54 @@
# Tests all documents in the feature-format matrix
name: Feature-Format Tests
on:
workflow_dispatch:
inputs:
extra-r-packages:
description: "extra R package to install for the runs (like a dev version of one of the deps) - comma separated, passed to renv::install"
required: false
type: string
default: ""
schedule:
# run daily at 1am UTC
- cron: "0 1 * * *"
# Deactivating run on commits for now
## push:
## branches: [main]
## paths-ignore:
## - "news/**"
## - "src/resources/language/**"
## pull_request:
## branches: [main]
## paths-ignore:
## - "src/resources/language/**"
push:
branches: [main]
paths-ignore:
- "news/**"
- "src/resources/language/**"
- ".github/workflows/create-release.yml"
- ".github/workflows/performance-check.yml"
- ".github/workflows/stale-needs-repro.yml"
- ".github/workflows/test-bundle.yml"
- ".github/workflows/test-smokes-parallel.yml"
- ".github/workflows/test-quarto-latexmk.yml"
- ".github/workflows/update-test-timing.yml"
pull_request:
branches: [main]
paths-ignore:
- "news/**"
- "src/resources/language/**"
- ".github/workflows/create-release.yml"
- ".github/workflows/performance-check.yml"
- ".github/workflows/stale-needs-repro.yml"
- ".github/workflows/test-bundle.yml"
- ".github/workflows/test-smokes-parallel.yml"
- ".github/workflows/test-quarto-latexmk.yml"
- ".github/workflows/update-test-timing.yml"

concurrency:
# Use github.run_id on main branch
# Use github.event.pull_request.number on pull requests, so it's unique per pull request
# Use github.ref on other branches, so it's unique per branch
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
run-smokes:
run-feature-format-tests:
name: Run feature-format matrix on (${{ matrix.os }})
if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'quarto-dev/quarto-cli')
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Fix temp dir to use runner one (windows)
if: runner.os == 'Windows'
run: |
echo "TMPDIR=${{ runner.temp }}" >> $GITHUB_ENV
echo "TMP=${{ runner.temp }}" >> $GITHUB_ENV
echo "TEMP=${{ runner.temp }}" >> $GITHUB_ENV
shell: bash

- name: Set up R
uses: r-lib/actions/setup-r@v2
with:
r-version: "4.5.0"
use-public-rspm: true
# required to avoid rtools bin in path
windows-path-include-rtools: false

- name: Install node (for Playwright, MECA)
uses: actions/setup-node@v4
with:
node-version: 16

- name: Install node dependencies
if: ${{ runner.os != 'Windows' || github.event_name == 'schedule' }}
run: yarn
working-directory: ./tests/integration/playwright
shell: bash

- name: Install Playwright Browsers
if: ${{ runner.os != 'Windows' || github.event_name == 'schedule' }}
run: npx playwright install --with-deps
working-directory: ./tests/integration/playwright

- name: Install MECA validator
if: ${{ runner.os != 'Windows' }}
run: npm install -g meca

- name: Set RENV_PATHS_ROOT
shell: bash
run: |
echo "RENV_PATHS_ROOT=${{ runner.temp }}/renv" >> $GITHUB_ENV

- name: Get R and OS version
id: get-version
run: |
cat("os-version=", sessionInfo()$running, "\n", file = Sys.getenv("GITHUB_OUTPUT"), sep = "", append = TRUE)
cat("r-version=", R.Version()$version.string, "\n", file = Sys.getenv("GITHUB_OUTPUT"), sep = "", append = TRUE)
shell: Rscript {0}

- name: Cache R packages
uses: actions/cache@v4
with:
path: ${{ env.RENV_PATHS_ROOT }}
key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-renv-2-${{ hashFiles('tests/renv.lock') }}
restore-keys: |
${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-renv-2-
save-always: true

- name: Install missing system deps
if: runner.os == 'Linux'
run: |
sudo apt-get update -y
sudo apt-get install -y libcurl4-openssl-dev
sudo apt-get install -y libxml2-utils
sudo apt-get install -y libharfbuzz-dev libfribidi-dev

- name: Restore R packages
working-directory: tests
run: |
if (!requireNamespace('renv', quietly = TRUE)) install.packages('renv')
renv::restore()
# Install dev versions for our testing
# Use r-universe to avoid github api calls
try(install.packages('knitr', repos = 'https://yihui.r-universe.dev'))
try(install.packages('rmarkdown', repos = 'https://rstudio.r-universe.dev'))
shell: Rscript {0}
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

- name: Install uv for Python
uses: astral-sh/setup-uv@v3
with:
version: "0.7.4"
enable-cache: true
cache-dependency-glob: "tests/uv.lock"

- name: Install Python and Dependencies
working-directory: tests
run: |
uv sync --frozen

- uses: ./.github/workflows/actions/quarto-dev

- name: Install Tinytex
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
quarto install tinytex

- name: Cache Typst packages
uses: ./.github/actions/cache-typst

# - name: Install Chrome
# uses: browser-actions/setup-chrome@v1
# with:
# chrome-version: 127

- name: Setup Julia
uses: julia-actions/setup-julia@v2
with:
version: "1.10"

- name: Cache Julia Packages
uses: julia-actions/cache@v2

- name: Restore Julia Packages
working-directory: tests
shell: bash
run: |
# Setup IJulia with the jupyter from the Python environment
# https://julialang.github.io/IJulia.jl/stable/manual/installation/
export JUPYTER=$(find $(dirname $(uv run --frozen which jupyter))/ -type f -name "jupyter.exe" -o -name "jupyter")
uv run --frozen julia --color=yes --project=. -e "import Pkg; Pkg.instantiate(); Pkg.build(\"IJulia\"); Pkg.precompile()"
echo "Julia Jupyter:"
julia --project=. -e "import IJulia;println(IJulia.JUPYTER);println(IJulia.find_jupyter_subcommand(\"notebook\"))"

- name: Setup timing file for timed test
if: ${{ matrix.time-test == true }}
run: |
echo "QUARTO_TEST_TIMING=timing-for-ci.txt" >> "$GITHUB_ENV"

# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3

# The Check Chromium step appears necessary to avoid a crash/hang when rendering PDFs
# https://github.com/quarto-dev/quarto-actions/issues/45#issuecomment-1562599451
# Same fix as in quarto-actions/quarto-render
# chromium is installed in the ubuntu runners in GHA, so no need to install it
# - name: "Check Chromium"
# if: ${{ runner.os == 'Linux' }}
# run: |
# echo $(which google-chrome)
# $(which google-chrome) --headless --no-sandbox --disable-gpu --renderer-process-limit=1 https://www.chromestatus.com
# shell: bash

- name: Run all Smoke Tests Windows
if: ${{ runner.os == 'Windows' && format('{0}', inputs.buckets) == '' && matrix.time-test == false }}
env:
# Useful as TinyTeX latest release is checked in run-test.sh
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./run-tests.ps1 ../dev-docs/feature-format-matrix/qmd-files/**/*.qmd
working-directory: tests
shell: pwsh

- name: Run all Smoke Tests Linux
if: ${{ runner.os != 'Windows' && format('{0}', inputs.buckets) == '' }}
env:
# Useful as TinyTeX latest release is checked in run-test.sh
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: shopt -s globstar && ./run-tests.sh ../dev-docs/feature-format-matrix/**/*.qmd
working-directory: tests
shell: bash
os:
- ubuntu-latest
- windows-latest
uses: ./.github/workflows/test-smokes.yml
with:
buckets: '[ "../dev-docs/feature-format-matrix/qmd-files/**/*.qmd" ]'
extra-r-packages: ${{ inputs.extra-r-packages }}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ crossref:
reference-prefix: Diagram
format:
docusaurus-md: {}
_quarto:
tests-on-ci: false
---

::: {#dia-1}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ format:
comment: Missing implementation
pdf: *tested
typst:
output-ext: typ # for the test below
keep-typ: true
quality: 2
docusaurus-md: *tested
revealjs: *tested
revealjs:
quality: 2
auto-stretch: false
beamer:
output-ext: tex
quality: 2
Expand All @@ -38,8 +40,8 @@ _quarto:
- "div#tbl-2.quarto-float figure.quarto-float.quarto-float-tbl img"
- "div#tbl-1.quarto-float figure.quarto-float.quarto-float-tbl figcaption"
- "div#tbl-2.quarto-float figure.quarto-float.quarto-float-tbl figcaption"
- "a[href=\"#crossreferenceable-tables\"].quarto-xref"
- "a[href=\"#as-images\"].quarto-xref"
- "a[href=\"#/tbl-1\"].quarto-xref"
- "a[href=\"#/tbl-2\"].quarto-xref"
latex: &latex-tests
ensureFileRegexMatches:
-
Expand All @@ -51,12 +53,12 @@ _quarto:
- "\\\\includegraphics.*media.*table\\.jpg"
beamer: *latex-tests
typst:
ensureFileRegexMatches:
ensureTypstFileRegexMatches:
-
- "\\<tbl-1\\>"
- "\\<tbl-2\\>"
- "@tbl-1"
- "@tbl-2"
- '\<tbl-1\>'
- '\<tbl-2\>'
- '#ref\(\<tbl-1\>, supplement: \[Table\]\)'
- '#ref\(\<tbl-2\>, supplement: \[Table\]\)'
docusaurus-md:
ensureFileRegexMatches:
-
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- "#align\\(right\\)\\[(\r\n?|\n)#box"
- '#align\(right\)\[(\r\n?|\n)?#box'
-
- "#block\\[(\r\n?|\n)#align\\(right\\)\\["
- '#block\[(\r\n?|\n)?#align\(right\)\['
---


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- "#align\\(right\\)\\[(\r\n?|\n)#box"
- '#align\(right\)\[(\r\n?|\n)?#box'
-
- "#block\\[(\r\n?|\n)#align\\(right\\)\\["
- '#block\[(\r\n?|\n)?#align\(right\)\['
---


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- "#align\\(right\\)\\[(\r\n?|\n)#box"
- '#align\(right\)\[(\r\n?|\n)?#box'
-
- "#block\\[(\r\n?|\n)#align\\(right\\)\\["
- '#block\[(\r\n?|\n)?#align\(right\)\['
---

```{r}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@ format:
pptx:
quality: -1
keep-typ: true
keep-tex: true
_quarto:
tests:
latex:
ensureFileRegexMatches:
pdf:
ensureLatexFileRegexMatches:
-
- '\\hfill\\includegraphics\{100.png\}'
- '\\hfill\\pandocbounded\{\\includegraphics\[keepaspectratio\]\{100.png\}'
- []
typst:
ensureTypstFileRegexMatches:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@ format:
pptx:
quality: -1
keep-typ: true
keep-tex: true
_quarto:
tests:
latex:
ensureFileRegexMatches:
pdf:
ensureLatexFileRegexMatches:
-
- '\\hfill\\includegraphics\{100.png\}'
- '\\hfill\\pandocbounded\{\\includegraphics\[keepaspectratio\]\{100.png\}'
- []
typst:
ensureTypstFileRegexMatches:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ _quarto:
typst:
ensureTypstFileRegexMatches:
-
- "#align\\(right\\)\\[(\r\n?|\n)#box"
- '#align\(right\)\[(\r\n?|\n)?#box'
-
- "#block\\[(\r\n?|\n)#align\\(right\\)\\["
- '#block\[(\r\n?|\n)?#align\(right\)\['
---

![](100.png){fig-align="right"}
2 changes: 2 additions & 0 deletions dev-docs/feature-format-matrix/qmd-files/mermaid/document.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Mermaid
format:
docusaurus-md: {}
_quarto:
tests-on-ci: false
---

::: {.content-visible when-format="docusaurus-md"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@ _quarto:
- []
typst:
ensureTypstFileRegexMatches:
-
- '#figure\(\s*align\(center\)\[#table\('
- []
- ['#table\(']
- ['#figure\(\s*align\(center\)\[#table\(']
latex:
ensureFileRegexMatches:
-
Expand Down
Loading
Loading