Skip to content

ci(terminal): run the browser terminal suite on Linux, Windows and real Safari #211

ci(terminal): run the browser terminal suite on Linux, Windows and real Safari

ci(terminal): run the browser terminal suite on Linux, Windows and real Safari #211

name: Linux x86 DWARF Smoke
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
# One live run per workflow per ref: a new push to a branch or PR cancels the
# superseded run instead of queuing behind it in the shared account-wide runner
# pool. Runs on main get a unique group, so they are never cancelled or coalesced.
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
dwarf-smoke:
runs-on: ubuntu-24.04
timeout-minutes: 60
defaults:
run:
shell: bash
env:
PYTHONIOENCODING: utf-8
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "22"
- uses: browser-actions/setup-chrome@v2
id: setup-chrome
with:
chrome-version: stable
install-dependencies: true
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: "3.11.9"
- name: Install Python
run: uv python install "$UV_PYTHON"
- uses: zackees/setup-soldr@v0.9.62
env:
GITHUB_TOKEN: ${{ github.token }}
with:
# No soldr version pin: keep in lockstep with _build.yml so all jobs
# resolve the same soldr/zccache version and share warm caches
# (see the pin rationale comment in _build.yml and #158).
cache-preset: foundation
cache-key-suffix: ubuntu-24.04-dwarf-smoke
linker: platform-default
toolchain-file: rust-toolchain.toml
- name: Install system dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
- name: Sync Python deps
run: uv sync --group dev
- name: Build fastled CLI
run: soldr cargo build --release --bin fastled
- name: DWARF source smoke
run: |
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT
fastled_bin="$PWD/target/release/fastled"
sketch_dir="$workdir/Blink"
"$fastled_bin" --init Blink --branch master --no-interactive "$workdir"
"$fastled_bin" --internal-dwarf-smoke --debug --no-interactive "$sketch_dir"
- name: Runtime mapped stack smoke
env:
FASTLED_BIN: ${{ github.workspace }}/target/release/fastled
FASTLED_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
run: node ci/runtime_stack_smoke.mjs
- name: Dynamic runtime and loader smoke
env:
FASTLED_CHROME: ${{ steps.setup-chrome.outputs.chrome-path }}
run: |
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT
fastled_bin="$PWD/target/release/fastled"
sketch_dir="$workdir/Blink"
"$fastled_bin" --init Blink --branch master --no-interactive "$workdir"
mkdir -p "$sketch_dir/data"
printf '{"dynamic":true}\n' > "$sketch_dir/data/config.json"
"$fastled_bin" --just-compile --quick --link dynamic --no-interactive "$sketch_dir"
node ci/dynamic_runtime_smoke.mjs "$fastled_bin" "$sketch_dir/fastled_js"
mv "$sketch_dir/fastled_js/sketch_assets.json" "$sketch_dir/fastled_js/files.json"
node ci/dynamic_runtime_smoke.mjs "$fastled_bin" "$sketch_dir/fastled_js"
"$fastled_bin" --just-compile --quick --link dynamic --no-app --no-interactive "$sketch_dir"
node ci/dynamic_runtime_smoke.mjs "$fastled_bin" "$sketch_dir/fastled_js" --no-app
- name: Upload failure logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: failure-logs-dwarf-smoke-ubuntu-24.04
path: logs/*
if-no-files-found: warn