name: E2E Tests on: pull_request: push: branches: ["main"] permissions: contents: read env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true APP_URL: http://localhost:3000 PORT: "3000" DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres FLAG_DISABLE_SIGNUPS: "false" FLAG_DISABLE_EMAIL_AUTH: "false" FLAG_DISABLE_API_RATE_LIMIT: "true" LOCAL_STORAGE_PATH: /tmp/reactive-resume-e2e-storage jobs: e2e: runs-on: ubuntu-latest timeout-minutes: 30 services: postgres: image: postgres:16 env: POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - 5432:5432 options: >- --health-cmd "pg_isready -U postgres -d postgres" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout Repository uses: actions/checkout@v6 with: persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6 - name: Setup Node uses: actions/setup-node@v6 with: node-version: "24" cache: "pnpm" - name: Install Dependencies run: pnpm install --frozen-lockfile - name: Install Playwright Browser run: pnpm exec playwright install --with-deps chromium - name: Generate Test Secrets run: | echo "AUTH_SECRET=$(openssl rand -hex 32)" >> "$GITHUB_ENV" echo "ENCRYPTION_SECRET=$(openssl rand -hex 32)" >> "$GITHUB_ENV" - name: Prepare Storage run: mkdir -p "$LOCAL_STORAGE_PATH" - name: Run Database Migrations run: pnpm db:migrate - name: Build run: pnpm build - name: Run E2E Tests run: pnpm test:e2e:ci - name: Upload Playwright Report if: always() uses: actions/upload-artifact@v7 with: name: playwright-report path: | playwright-report test-results if-no-files-found: ignore retention-days: 7