fix(examples): bundle per-framework head/router adapters per app #47
Workflow file for this run
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: Regression | |
| on: | |
| push: | |
| branches: [master, main, feat-*] | |
| pull_request: | |
| jobs: | |
| units-and-types: | |
| name: Units + Types | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10 | |
| run_install: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| cache: 'pnpm' | |
| - name: Install | |
| run: pnpm install --frozen-lockfile | |
| - name: Build packages (emit .d.ts for cross-package type resolution) | |
| run: pnpm build:packages | |
| - name: Reinstall to relink bin symlinks | |
| run: pnpm install --frozen-lockfile | |
| - name: Type check | |
| run: pnpm lint:type | |
| - name: Unit tests | |
| run: pnpm test | |
| validate-llms: | |
| name: llms.md code-block parse | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10 | |
| run_install: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| cache: 'pnpm' | |
| - name: Install | |
| run: pnpm install --frozen-lockfile | |
| - name: Validate llms.md code blocks | |
| run: pnpm validate:llms | |
| build-and-smoke: | |
| name: Build + SSR smoke | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10 | |
| run_install: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| cache: 'pnpm' | |
| - name: Install + build packages + relink + build examples | |
| run: | | |
| pnpm install --frozen-lockfile | |
| pnpm build:packages | |
| pnpm install --frozen-lockfile | |
| pnpm build:examples | |
| - name: SSR smoke (prod build + curl + hydration markers) | |
| run: node scripts/smoke.mjs | |
| - name: Upload smoke log on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: smoke-failure-logs | |
| path: | | |
| examples/**/dist/**/*.log | |
| ~/.npm/_logs/** | |
| retention-days: 7 | |
| visual: | |
| name: Visual regression | |
| needs: build-and-smoke | |
| runs-on: ubuntu-latest | |
| # Playwright image ships chromium + system deps pre-installed; avoids | |
| # the CDN-stuck `playwright install` that broke previous runs. | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.48.2-jammy | |
| options: --user root --ipc=host | |
| timeout-minutes: 40 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup node 24 + pnpm | |
| run: | | |
| curl -fsSL https://deb.nodesource.com/setup_24.x | bash - | |
| apt-get install -y nodejs | |
| corepack enable | |
| corepack prepare pnpm@10.0.0 --activate | |
| - name: Install + build packages + relink + build examples | |
| run: | | |
| pnpm install --frozen-lockfile | |
| pnpm build:packages | |
| pnpm install --frozen-lockfile | |
| pnpm build:examples | |
| - name: Compare hub baselines | |
| env: | |
| VISUAL_GROUP: hub | |
| run: | | |
| node scripts/start-all.mjs --group=hub & | |
| SERVER_PID=$! | |
| for _ in $(seq 1 120); do | |
| if curl -sf http://127.0.0.1:3000/ -o /dev/null; then break; fi | |
| sleep 0.5 | |
| done | |
| pnpm test:visual | |
| STATUS=$? | |
| kill $SERVER_PID 2>/dev/null || true | |
| exit $STATUS | |
| - name: Compare standalone baselines | |
| env: | |
| VISUAL_GROUP: standalone | |
| run: | | |
| node scripts/start-all.mjs --group=standalone & | |
| SERVER_PID=$! | |
| for _ in $(seq 1 120); do | |
| if curl -sf http://127.0.0.1:3005/ -o /dev/null; then break; fi | |
| sleep 0.5 | |
| done | |
| pnpm test:visual | |
| STATUS=$? | |
| kill $SERVER_PID 2>/dev/null || true | |
| exit $STATUS | |
| - name: Upload Playwright report on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: playwright-report | |
| path: | | |
| playwright-report/ | |
| test-results/ | |
| retention-days: 14 | |
| lighthouse: | |
| name: Lighthouse / a11y / SEO | |
| needs: build-and-smoke | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v2 | |
| with: | |
| version: 10 | |
| run_install: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| cache: 'pnpm' | |
| - name: Install + build packages + relink + build examples | |
| run: | | |
| pnpm install --frozen-lockfile | |
| pnpm build:packages | |
| pnpm install --frozen-lockfile | |
| pnpm build:examples | |
| - name: Start hub server | |
| run: | | |
| node scripts/start-all.mjs --group=hub & | |
| for _ in $(seq 1 120); do | |
| if curl -sf http://127.0.0.1:3000/ -o /dev/null; then break; fi | |
| sleep 0.5 | |
| done | |
| - name: Run Lighthouse CI | |
| uses: treosh/lighthouse-ci-action@v12 | |
| with: | |
| configPath: ./.lighthouserc.json | |
| uploadArtifacts: true | |
| temporaryPublicStorage: true |