build(deps-dev): bump the development-dependencies group across 1 dir… #379
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: CI | |
| on: | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| branches: [main, master] | |
| jobs: | |
| python: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup Python | |
| uses: actions/setup-python@v7 | |
| with: | |
| python-version: '3.12' | |
| cache: pip | |
| cache-dependency-path: scripts/requirements.txt | |
| - name: Install Python dependencies | |
| run: python -m pip install --require-hashes -r scripts/requirements.txt | |
| - name: Validate classifier | |
| run: | | |
| python -m compileall -q scripts | |
| PYTHONPATH=scripts python -m unittest scripts/test_classify_problems.py | |
| python scripts/classify_problems.py --help > /dev/null | |
| node24-quality: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '24' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.34.1 | |
| run_install: false | |
| - name: Get pnpm store directory | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-node24-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Check code formatting | |
| run: pnpm run lint | |
| - name: Lint | |
| run: pnpm run lint:es | |
| - name: Sync SvelteKit | |
| run: pnpm exec svelte-kit sync | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| - name: Run svelte-check | |
| run: pnpm run check | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| node24-unit-coverage: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '24' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.34.1 | |
| run_install: false | |
| - name: Get pnpm store directory | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-node24-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Run unit tests with coverage | |
| run: pnpm run test:coverage | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| node24-build-performance: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '24' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.34.1 | |
| run_install: false | |
| - name: Get pnpm store directory | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-node24-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| run: pnpm run build | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| - name: Check performance budgets without rebuilding | |
| run: pnpm run check:performance | |
| node24-e2e-mocked: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| project: [mocked-desktop, mocked-mobile] | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '24' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.34.1 | |
| run_install: false | |
| - name: Get pnpm store directory | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-node24-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Get Playwright version | |
| shell: bash | |
| run: | | |
| echo "PLAYWRIGHT_VERSION=$(node -p "require('@playwright/test/package.json').version")" >> "$GITHUB_ENV" | |
| - name: Cache Playwright Chromium headless shell | |
| uses: actions/cache@v6 | |
| with: | |
| path: ~/.cache/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-headless-shell | |
| - name: Install Playwright Chromium headless shell and system dependencies | |
| run: pnpm exec playwright install --with-deps --only-shell chromium | |
| - name: Run Playwright mocked project | |
| run: pnpm exec playwright test --project="${{ matrix.project }}" --workers=1 | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| - name: Upload Playwright failure artifacts | |
| if: ${{ failure() && !cancelled() }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: playwright-node24-${{ matrix.project }} | |
| path: | | |
| playwright-report/ | |
| test-results/ | |
| if-no-files-found: ignore | |
| retention-days: 7 | |
| node24-e2e-live: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| project: [live-desktop-smoke, live-mobile-smoke] | |
| steps: | |
| - name: Detect live Supabase configuration | |
| id: live-config | |
| shell: bash | |
| env: | |
| LIVE_SUPABASE_URL: ${{ secrets.PUBLIC_SUPABASE_URL }} | |
| LIVE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.PUBLIC_SUPABASE_PUBLISHABLE_KEY }} | |
| run: | | |
| if [[ -n "$LIVE_SUPABASE_URL" && -n "$LIVE_SUPABASE_PUBLISHABLE_KEY" ]]; then | |
| echo "configured=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "configured=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - uses: actions/checkout@v7 | |
| if: steps.live-config.outputs.configured == 'true' | |
| - name: Setup Node.js | |
| if: steps.live-config.outputs.configured == 'true' | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '24' | |
| - name: Install pnpm | |
| if: steps.live-config.outputs.configured == 'true' | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.34.1 | |
| run_install: false | |
| - name: Get pnpm store directory | |
| if: steps.live-config.outputs.configured == 'true' | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" | |
| - name: Setup pnpm cache | |
| if: steps.live-config.outputs.configured == 'true' | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-node24-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Install dependencies | |
| if: steps.live-config.outputs.configured == 'true' | |
| run: pnpm install --frozen-lockfile | |
| - name: Get Playwright version | |
| if: steps.live-config.outputs.configured == 'true' | |
| shell: bash | |
| run: | | |
| echo "PLAYWRIGHT_VERSION=$(node -p "require('@playwright/test/package.json').version")" >> "$GITHUB_ENV" | |
| - name: Cache Playwright Chromium headless shell | |
| if: steps.live-config.outputs.configured == 'true' | |
| uses: actions/cache@v6 | |
| with: | |
| path: ~/.cache/ms-playwright | |
| key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}-headless-shell | |
| - name: Install Playwright Chromium headless shell and system dependencies | |
| if: steps.live-config.outputs.configured == 'true' | |
| run: pnpm exec playwright install --with-deps --only-shell chromium | |
| - name: Run Playwright live read-only Supabase project | |
| if: steps.live-config.outputs.configured == 'true' | |
| run: pnpm exec playwright test --project="${{ matrix.project }}" --workers=1 | |
| env: | |
| SUPABASE_SMOKE: '1' | |
| E2E_LIVE_ONLY: '1' | |
| PUBLIC_SUPABASE_URL: ${{ secrets.PUBLIC_SUPABASE_URL }} | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.PUBLIC_SUPABASE_PUBLISHABLE_KEY }} | |
| - name: Upload Playwright failure artifacts | |
| if: ${{ failure() && !cancelled() }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: playwright-node24-${{ matrix.project }} | |
| path: | | |
| playwright-report/ | |
| test-results/ | |
| if-no-files-found: ignore | |
| retention-days: 7 | |
| # Non-blocking Node 26 compatibility probe. Its essential scope remains | |
| # dependency installation, Svelte sync/check, unit tests, and a production build. | |
| node26-compat: | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '26' | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.34.1 | |
| run_install: false | |
| - name: Get pnpm store directory | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> "$GITHUB_ENV" | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v6 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-store-node26-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Sync SvelteKit | |
| run: pnpm exec svelte-kit sync | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| - name: Run svelte-check | |
| run: pnpm run check | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| - name: Run unit tests | |
| run: pnpm run test | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| - name: Build | |
| run: pnpm run build | |
| env: | |
| PUBLIC_SUPABASE_URL: http://localhost | |
| PUBLIC_SUPABASE_PUBLISHABLE_KEY: placeholder | |
| build: | |
| name: build | |
| if: ${{ always() }} | |
| needs: | |
| - python | |
| - node24-quality | |
| - node24-unit-coverage | |
| - node24-build-performance | |
| - node24-e2e-mocked | |
| - node24-e2e-live | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Require every Node 24 and Python job to succeed | |
| shell: bash | |
| env: | |
| REQUIRED_RESULTS: ${{ toJSON(needs) }} | |
| run: jq -e 'all(.[]; .result == "success")' <<< "$REQUIRED_RESULTS" > /dev/null |