From e0509e4ed01fe74e2f9a5c0ed449e626cc1fb666 Mon Sep 17 00:00:00 2001 From: richsak Date: Sun, 26 Apr 2026 16:40:18 -0700 Subject: [PATCH 1/4] fix(ci): install ImageMagick + Playwright Chromium in test job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The validate job's "Run tests" step was failing on dev with two missing-binary errors: - `magick` not in $PATH — visual-assets / heatmap rendering shells out to ImageMagick. Ubuntu runners do not include it by default. - Playwright Chromium executable missing — browser-audit tests launch Chromium via Playwright. The bundled `playwright` package needs an explicit `playwright install` to fetch the headless browser. Adds both as steps before "Run tests" so the dev/main baseline goes green again and downstream PRs stop inheriting the red. --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4bcf553..06c3e7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,6 +42,12 @@ jobs: - name: Markdown lint run: bun run validate:md + - name: Install ImageMagick (heatmap renderer) + run: sudo apt-get update && sudo apt-get install -y imagemagick + + - name: Install Playwright Chromium (browser-audit) + run: bunx playwright install --with-deps chromium + - name: Run tests run: bun run test From 4faee17a0905c8e996c22f5261e722a7b004845b Mon Sep 17 00:00:00 2001 From: richsak Date: Sun, 26 Apr 2026 16:42:37 -0700 Subject: [PATCH 2/4] fix(ci): symlink magick -> convert for ImageMagick v6 compat Ubuntu's `imagemagick` package ships v6 binaries (convert, mogrify), not v7's unified `magick` entrypoint. scripts/build-demo-manifest.ts calls `execFileSync("magick", ...)` so the v7 name is required. Symlink `magick` -> `$(which convert)` after the apt install. The chained-argv syntax we use is v6-compatible. --- .github/workflows/test.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 06c3e7e..a9be145 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,16 @@ jobs: run: bun run validate:md - name: Install ImageMagick (heatmap renderer) - run: sudo apt-get update && sudo apt-get install -y imagemagick + run: | + sudo apt-get update + sudo apt-get install -y imagemagick + # Ubuntu's imagemagick package ships v6 binaries (convert, mogrify, etc.). + # scripts/build-demo-manifest.ts shells out via the v7 `magick` entrypoint, so + # symlink `magick` -> `convert` for argv-compatibility on the v6 syntax we use. + if ! command -v magick >/dev/null 2>&1; then + sudo ln -sf "$(command -v convert)" /usr/local/bin/magick + fi + magick -version | head -1 - name: Install Playwright Chromium (browser-audit) run: bunx playwright install --with-deps chromium From 51123de21e9fe3ddf273849b84b8056e3cad62c9 Mon Sep 17 00:00:00 2001 From: richsak Date: Sun, 26 Apr 2026 16:44:56 -0700 Subject: [PATCH 3/4] fix(ci): install ImageMagick 7 portable binary instead of apt v6 The apt imagemagick package provides v6-only binaries. The repo uses v7 multi-call dispatch (magick, magick identify, ...) which v6 cannot satisfy via convert symlinks. Pull the v7 portable binary from the official ImageMagick release and drop it into /usr/local/bin. --- .github/workflows/test.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a9be145..944ca71 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,17 +42,16 @@ jobs: - name: Markdown lint run: bun run validate:md - - name: Install ImageMagick (heatmap renderer) + - name: Install ImageMagick 7 (magick entrypoint) run: | - sudo apt-get update - sudo apt-get install -y imagemagick - # Ubuntu's imagemagick package ships v6 binaries (convert, mogrify, etc.). - # scripts/build-demo-manifest.ts shells out via the v7 `magick` entrypoint, so - # symlink `magick` -> `convert` for argv-compatibility on the v6 syntax we use. - if ! command -v magick >/dev/null 2>&1; then - sudo ln -sf "$(command -v convert)" /usr/local/bin/magick - fi - magick -version | head -1 + # build-demo-manifest.ts and its test shell out to the v7 `magick` + # multi-call entrypoint (magick, magick identify, ...). Ubuntu's apt + # imagemagick package only provides v6 binaries (convert, identify), + # so install a v7 portable binary from the official release. + curl -fSL "https://imagemagick.org/archive/binaries/magick" -o /tmp/magick + chmod +x /tmp/magick + sudo mv /tmp/magick /usr/local/bin/magick + magick -version | head -2 - name: Install Playwright Chromium (browser-audit) run: bunx playwright install --with-deps chromium From 4f5985e5ad488e6869bdf715f3a4b3a1e8109c32 Mon Sep 17 00:00:00 2001 From: richsak Date: Sun, 26 Apr 2026 16:46:04 -0700 Subject: [PATCH 4/4] fix(ci): use v6 + magick dispatcher wrapper instead of v7 download MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Portable ImageMagick 7 binary URL was 404 — no canonical 'magick' static release exists at imagemagick.org. Switch back to apt's v6 install and add a small bash dispatcher at /usr/local/bin/magick that forwards to the v6 binary based on the subcommand. Handles 'magick (...)', 'magick identify ...', and the other tools the repo uses. --- .github/workflows/test.yml | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 944ca71..a8b1e7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,16 +42,25 @@ jobs: - name: Markdown lint run: bun run validate:md - - name: Install ImageMagick 7 (magick entrypoint) + - name: Install ImageMagick (with magick v7 dispatcher wrapper) run: | - # build-demo-manifest.ts and its test shell out to the v7 `magick` - # multi-call entrypoint (magick, magick identify, ...). Ubuntu's apt - # imagemagick package only provides v6 binaries (convert, identify), - # so install a v7 portable binary from the official release. - curl -fSL "https://imagemagick.org/archive/binaries/magick" -o /tmp/magick - chmod +x /tmp/magick - sudo mv /tmp/magick /usr/local/bin/magick - magick -version | head -2 + sudo apt-get update + sudo apt-get install -y imagemagick + # Ubuntu ships ImageMagick 6 (separate binaries: convert, identify, etc.). + # build-demo-manifest.ts and its test use the v7 multi-call entrypoint + # (magick, magick identify, ...). Install a small dispatcher at + # /usr/local/bin/magick that forwards to the v6 binary by subcommand. + sudo tee /usr/local/bin/magick > /dev/null <<'WRAPPER' + #!/bin/bash + case "$1" in + identify|convert|mogrify|composite|montage|compare|conjure|stream|display|animate|import) + cmd="$1"; shift; exec "$cmd" "$@" ;; + *) + exec convert "$@" ;; + esac + WRAPPER + sudo chmod +x /usr/local/bin/magick + magick -version | head -1 - name: Install Playwright Chromium (browser-audit) run: bunx playwright install --with-deps chromium