name: End to end tests

on:
  pull_request:
  merge_group:
  push:
    branches: [main]

env:
  CI: 1
  PRINT_GITHUB_ANNOTATIONS: 1

defaults:
  run:
    shell: bash

jobs:
  build:
    name: 'End to end tests'
    timeout-minutes: 60
    runs-on: ubuntu-latest-16-cores-open

    steps:
      - name: Check out code
        uses: actions/checkout@v3

      - name: Run our setup
        uses: ./.github/actions/setup

      - name: Get installed Playwright version
        id: playwright-version
        run: |
          cd apps/examples
          yarn info @playwright/test --json > playwright.json
          echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./playwright.json').children.Version)")" >> $GITHUB_ENV

      - uses: actions/cache@v3
        name: Check for Playwright browsers cache
        id: playwright-cache
        with:
          path: |
            ~/.cache/ms-playwright
          key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}

      - name: Install Playwright Browsers
        run: npx playwright install --with-deps chromium chrome
        if: steps.playwright-cache.outputs.cache-hit != 'true'

      - name: Run Playwright tests
        run: 'yarn e2e'
        working-directory: apps/examples

      - uses: actions/upload-artifact@v3
        if: always()
        with:
          name: playwright-report
          path: apps/examples/playwright-report
          retention-days: 30

      - uses: shallwefootball/s3-upload-action@master
        # only upload if we have AWS credentials:
        env:
          HAS_AWS_KEY: ${{ secrets.AWS_S3_SECRET_KEY && '1' || '' }}
        if: always() && env.HAS_AWS_KEY == '1'
        name: Upload S3
        id: s3
        with:
          aws_key_id: ${{ secrets.AWS_S3_KEY_ID }}
          aws_secret_access_key: ${{ secrets.AWS_S3_SECRET_KEY}}
          aws_bucket: playwright-reports.tldraw.xyz
          source_dir: apps/examples/playwright-report

      - name: Log report to summary
        if: always()
        run: |
          report_url="https://playwright-reports.tldraw.xyz/${{ steps.s3.outputs.object_key }}/index.html"
          echo "Report: $report_url"
          echo "## Playwright report" >> $GITHUB_STEP_SUMMARY
          echo "* $report_url" >> $GITHUB_STEP_SUMMARY
