Fix/circular reference rendering (#10) #56
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
| # Copyright (c) 2026 Electronic Arts Inc. All rights reserved. | |
| name: CI | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main, develop] | |
| env: | |
| NODE_VERSION: '22' | |
| jobs: | |
| install: | |
| name: Install Dependencies | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| copyright-check: | |
| name: Copyright Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Check copyright headers | |
| run: | | |
| echo "Checking copyright headers..." | |
| MISSING="" | |
| for f in $(find frontend/src backend/src -type f \( -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.jsx' \)); do | |
| if ! head -3 "$f" | grep -q "Copyright.*Electronic Arts"; then | |
| MISSING="$MISSING\n $f" | |
| fi | |
| done | |
| if [ -n "$MISSING" ]; then | |
| echo "Missing copyright header in:$MISSING" | |
| exit 1 | |
| fi | |
| echo "All source files have copyright headers." | |
| typecheck: | |
| name: TypeScript Type Check | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Type check frontend | |
| run: | | |
| npm run build:shared | |
| cd frontend && npx tsc --noEmit | |
| - name: Type check backend (source + tests) | |
| run: | | |
| cd backend | |
| npm run typecheck | |
| npm run typecheck:test | |
| lint-frontend: | |
| name: Lint Frontend | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Lint frontend | |
| run: cd frontend && npm run lint | |
| lint-backend: | |
| name: Lint Backend | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Lint backend | |
| run: cd backend && npm run lint | |
| build-frontend: | |
| name: Build Frontend | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Build frontend | |
| run: npm run build:frontend | |
| build-backend: | |
| name: Build Backend | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Build backend | |
| run: | | |
| npm run build:shared | |
| cd backend && npm run build | |
| - name: Verify backend build | |
| run: | | |
| cd backend | |
| node --check dist/server/httpServer.js | |
| node -e "import('./dist/app.js')" --input-type=module | |
| test-backend: | |
| name: Test Backend | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Run backend tests | |
| run: | | |
| npm run build:shared | |
| cd backend && npm test | |
| test-frontend: | |
| name: Test Frontend | |
| runs-on: ubuntu-latest | |
| needs: install | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm run install:all | |
| - name: Run frontend tests | |
| run: cd frontend && npm run test:run |