name: Frontend Tests on: push: branches: [ master, main, develop ] paths: - 'frontend/**' - '.github/workflows/frontend-tests.yml' pull_request: branches: [ master, main, develop ] paths: - 'frontend/**' - '.github/workflows/frontend-tests.yml' jobs: unit-tests: runs-on: ubuntu-latest defaults: run: working-directory: ./frontend steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' cache-dependency-path: frontend/package-lock.json - name: Install dependencies run: npm ci - name: Run type checking run: npm run type-check - name: Run linting run: npm run lint - name: Run unit tests run: npm run test:coverage - name: Upload coverage reports uses: codecov/codecov-action@v4 with: flags: frontend directory: ./frontend/coverage e2e-tests: runs-on: ubuntu-latest defaults: run: working-directory: ./frontend steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' cache-dependency-path: frontend/package-lock.json - name: Install dependencies run: npm ci - name: Install Playwright Browsers run: npx playwright install --with-deps chromium - name: Build frontend run: npm run build - name: Run Playwright tests run: npm run test:e2e env: CI: true - name: Upload Playwright Report uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: frontend/playwright-report/ retention-days: 30 - name: Upload E2E Test Results uses: actions/upload-artifact@v4 if: always() with: name: e2e-results path: frontend/e2e-results.xml retention-days: 30