This repository has been archived by the owner on Sep 11, 2024. It is now read-only.
upstream-sdk-notify #8922
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Produce a build of element-web with this version of react-sdk | |
# and any matching branches of element-web and js-sdk, output it | |
# as an artifact and run end-to-end tests. | |
name: End to End Tests | |
on: | |
pull_request: {} | |
merge_group: | |
types: [checks_requested] | |
push: | |
branches: [develop, master] | |
repository_dispatch: | |
types: [upstream-sdk-notify] | |
# support triggering from other workflows | |
workflow_call: | |
inputs: | |
react-sdk-repository: | |
type: string | |
required: true | |
description: "The name of the github repository to check out and build." | |
matrix-js-sdk-sha: | |
type: string | |
required: false | |
description: "The Git SHA of matrix-js-sdk to build against. By default, will use a matching branch name if it exists, or develop." | |
element-web-sha: | |
type: string | |
required: false | |
description: "The Git SHA of element-web to build against. By default, will use a matching branch name if it exists, or develop." | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} | |
cancel-in-progress: true | |
env: | |
# fetchdep.sh needs to know our PR number | |
PR_NUMBER: ${{ github.event.pull_request.number }} | |
jobs: | |
build: | |
name: "Build Element-Web" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ inputs.react-sdk-repository || github.repository }} | |
- uses: actions/setup-node@v4 | |
with: | |
cache: "yarn" | |
- name: Fetch layered build | |
id: layered_build | |
env: | |
# tell layered.sh to check out the right sha of the JS-SDK & EW, if they were given one | |
JS_SDK_GITHUB_BASE_REF: ${{ inputs.matrix-js-sdk-sha }} | |
ELEMENT_WEB_GITHUB_BASE_REF: ${{ inputs.element-web-sha }} | |
run: | | |
scripts/ci/layered.sh | |
JSSDK_SHA=$(git -C matrix-js-sdk rev-parse --short=12 HEAD) | |
REACT_SHA=$(git rev-parse --short=12 HEAD) | |
VECTOR_SHA=$(git -C element-web rev-parse --short=12 HEAD) | |
echo "VERSION=$VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA" >> $GITHUB_OUTPUT | |
- name: Copy config | |
run: cp element.io/develop/config.json config.json | |
working-directory: ./element-web | |
- name: Build | |
env: | |
CI_PACKAGE: true | |
VERSION: "${{ steps.layered_build.outputs.VERSION }}" | |
run: | | |
yarn build | |
echo $VERSION > webapp/version | |
working-directory: ./element-web | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: webapp | |
path: element-web/webapp | |
retention-days: 1 | |
playwright: | |
name: "Run Tests ${{ matrix.runner }}/${{ strategy.job-total }}" | |
needs: build | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
issues: read | |
pull-requests: read | |
strategy: | |
fail-fast: false | |
matrix: | |
# Run multiple instances in parallel to speed up the tests | |
runner: [1, 2, 3, 4, 5, 6, 7, 8] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
path: matrix-react-sdk | |
repository: ${{ inputs.react-sdk-repository || github.repository }} | |
- name: 📥 Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: webapp | |
path: webapp | |
- uses: actions/setup-node@v4 | |
with: | |
cache: "yarn" | |
cache-dependency-path: matrix-react-sdk/yarn.lock | |
- name: Install dependencies | |
working-directory: matrix-react-sdk | |
run: yarn install --frozen-lockfile | |
- name: Get installed Playwright version | |
id: playwright | |
working-directory: matrix-react-sdk | |
run: echo "version=$(yarn list --pattern @playwright/test --depth=0 --json --non-interactive --no-progress | jq -r '.data.trees[].name')" >> $GITHUB_OUTPUT | |
- name: Cache playwright binaries | |
uses: actions/cache@v4 | |
id: playwright-cache | |
with: | |
path: | | |
~/.cache/ms-playwright | |
key: ${{ runner.os }}-playwright-${{ steps.playwright.outputs.version }} | |
- name: Install Playwright browsers | |
if: steps.playwright-cache.outputs.cache-hit != 'true' | |
working-directory: matrix-react-sdk | |
run: yarn playwright install --with-deps | |
- name: Run Playwright tests | |
uses: coactions/setup-xvfb@6b00cf1889f4e1d5a48635647013c0508128ee1a | |
with: | |
run: yarn playwright test --shard ${{ matrix.runner }}/${{ strategy.job-total }} | |
working-directory: matrix-react-sdk | |
- name: Upload blob report to GitHub Actions Artifacts | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: all-blob-reports-${{ matrix.runner }} | |
path: matrix-react-sdk/blob-report | |
retention-days: 1 | |
complete: | |
name: end-to-end-tests | |
needs: playwright | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "All tests passed!" |