name: End-to-end Tests
on:
  # These tests won't work for non-develop branches at the moment as they
  # won't pull in the right versions of other repos, so they're only enabled
  # on develop.
  push:
    branches: [ develop, master ]
  pull_request:
    branches: [ develop ]
  repository_dispatch:
    types: [ upstream-sdk-notify ]
env:
  # These must be set for fetchdep.sh to get the right branch
  REPOSITORY: ${{ github.repository }}
  PR_NUMBER: ${{ github.event.pull_request.number }}
jobs:
  end-to-end:
    runs-on: ubuntu-latest
    container: vectorim/element-web-ci-e2etests-env:latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - uses: actions/setup-node@v3
        with:
          cache: 'yarn'

      - name: Prepare End-to-End tests
        run: ./scripts/ci/prepare-end-to-end-tests.sh

      - name: Run End-to-End tests
        run: ./scripts/ci/run-end-to-end-tests.sh

      - name: Archive logs
        uses: actions/upload-artifact@v2
        if: ${{ always() }}
        with:
          path: |
            test/end-to-end-tests/logs/**/*
            test/end-to-end-tests/synapse/installations/consent/homeserver.log
            retention-days: 14

      - name: Store benchmark result
        if: github.ref == 'refs/heads/develop' && github.repository == 'matrix-org/matrix-react-sdk'
        uses: matrix-org/github-action-benchmark@jsperfentry-1
        with:
          tool: 'jsperformanceentry'
          output-file-path: test/end-to-end-tests/performance-entries.json
          # This is the default dashboard path. It's included here anyway to
          # make the difference from the Cypress variant in
          # `element-build-and-test.yaml` more obvious.
          # The dashboard is available at https://matrix-org.github.io/matrix-react-sdk/dev/bench/
          benchmark-data-dir-path: dev/bench
          fail-on-alert: false
          comment-on-alert: false
          github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
          auto-push: ${{ github.ref == 'refs/heads/develop' }}
