123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- name: End-to-end tests
- on:
- push:
- branches: [ main ]
- pull_request_target:
- types: [ opened, synchronize, reopened, labeled ]
- concurrency: ${{ github.workflow }}--${{ github.ref }}
- jobs:
- e2e:
- if: ${{ !github.event.pull_request || (contains(github.event.pull_request.labels.*.name, 'safe to test') && github.event.pull_request.state == 'open') || (github.event.pull_request.head.repo.full_name == github.repository && github.event.event_name != 'labeled') }}
- name: Browser tests
- runs-on: ubuntu-latest
- steps:
- - name: Checkout sources
- uses: actions/checkout@v2
- with:
- ref: ${{ github.event.pull_request.head.sha || github.sha }}
- - name: Get yarn cache directory path
- id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(corepack yarn config get cacheFolder)"
- - uses: actions/cache@v2
- id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
- - name: Install Node.js
- uses: actions/setup-node@v2
- with:
- node-version: 16.x
- - name: Install dependencies
- run: corepack yarn install --immutable
- - name: Build Uppy packages
- run: corepack yarn build
- - name: Run end-to-end browser tests
- run: corepack yarn run e2e:ci
- env:
- COMPANION_UNSPLASH_KEY: ${{secrets.COMPANION_UNSPLASH_KEY}}
- COMPANION_UNSPLASH_SECRET: ${{secrets.COMPANION_UNSPLASH_SECRET}}
- VITE_TRANSLOADIT_KEY: ${{secrets.TRANSLOADIT_KEY}}
- VITE_TRANSLOADIT_TEMPLATE: ${{secrets.TRANSLOADIT_TEMPLATE}}
- VITE_TRANSLOADIT_SERVICE_URL: ${{secrets.TRANSLOADIT_SERVICE_URL}}
- - name: Remove 'pending end-to-end tests' label
- # Remove the 'pending end-to-end tests' label if tests ran successfully
- if: github.event.pull_request && contains(github.event.pull_request.labels.*.name, 'pending end-to-end tests')
- run: gh pr edit "$NUMBER" --remove-label 'pending end-to-end tests'
- env:
- NUMBER: ${{ github.event.pull_request.number }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Remove 'safe to test' label
- # Remove the 'safe to test' label to ensure next commit needs approval before re-running this.
- if: always() && github.event.pull_request && contains(github.event.pull_request.labels.*.name, 'safe to test')
- run: gh pr edit "$NUMBER" --remove-label 'safe to test'
- env:
- NUMBER: ${{ github.event.pull_request.number }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- add-pending-e2e-label:
- # Add the 'pending end-to-end tests' label for PRs that come from forks.
- # For those PRs, we want to review the code before running e2e tests.
- # See https://securitylab.github.com/research/github-actions-preventing-pwn-requests/.
- if: github.event.pull_request.state == 'open' && github.event.pull_request.head.repo.full_name != github.repository && !contains(github.event.pull_request.labels.*.name, 'safe to test') && !contains(github.event.pull_request.labels.*.name, 'pending end-to-end tests')
- runs-on: ubuntu-latest
- steps:
- - name: Add label
- env:
- NUMBER: ${{ github.event.pull_request.number }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: gh pr edit "$NUMBER" --repo ${{ github.repository }} --add-label 'pending end-to-end tests'
|