From 1b33c210a236625af8254e0db558383c8f07295a Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:13:50 +0000 Subject: [PATCH 01/12] fix: try `quarto install chrome-headless-shell` instead of `quarto install chromium` --- src/quarto-cli/devcontainer-feature.json | 4 +-- src/quarto-cli/install.sh | 3 +- test/quarto-cli/chromiumheadless-on-debian.sh | 29 +++++++++++++++++++ test/quarto-cli/scenarios.json | 12 ++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100755 test/quarto-cli/chromiumheadless-on-debian.sh diff --git a/src/quarto-cli/devcontainer-feature.json b/src/quarto-cli/devcontainer-feature.json index 789ef75..91b19b1 100644 --- a/src/quarto-cli/devcontainer-feature.json +++ b/src/quarto-cli/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "Quarto CLI", "id": "quarto-cli", - "version": "1.1.4", + "version": "1.1.5", "description": "Installs the Quarto CLI. Auto-detects latest version.", "documentationURL": "https://github.com/rocker-org/devcontainer-features/tree/main/src/quarto-cli", "options": { @@ -22,7 +22,7 @@ "installChromium": { "type": "boolean", "default": false, - "description": "Run the `quarto install chromium` command. Check the document for details." + "description": "Run the `quarto install chromium` or `quarto install chrome-headless-shell` command. Check the document for details." } }, "installsAfter": [ diff --git a/src/quarto-cli/install.sh b/src/quarto-cli/install.sh index 1b408e8..b42b3e0 100755 --- a/src/quarto-cli/install.sh +++ b/src/quarto-cli/install.sh @@ -142,7 +142,8 @@ if [ "${INSTALL_CHROMIUM}" = "true" ]; then echo "(!) Quarto CLI installs headless Chromium via Puppeteer." echo " The bundled Chromium that Puppeteer installs may not work on Docker containers." echo " Please check the Puppeteer document: " - su "${USERNAME}" -c 'quarto install chromium --quiet' + su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' || + su "${USERNAME}" -c 'quarto install chrome --quiet' echo "Chromium installation complete." fi diff --git a/test/quarto-cli/chromiumheadless-on-debian.sh b/test/quarto-cli/chromiumheadless-on-debian.sh new file mode 100755 index 0000000..ab48dcc --- /dev/null +++ b/test/quarto-cli/chromiumheadless-on-debian.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -e + +# Optional: Import test library bundled with the devcontainer CLI +source dev-container-features-test-lib + +cat <<"EOF" >/tmp/test.qmd +--- +title: Test +format: + gfm: + mermaid-format: png +--- + +```{mermaid} +flowchart LR + A[Hard edge] --> B(Round edge) + B --> C{Decision} + C --> D[Result one] + C --> E[Result two] +``` +EOF + +# Feature-specific tests +check "check rendering" quarto render /tmp/test.qmd + +# Report result +reportResults diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index 9734934..0d2ea0b 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -59,6 +59,18 @@ } } }, + "chromiumheadless-on-debian": { + "image": "mcr.microsoft.com/devcontainers/base:debian", + "features": { + "quarto-cli": { + "version": "1.9", + "installChromium": true + }, + "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { + "packages": "chromium" + } + } + }, "chromium-on-ubuntu": { "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { From f530b05709f088c28c0f5ebf83dd67da1972ed67 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:22:12 +0000 Subject: [PATCH 02/12] test: fix ubuntu deps --- test/quarto-cli/scenarios.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index 0d2ea0b..5ca5ac9 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -79,7 +79,7 @@ "installChromium": true }, "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { - "packages": "libgtk-3-dev,libnotify-dev,libgconf-2-4,libnss3,libxss1,libasound2" + "packages": "libgtk-3-dev,libnotify-dev,libgconf-2-4,libnss3,libxss1,libasound2t64" } } } From 4333749236ec208e60255b69038b8cc2b74ff364 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:33:39 +0000 Subject: [PATCH 03/12] test: tweak --- ...adless-on-debian.sh => chromium-old-on-debian.sh} | 0 test/quarto-cli/scenarios.json | 12 +++--------- 2 files changed, 3 insertions(+), 9 deletions(-) rename test/quarto-cli/{chromiumheadless-on-debian.sh => chromium-old-on-debian.sh} (100%) diff --git a/test/quarto-cli/chromiumheadless-on-debian.sh b/test/quarto-cli/chromium-old-on-debian.sh similarity index 100% rename from test/quarto-cli/chromiumheadless-on-debian.sh rename to test/quarto-cli/chromium-old-on-debian.sh diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index 5ca5ac9..87afcba 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -47,7 +47,7 @@ "quarto-cli": {} } }, - "chromium-on-debian": { + "chromium-old-on-debian": { "image": "mcr.microsoft.com/devcontainers/base:debian", "features": { "quarto-cli": { @@ -59,15 +59,12 @@ } } }, - "chromiumheadless-on-debian": { + "chromium-on-debian": { "image": "mcr.microsoft.com/devcontainers/base:debian", "features": { "quarto-cli": { "version": "1.9", "installChromium": true - }, - "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { - "packages": "chromium" } } }, @@ -75,11 +72,8 @@ "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "quarto-cli": { - "version": "1.4", // https://github.com/quarto-dev/quarto-cli/issues/10961 + "version": "1.9", "installChromium": true - }, - "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { - "packages": "libgtk-3-dev,libnotify-dev,libgconf-2-4,libnss3,libxss1,libasound2t64" } } } From bf5a2bc158a00f3776a3128d2b7f4c0c03dd7346 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:38:11 +0000 Subject: [PATCH 04/12] Revert "test: tweak" This reverts commit 4333749236ec208e60255b69038b8cc2b74ff364. --- ...ld-on-debian.sh => chromiumheadless-on-debian.sh} | 0 test/quarto-cli/scenarios.json | 12 +++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) rename test/quarto-cli/{chromium-old-on-debian.sh => chromiumheadless-on-debian.sh} (100%) diff --git a/test/quarto-cli/chromium-old-on-debian.sh b/test/quarto-cli/chromiumheadless-on-debian.sh similarity index 100% rename from test/quarto-cli/chromium-old-on-debian.sh rename to test/quarto-cli/chromiumheadless-on-debian.sh diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index 87afcba..5ca5ac9 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -47,7 +47,7 @@ "quarto-cli": {} } }, - "chromium-old-on-debian": { + "chromium-on-debian": { "image": "mcr.microsoft.com/devcontainers/base:debian", "features": { "quarto-cli": { @@ -59,12 +59,15 @@ } } }, - "chromium-on-debian": { + "chromiumheadless-on-debian": { "image": "mcr.microsoft.com/devcontainers/base:debian", "features": { "quarto-cli": { "version": "1.9", "installChromium": true + }, + "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { + "packages": "chromium" } } }, @@ -72,8 +75,11 @@ "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "quarto-cli": { - "version": "1.9", + "version": "1.4", // https://github.com/quarto-dev/quarto-cli/issues/10961 "installChromium": true + }, + "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { + "packages": "libgtk-3-dev,libnotify-dev,libgconf-2-4,libnss3,libxss1,libasound2t64" } } } From f8131780152034a6bd1f3eac388d0bf4322ae2fc Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:41:34 +0000 Subject: [PATCH 05/12] test: remove tests for ubuntu with chromium --- test/quarto-cli/chromium-on-ubuntu.sh | 29 --------------------------- test/quarto-cli/scenarios.json | 12 ----------- 2 files changed, 41 deletions(-) delete mode 100755 test/quarto-cli/chromium-on-ubuntu.sh diff --git a/test/quarto-cli/chromium-on-ubuntu.sh b/test/quarto-cli/chromium-on-ubuntu.sh deleted file mode 100755 index ab48dcc..0000000 --- a/test/quarto-cli/chromium-on-ubuntu.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Optional: Import test library bundled with the devcontainer CLI -source dev-container-features-test-lib - -cat <<"EOF" >/tmp/test.qmd ---- -title: Test -format: - gfm: - mermaid-format: png ---- - -```{mermaid} -flowchart LR - A[Hard edge] --> B(Round edge) - B --> C{Decision} - C --> D[Result one] - C --> E[Result two] -``` -EOF - -# Feature-specific tests -check "check rendering" quarto render /tmp/test.qmd - -# Report result -reportResults diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index 5ca5ac9..eda1d3a 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -70,17 +70,5 @@ "packages": "chromium" } } - }, - "chromium-on-ubuntu": { - "image": "mcr.microsoft.com/devcontainers/base:ubuntu", - "features": { - "quarto-cli": { - "version": "1.4", // https://github.com/quarto-dev/quarto-cli/issues/10961 - "installChromium": true - }, - "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { - "packages": "libgtk-3-dev,libnotify-dev,libgconf-2-4,libnss3,libxss1,libasound2t64" - } - } } } From 24bacf0f4543d944d04161d125322c073eb9dc34 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:49:09 +0000 Subject: [PATCH 06/12] fix --- src/quarto-cli/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quarto-cli/install.sh b/src/quarto-cli/install.sh index b42b3e0..b7531e6 100755 --- a/src/quarto-cli/install.sh +++ b/src/quarto-cli/install.sh @@ -142,7 +142,7 @@ if [ "${INSTALL_CHROMIUM}" = "true" ]; then echo "(!) Quarto CLI installs headless Chromium via Puppeteer." echo " The bundled Chromium that Puppeteer installs may not work on Docker containers." echo " Please check the Puppeteer document: " - su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' || + su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' 2>/dev/null || su "${USERNAME}" -c 'quarto install chrome --quiet' echo "Chromium installation complete." fi From e58c625b99a4431208aff7559dac033d4b435419 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:54:19 +0000 Subject: [PATCH 07/12] Revert "fix" This reverts commit 24bacf0f4543d944d04161d125322c073eb9dc34. --- src/quarto-cli/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quarto-cli/install.sh b/src/quarto-cli/install.sh index b7531e6..b42b3e0 100755 --- a/src/quarto-cli/install.sh +++ b/src/quarto-cli/install.sh @@ -142,7 +142,7 @@ if [ "${INSTALL_CHROMIUM}" = "true" ]; then echo "(!) Quarto CLI installs headless Chromium via Puppeteer." echo " The bundled Chromium that Puppeteer installs may not work on Docker containers." echo " Please check the Puppeteer document: " - su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' 2>/dev/null || + su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' || su "${USERNAME}" -c 'quarto install chrome --quiet' echo "Chromium installation complete." fi From e69cef444899a98d5af70fc1102ef3b1d7ca6f85 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 13:55:35 +0000 Subject: [PATCH 08/12] fix --- src/quarto-cli/install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/quarto-cli/install.sh b/src/quarto-cli/install.sh index b42b3e0..c982a36 100755 --- a/src/quarto-cli/install.sh +++ b/src/quarto-cli/install.sh @@ -142,8 +142,7 @@ if [ "${INSTALL_CHROMIUM}" = "true" ]; then echo "(!) Quarto CLI installs headless Chromium via Puppeteer." echo " The bundled Chromium that Puppeteer installs may not work on Docker containers." echo " Please check the Puppeteer document: " - su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' || - su "${USERNAME}" -c 'quarto install chrome --quiet' + su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet || quarto install chrome --quiet' echo "Chromium installation complete." fi From fe6679c09b04ae79c8156a64dd89dc8a7e329266 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 14:11:10 +0000 Subject: [PATCH 09/12] test: not jsonc --- test/quarto-cli/scenarios.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index eda1d3a..3099029 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -51,7 +51,7 @@ "image": "mcr.microsoft.com/devcontainers/base:debian", "features": { "quarto-cli": { - "version": "1.4", // https://github.com/quarto-dev/quarto-cli/issues/10961 + "version": "1.4", "installChromium": true }, "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { From 22acd9a14d34b2cd44734f89dc5387a6ab326cc6 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 14:27:10 +0000 Subject: [PATCH 10/12] fix: fix typo --- src/quarto-cli/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quarto-cli/install.sh b/src/quarto-cli/install.sh index c982a36..b6fd2d8 100755 --- a/src/quarto-cli/install.sh +++ b/src/quarto-cli/install.sh @@ -142,7 +142,7 @@ if [ "${INSTALL_CHROMIUM}" = "true" ]; then echo "(!) Quarto CLI installs headless Chromium via Puppeteer." echo " The bundled Chromium that Puppeteer installs may not work on Docker containers." echo " Please check the Puppeteer document: " - su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet || quarto install chrome --quiet' + su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet || quarto install chromium --quiet' echo "Chromium installation complete." fi From 00f67e8b1a1d74f2633aa679880ebe57a1535ef3 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 14:27:27 +0000 Subject: [PATCH 11/12] Revert "test: not jsonc" This reverts commit fe6679c09b04ae79c8156a64dd89dc8a7e329266. --- test/quarto-cli/scenarios.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/quarto-cli/scenarios.json b/test/quarto-cli/scenarios.json index 3099029..eda1d3a 100644 --- a/test/quarto-cli/scenarios.json +++ b/test/quarto-cli/scenarios.json @@ -51,7 +51,7 @@ "image": "mcr.microsoft.com/devcontainers/base:debian", "features": { "quarto-cli": { - "version": "1.4", + "version": "1.4", // https://github.com/quarto-dev/quarto-cli/issues/10961 "installChromium": true }, "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { From ca9a1d7b66ff9eaa8bec63eaabc136f58157984a Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sat, 11 Apr 2026 14:38:32 +0000 Subject: [PATCH 12/12] fix: fix chromium check --- src/quarto-cli/install.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/quarto-cli/install.sh b/src/quarto-cli/install.sh index b6fd2d8..2da0595 100755 --- a/src/quarto-cli/install.sh +++ b/src/quarto-cli/install.sh @@ -57,6 +57,10 @@ check_packages() { fi } +quarto_supports_chrome_headless_shell() { + LC_ALL=C quarto install --help 2>&1 | grep -Fq 'chrome-headless-shell' +} + find_version_from_git_tags() { local variable_name=$1 local requested_version=${!variable_name} @@ -142,7 +146,11 @@ if [ "${INSTALL_CHROMIUM}" = "true" ]; then echo "(!) Quarto CLI installs headless Chromium via Puppeteer." echo " The bundled Chromium that Puppeteer installs may not work on Docker containers." echo " Please check the Puppeteer document: " - su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet || quarto install chromium --quiet' + if quarto_supports_chrome_headless_shell; then + su "${USERNAME}" -c 'quarto install chrome-headless-shell --quiet' + else + su "${USERNAME}" -c 'quarto install chromium --quiet' + fi echo "Chromium installation complete." fi