name: Electron Playwright Tests on: push: branches: [master] pull_request: types: [labeled] workflow_dispatch: inputs: version_name: type: string description: "Desktop Version name eg: 5.6" required: true platform: type: choice description: "Choose platform to run tests" required: true default: "all" options: [linux, macos, windows, all] jobs: update-initial-status-linux: runs-on: ubuntu-22.04 if: contains(github.event.label.name, 'Run Desktop E2E Tests') steps: - uses: mattermost/actions/delivery/update-commit-status@main env: GITHUB_TOKEN: ${{ github.token }} with: repository_full_name: ${{ github.repository }} commit_sha: ${{ github.event.pull_request.head.sha }} context: e2e/linux description: E2E tests for Mattermost desktop app on Linux have started... status: pending update-initial-status-macos: runs-on: ubuntu-22.04 if: contains(github.event.label.name, 'Run Desktop E2E Tests') steps: - uses: mattermost/actions/delivery/update-commit-status@main env: GITHUB_TOKEN: ${{ github.token }} with: repository_full_name: ${{ github.repository }} commit_sha: ${{ github.event.pull_request.head.sha }} context: e2e/macOS description: E2E tests for Mattermost desktop app on macOS have started... status: pending update-initial-status-windows: runs-on: ubuntu-22.04 if: contains(github.event.label.name, 'Run Desktop E2E Tests') steps: - uses: mattermost/actions/delivery/update-commit-status@main env: GITHUB_TOKEN: ${{ github.token }} with: repository_full_name: ${{ github.repository }} commit_sha: ${{ github.event.pull_request.head.sha }} context: e2e/windows description: E2E tests for Mattermost desktop app on Windows have started... status: pending determine-platforms: if: contains(github.event.label.name, 'Run Desktop E2E Tests') needs: [update-initial-status-linux, update-initial-status-macos, update-initial-status-windows] runs-on: ubuntu-latest outputs: platforms: ${{ steps.set-matrix.outputs.platforms }} steps: - id: set-matrix run: | if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then if [[ "${{ inputs.platform }}" == "all" ]]; then echo "platforms=['ubuntu-24.04', 'macos-13', 'windows-2022']" >> $GITHUB_OUTPUT else case "${{ inputs.platform }}" in linux) echo "platforms=['ubuntu-24.04']" ;; macos) echo "platforms=['macos-13']" ;; windows) echo "platforms=['windows-2022']" esac >> $GITHUB_OUTPUT fi elif [[ "${{ github.event_name }}" == "push" ]] || [[ "${{ contains(github.event.pull_request.labels.*.name, 'Run Desktop E2E Tests') }}" == "true" ]]; then echo "platforms=['ubuntu-24.04', 'macos-13', 'windows-2022']" >> $GITHUB_OUTPUT else echo "platforms=[]" >> $GITHUB_OUTPUT fi e2e-tests: needs: determine-platforms strategy: matrix: os: ${{ fromJson(needs.determine-platforms.outputs.platforms) }} fail-fast: false uses: ./.github/workflows/e2e-functional-template.yml secrets: inherit with: runs-on: ${{ matrix.os }} DESKTOP_VERSION: ${{ inputs.version_name || github.head_ref || github.ref }} update-final-status-linux: runs-on: ubuntu-22.04 needs: - e2e-tests steps: - uses: mattermost/actions/delivery/update-commit-status@main env: GITHUB_TOKEN: ${{ github.token }} with: repository_full_name: ${{ github.repository }} commit_sha: ${{ github.event.pull_request.head.sha }} context: e2e/linux description: Completed with ${{ needs.e2e-tests.outputs.NEW_FAILURES_LINUX }} failures status: ${{ needs.e2e-tests.outputs.STATUS_LINUX }} target_url: ${{ needs.e2e-tests.outputs.REPORT_LINK_LINUX }} update-final-status-macos: runs-on: ubuntu-22.04 needs: - e2e-tests steps: - uses: mattermost/actions/delivery/update-commit-status@main env: GITHUB_TOKEN: ${{ github.token }} with: repository_full_name: ${{ github.repository }} commit_sha: ${{ github.event.pull_request.head.sha }} context: e2e/macOS description: Completed with ${{ needs.e2e-tests.outputs.NEW_FAILURES_MACOS }} failures status: ${{ needs.e2e-tests.outputs.STATUS_MACOS }} target_url: ${{ needs.e2e-tests.outputs.REPORT_LINK_MACOS }} update-final-status-windows: runs-on: ubuntu-22.04 needs: - e2e-tests steps: - uses: mattermost/actions/delivery/update-commit-status@main env: GITHUB_TOKEN: ${{ github.token }} with: repository_full_name: ${{ github.repository }} commit_sha: ${{ github.event.pull_request.head.sha }} context: e2e/windows description: Completed with ${{ needs.e2e-tests.outputs.NEW_FAILURES_WINDOWS }} failures status: ${{ needs.e2e-tests.outputs.STATUS_WINDOWS }} target_url: ${{ needs.e2e-tests.outputs.REPORT_LINK_WINDOWS }} e2e-remove-label: if: ${{ always() && contains(github.event.pull_request.labels.*.name, 'Run Desktop E2E Tests') }} needs: e2e-tests runs-on: ubuntu-22.04 steps: - name: Remove E2E test label uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 continue-on-error: true # Label might have been removed manually with: script: | github.rest.issues.removeLabel({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, name: 'Run Desktop E2E Tests', });