element-web/.github/workflows/tests.yml

115 lines
3.9 KiB
YAML
Raw Permalink Normal View History

2022-04-21 13:55:32 +02:00
name: Tests
2022-03-10 14:17:01 +01:00
on:
2022-12-12 12:24:14 +01:00
pull_request: {}
merge_group:
types: [checks_requested]
2022-12-12 12:24:14 +01:00
push:
branches: [develop, master]
repository_dispatch:
types: [element-web-notify]
workflow_call:
inputs:
2023-02-21 10:57:43 +01:00
disable_coverage:
type: boolean
required: false
description: "Specify true to skip generating and uploading coverage for tests"
matrix-js-sdk-sha:
type: string
required: false
description: "The matrix-js-sdk SHA to use"
2023-04-06 10:57:51 +02:00
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true
env:
ENABLE_COVERAGE: ${{ github.event_name != 'merge_group' && inputs.disable_coverage != 'true' }}
# fetchdep.sh needs to know our PR number
2022-12-12 12:24:14 +01:00
PR_NUMBER: ${{ github.event.pull_request.number }}
permissions: {}
2022-03-10 14:17:01 +01:00
jobs:
2022-12-12 12:24:14 +01:00
jest:
name: Jest
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
# Run multiple instances in parallel to speed up the tests
runner: [1, 2]
2022-12-12 12:24:14 +01:00
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
repository: ${{ inputs.matrix-js-sdk-sha && 'element-hq/element-web' || github.repository }}
2022-12-12 12:24:14 +01:00
- name: Yarn cache
uses: actions/setup-node@v4
2022-12-12 12:24:14 +01:00
with:
node-version: "lts/*"
2022-12-12 12:24:14 +01:00
cache: "yarn"
- name: Install Deps
run: "./scripts/layered.sh"
env:
JS_SDK_GITHUB_BASE_REF: ${{ inputs.matrix-js-sdk-sha }}
2022-12-12 12:24:14 +01:00
2023-03-03 10:38:04 +01:00
- name: Jest Cache
uses: actions/cache@v4
2023-03-03 10:38:04 +01:00
with:
path: /tmp/jest_cache
key: ${{ hashFiles('**/yarn.lock') }}
2022-12-12 12:24:14 +01:00
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@97ba232459a8e02ff6121db9362b09661c875ab8 # v2
2022-12-12 12:24:14 +01:00
- name: Run tests
run: |
yarn test \
--coverage=${{ env.ENABLE_COVERAGE }} \
--ci \
2023-03-03 10:38:04 +01:00
--max-workers ${{ steps.cpu-cores.outputs.count }} \
--shard ${{ matrix.runner }}/${{ strategy.job-total }} \
2023-03-03 10:38:04 +01:00
--cacheDirectory /tmp/jest_cache
env:
JEST_SONAR_UNIQUE_OUTPUT_NAME: true
# tell jest to use coloured output
FORCE_COLOR: true
- name: Move coverage files into place
if: env.ENABLE_COVERAGE == 'true'
run: mv coverage/lcov.info coverage/${{ steps.setupNode.outputs.node-version }}-${{ matrix.runner }}.lcov.info
2022-12-12 12:24:14 +01:00
- name: Upload Artifact
if: env.ENABLE_COVERAGE == 'true'
2024-01-19 09:54:49 +01:00
uses: actions/upload-artifact@v4
2022-12-12 12:24:14 +01:00
with:
2024-01-19 09:54:49 +01:00
name: coverage-${{ matrix.runner }}
2022-12-12 12:24:14 +01:00
path: |
coverage
!coverage/lcov-report
complete:
name: jest-tests
needs: jest
if: always()
runs-on: ubuntu-24.04
permissions:
statuses: write
steps:
- if: needs.jest.result != 'skipped' && needs.jest.result != 'success'
run: exit 1
- name: Skip SonarCloud in merge queue
if: github.event_name == 'merge_group' || inputs.disable_coverage == 'true'
uses: guibranco/github-status-action-v2@66088c44e212a906c32a047529a213d81809ec1c
with:
authToken: ${{ secrets.GITHUB_TOKEN }}
state: success
description: SonarCloud skipped
context: SonarCloud Code Analysis
sha: ${{ github.sha }}
target_url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}