name: Build and Test on: pull_request: {} push: branches: [develop, staging, master] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: {} # No permissions required jobs: fetch: uses: ./.github/workflows/build_prepare.yaml permissions: contents: read with: config: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'element.io/nightly' || 'element.io/release' }} version: ${{ (github.event.pull_request.base.ref || github.ref_name) == 'develop' && 'develop' || '' }} branch-matching: true windows: needs: fetch name: Windows uses: ./.github/workflows/build_windows.yaml strategy: matrix: arch: [x64, ia32, arm64] with: arch: ${{ matrix.arch }} blob_report: true linux: needs: fetch name: "Linux (${{ matrix.arch }}) (sqlcipher: ${{ matrix.sqlcipher }})" uses: ./.github/workflows/build_linux.yaml strategy: matrix: sqlcipher: [system, static] arch: [amd64, arm64] with: sqlcipher: ${{ matrix.sqlcipher }} arch: ${{ matrix.arch }} blob_report: true macos: needs: fetch name: macOS uses: ./.github/workflows/build_macos.yaml with: blob_report: true tests-done: needs: [windows, linux, macos] runs-on: ubuntu-24.04 if: always() steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: cache: "yarn" node-version: "lts/*" - name: Install dependencies run: yarn install --frozen-lockfile - name: Download blob reports from GitHub Actions Artifacts uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: pattern: blob-report-* path: all-blob-reports merge-multiple: true - name: Merge into HTML Report run: yarn playwright merge-reports -c ./playwright.config.ts --reporter=html ./all-blob-reports - name: Upload HTML report if: always() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: html-report path: playwright-report retention-days: 14 - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') run: exit 1