| | name: Functional Test Suite (PR) |
| |
|
| | permissions: {} |
| |
|
| | on: |
| | push: |
| | branches: [ main ] |
| | pull_request: |
| | branches: [ main ] |
| | jobs: |
| | functional-tests: |
| | timeout-minutes: 60 |
| | runs-on: ubuntu-latest |
| | |
| | services: |
| | |
| | postgres: |
| | |
| | image: postgres |
| | |
| | env: |
| | POSTGRES_USER: postgres |
| | POSTGRES_PASSWORD: postgres |
| | POSTGRES_DB: blurts |
| | |
| | options: >- |
| | --health-cmd pg_isready |
| | --health-interval 10s |
| | --health-timeout 5s |
| | --health-retries 5 |
| | ports: |
| | - 5432:5432 |
| |
|
| | steps: |
| | - uses: actions/checkout@v6 |
| | with: |
| | persist-credentials: false |
| | - uses: actions/setup-node@v6 |
| | with: |
| | node-version: 20.19.x |
| |
|
| | - name: Install dependencies |
| | run: npm ci |
| | - name: Setting up postgres |
| | run: npm run db:migrate |
| | env: |
| | DATABASE_URL: postgres://postgres:postgres@localhost:5432/blurts |
| | - name: Store Playwright’s Version |
| | run: | |
| | # Get the current Playwright version listed in package.json |
| | PLAYWRIGHT_VERSION=$(npx playwright --version | sed 's/Version //') |
| | echo "Playwright Version: $PLAYWRIGHT_VERSION" |
| | echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV |
| | - name: Cache Playwright Browsers for Playwright's Version |
| | id: cache-playwright-browsers |
| | uses: actions/cache@v4 |
| | with: |
| | path: ~/.cache/ms-playwright |
| | key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }} |
| |
|
| | - name: Setup Playwright Browser |
| | if: steps.cache-playwright-browsers.outputs.cache-hit != 'true' |
| | run: npx playwright install --with-deps |
| |
|
| | - name: Run Playwright tests |
| | if: github.event.pull_request.user.login != 'dependabot[bot]' |
| | run: npm run functional-tests |
| | timeout-minutes: 20 |
| | env: |
| | ADMINS: ${{ secrets.ADMINS }} |
| | DATABASE_URL: postgres://postgres:postgres@localhost:5432/blurts |
| | E2E_TEST_SECRET: ${{ secrets.E2E_TEST_SECRET }} |
| | E2E_TEST_ACCOUNT_BASE_EMAIL: ${{ secrets.E2E_TEST_ACCOUNT_BASE_EMAIL }} |
| | E2E_TEST_ACCOUNT_BASE_PASSWORD: ${{ secrets.E2E_TEST_ACCOUNT_BASE_PASSWORD }} |
| | E2E_TEST_ENV: local |
| | HIBP_API_TOKEN: ${{ secrets.HIBP_API_TOKEN }} |
| | HIBP_KANON_API_ROOT: "http://localhost:6060/api/mock/hibp" |
| | HIBP_KANON_API_TOKEN: ${{ secrets.HIBP_KANON_API_TOKEN }} |
| | NEXTAUTH_SECRET: ${{ secrets.NEXTAUTH_SECRET }} |
| | NEXTAUTH_URL: ${{ secrets.NEXTAUTH_URL }} |
| | OAUTH_ACCOUNT_URI: ${{ secrets.OAUTH_ACCOUNT_URI }} |
| | OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET_LOCAL }} |
| | ONEREP_API_BASE: "http://localhost:6060/api/mock/onerep/" |
| | ONEREP_API_KEY: ${{ secrets.ONEREP_API_KEY }} |
| | PREMIUM_PLAN_ID_MONTHLY_US: ${{ secrets.STAGE_PREMIUM_PLAN_ID_MONTHLY_US }} |
| | PREMIUM_PLAN_ID_YEARLY_US: ${{ secrets.STAGE_PREMIUM_PLAN_ID_YEARLY_US }} |
| | PREMIUM_PRODUCT_ID: ${{ secrets.STAGE_PREMIUM_PRODUCT_ID }} |
| | REDIS_URL: "redis://redis.mock" |
| | - uses: actions/upload-artifact@v5 |
| | if: always() |
| | with: |
| | name: playwright-report |
| | path: playwright-report/ |
| | retention-days: 30 |
| | - uses: actions/upload-artifact@v5 |
| | if: always() |
| | with: |
| | name: test-results |
| | path: src/functional-tests/test-results/ |
| | retention-days: 30 |
| |
|