name: PR Check — Frontend # Frontend half of the former check.yml (split in #232). # # Filtered with paths-ignore rather than an allowlist: this job costs ~2.5 min, # so running it when it was not strictly needed is cheap, while silently NOT # running it is not. A root-level config file added later would drop out of an # allowlist without anyone noticing; here it fails safe. # # No `branches:` filter — see check-rust.yml. on: pull_request: paths-ignore: - 'src-tauri/**' - 'docs/**' - 'reports/**' - 'tasks/**' - '.github/**' - '.forgejo/workflows/check-rust.yml' - '.forgejo/workflows/audit.yml' - '.forgejo/workflows/release.yml' - '*.md' - 'LICENSE' # Distinct group from the rust workflow — see check-rust.yml. concurrency: group: ci-frontend-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: frontend: runs-on: ubuntu container: ubuntu:22.04 steps: - name: Install Node.js 20 run: | apt-get update apt-get install -y --no-install-recommends curl ca-certificates git curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs node --version npm --version - name: Checkout uses: https://github.com/actions/checkout@v4 # No npm cache step here, deliberately — same reason as the cargo caches # in check-rust.yml: the restore misses and the save times out against # the runner's cache server (#234), which cost ~23s per run for nothing. # Restore it together with rust-cache once #234 is fixed. - name: Install dependencies run: npm ci - name: Build (tsc + vite) run: npm run build - name: Tests (vitest) run: npm test