diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 00000000..d311c7fa --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,67 @@ +name: E2E Tests + +on: + pull_request: + paths: + - 'packages/web/**' + - 'packages/api-server/**' + - '.github/workflows/e2e.yml' + push: + branches: [dev] + +concurrency: + group: e2e-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + playwright: + runs-on: ubuntu-latest + timeout-minutes: 20 + env: + NEXT_PUBLIC_DATABASE_API_URL: ${{ secrets.E2E_DATABASE_API_URL }} + NEXT_PUBLIC_DATABASE_ANON_KEY: ${{ secrets.E2E_DATABASE_ANON_KEY }} + DATABASE_SERVICE_ROLE_KEY: ${{ secrets.E2E_DATABASE_SERVICE_ROLE_KEY }} + TEST_USER_EMAIL: ${{ secrets.E2E_TEST_USER_EMAIL }} + TEST_USER_PASSWORD: ${{ secrets.E2E_TEST_USER_PASSWORD }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - name: Validate E2E secrets + run: | + : "${NEXT_PUBLIC_DATABASE_API_URL:?Missing E2E_DATABASE_API_URL secret}" + : "${NEXT_PUBLIC_DATABASE_ANON_KEY:?Missing E2E_DATABASE_ANON_KEY secret}" + : "${DATABASE_SERVICE_ROLE_KEY:?Missing E2E_DATABASE_SERVICE_ROLE_KEY secret}" + : "${TEST_USER_EMAIL:?Missing E2E_TEST_USER_EMAIL secret}" + : "${TEST_USER_PASSWORD:?Missing E2E_TEST_USER_PASSWORD secret}" + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Generate API client + working-directory: packages/web + run: bun run generate:api + + - name: Install Playwright browsers + working-directory: packages/web + run: bunx playwright install --with-deps chromium + + - name: Run Playwright tests + working-directory: packages/web + run: bunx playwright test + + - name: Upload test-results on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: test-results-${{ github.run_id }} + path: packages/web/test-results/ + retention-days: 7