name: UI Build and Test on: push: branches: - main - dev paths: - spinifex/runtime/roles/spinifexui/frontend/** - .github/workflows/ui.yml pull_request: branches: - main - dev paths: - spinifex/runtime/roles/spinifexui/frontend/** - .github/workflows/ui.yml workflow_dispatch: permissions: contents: read jobs: ui_build_and_test: name: UI Build and Test runs-on: ubuntu-26.04 defaults: run: working-directory: spinifex/runtime/roles/spinifexui/frontend steps: - name: Checkout Code uses: actions/checkout@v7.0.1 with: sparse-checkout: spinifex/runtime/roles/spinifexui/frontend - name: Setup pnpm uses: pnpm/action-setup@v6.1.0 with: package_json_file: spinifex/runtime/roles/spinifexui/frontend/package.json - name: Setup Node.js uses: actions/setup-node@v7.1.0 with: cache: "pnpm" cache-dependency-path: spinifex/runtime/roles/spinifexui/frontend/pnpm-lock.yaml node-version-file: spinifex/runtime/roles/spinifexui/frontend/.nvmrc - name: Install Dependencies run: pnpm install --frozen-lockfile - name: Run Lint run: pnpm lint - name: Run Tests with Coverage run: pnpm test:coverage - name: Build Frontend run: pnpm build # spx embeds the committed dist/, so a bundle that differs from a clean # build of this source would ship JavaScript CI never built. Porcelain # rather than git diff, so added and deleted chunks count too. - name: Check for generated file drift run: | drift=$(git status --porcelain -- src/routeTree.gen.ts src/lib/cn-tables.gen.ts dist) if [ -n "$drift" ]; then echo "::error::Generated files differ from a clean build. Run pnpm build and commit the result." echo "$drift" exit 1 fi