refactor(board): rebuild canvas context menu on Radix menu primitives… #445
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tests | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| webui: | |
| name: webui (lint + tests) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: "npm" | |
| cache-dependency-path: webui/package-lock.json | |
| - name: Install webui dependencies | |
| run: npm ci | |
| working-directory: webui | |
| - name: Lint (type-check + eslint) | |
| run: make lint-ui | |
| - name: Unit tests | |
| run: make test-ui | |
| e2e: | |
| name: webui (e2e — local-only flow) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: "npm" | |
| cache-dependency-path: webui/package-lock.json | |
| - name: Install webui dependencies | |
| run: npm ci | |
| working-directory: webui | |
| # Playwright's chromium needs system libs (libnspr4/libnss3/…); --with-deps | |
| # installs them. This is what a local dev sandbox usually can't do. | |
| - name: Install Playwright (browser + system deps) | |
| run: npx playwright install --with-deps chromium | |
| working-directory: webui | |
| # The dev script loads ../.env via dotenv; the local-only flow needs no | |
| # real backend values, so the sample env is enough to boot the server. | |
| - name: Provide dev env | |
| run: cp .env.sample .env | |
| - name: E2E (local boards + agent, mocked provider) | |
| run: npm run e2e | |
| working-directory: webui | |
| backend: | |
| name: backend (ruff + unit tests) | |
| runs-on: ubuntu-latest | |
| # Backstop so a wedged test (e.g. a collab WebSocket frame-ordering | |
| # race) can't pin the runner until GitHub's ~6h default. The per-test | |
| # pytest-timeout is the primary guard; this caps the whole job. | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: "npm" | |
| cache-dependency-path: backend/scripts/mini-app-compiler/package-lock.json | |
| - name: Sync backend dependencies | |
| run: uv sync --extra dev | |
| working-directory: backend | |
| - name: Install mini-app compiler dependencies | |
| run: npm ci --omit=dev | |
| working-directory: backend/scripts/mini-app-compiler | |
| - name: Ruff check | |
| run: make lint-backend | |
| - name: Unit tests | |
| run: make test-backend | |
| tauri: | |
| name: desktop (rust — rusqlite storage) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| # The Tauri crate links native libs on Linux even for `cargo test`, so the | |
| # webkit2gtk/gtk stack must be present. rusqlite's `bundled` feature | |
| # compiles SQLite from source (needs a C toolchain, present by default). | |
| - name: Install Tauri system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libwebkit2gtk-4.1-dev \ | |
| libgtk-3-dev \ | |
| libayatana-appindicator3-dev \ | |
| librsvg2-dev \ | |
| libssl-dev \ | |
| libxdo-dev \ | |
| patchelf | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: webui/src-tauri | |
| - name: Rust unit tests (storage layer) | |
| run: make test-tauri |