Bump @tootallnate/once and jsdom in /backend #181
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: Tests | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| backend-tests: | |
| name: Backend Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: backend/package-lock.json | |
| - name: Install backend dependencies | |
| run: | | |
| cd backend | |
| npm ci | |
| - name: Generate Prisma client | |
| run: | | |
| cd backend | |
| npx prisma generate | |
| - name: Run backend tests | |
| run: | | |
| cd backend | |
| npm test | |
| frontend-unit-tests: | |
| name: Frontend Unit Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install frontend dependencies | |
| run: | | |
| cd frontend | |
| npm ci | |
| - name: Run frontend tests | |
| run: | | |
| cd frontend | |
| npm test | |
| e2e-tests: | |
| name: E2E Browser Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install backend dependencies | |
| run: | | |
| cd backend | |
| npm ci | |
| - name: Generate Prisma client | |
| run: | | |
| cd backend | |
| npx prisma generate | |
| - name: Setup backend database | |
| run: | | |
| cd backend | |
| npx prisma migrate deploy | |
| env: | |
| DATABASE_URL: file:${{ github.workspace }}/backend/prisma/e2e-test.db | |
| - name: Install frontend dependencies | |
| run: | | |
| cd frontend | |
| npm ci | |
| - name: Install E2E test dependencies | |
| run: | | |
| cd e2e | |
| npm ci | |
| - name: Install Playwright browsers | |
| run: | | |
| cd e2e | |
| npx playwright install chromium --with-deps | |
| - name: Start servers and run E2E tests | |
| run: | | |
| # Start backend server in background | |
| cd backend | |
| DATABASE_URL="file:${{ github.workspace }}/backend/prisma/e2e-test.db" FRONTEND_URL="http://localhost:6767" npm run dev & | |
| BACKEND_PID=$! | |
| cd .. | |
| # Wait for backend to be ready | |
| echo "Waiting for backend server..." | |
| for i in {1..30}; do | |
| if curl -s http://localhost:8000/health > /dev/null; then | |
| echo "Backend is ready!" | |
| break | |
| fi | |
| echo "Attempt $i: Backend not ready yet..." | |
| sleep 2 | |
| done | |
| # Start frontend server in background | |
| cd frontend | |
| npm run dev -- --host & | |
| FRONTEND_PID=$! | |
| cd .. | |
| # Wait for frontend to be ready | |
| echo "Waiting for frontend server..." | |
| for i in {1..30}; do | |
| if curl -s http://localhost:6767 > /dev/null; then | |
| echo "Frontend is ready!" | |
| break | |
| fi | |
| echo "Attempt $i: Frontend not ready yet..." | |
| sleep 2 | |
| done | |
| # Run E2E tests | |
| cd e2e | |
| NO_SERVER=true CI=true npx playwright test | |
| TEST_EXIT_CODE=$? | |
| # Cleanup | |
| kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true | |
| exit $TEST_EXIT_CODE | |
| env: | |
| DATABASE_URL: file:${{ github.workspace }}/backend/prisma/e2e-test.db | |
| - name: Upload Playwright report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: e2e/playwright-report/ | |
| retention-days: 7 | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: failure() | |
| with: | |
| name: test-results | |
| path: e2e/test-results/ | |
| retention-days: 7 | |
| # Security tests for data sanitization | |
| security-tests: | |
| name: Security Sanitization Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: backend/package-lock.json | |
| - name: Install backend dependencies | |
| run: | | |
| cd backend | |
| npm ci | |
| - name: Generate Prisma client | |
| run: | | |
| cd backend | |
| npx prisma generate | |
| - name: Run security tests | |
| run: | | |
| cd backend | |
| npx ts-node src/securityTest.ts |