name: Electron Playwright Tests on: push: branches: [master] pull_request: types: [labeled] workflow_dispatch: inputs: version_name: type: string description: "Desktop Version name eg: v5.11.0" required: true instance_details: type: string description: "JSON array of platform details" required: false MM_TEST_USER_NAME: description: "The admin username of the test instance" required: false type: string MM_TEST_PASSWORD: description: "The admin password of the test instance" required: false type: string MM_SERVER_VERSION: type: string description: "The server version to test against" required: false default: "10.5.0" jobs: determine-platforms: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - id: set-matrix run: | if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then if [[ -n "${{ inputs.instance_details }}" ]]; then MATRIX=$(echo '${{ inputs.instance_details }}' | jq -c '[.[] | {os: .runner, platform: .platform, url: .url, installation_id: .installation_id}]') echo "matrix=$MATRIX" >> $GITHUB_OUTPUT else MATRIX='[{"os":"ubuntu-24.04","platform":"linux","url":"${{ secrets.MM_TEST_SERVER_URL }}","installation_id":"unknown"}, {"os":"macos-13","platform":"macos","url":"${{ secrets.MM_TEST_SERVER_URL }}","installation_id":"unknown"}, {"os":"windows-2022","platform":"windows","url":"${{ secrets.MM_TEST_SERVER_URL }}","installation_id":"unknown"}]' echo "matrix=$MATRIX" >> $GITHUB_OUTPUT fi elif [[ "${{ github.event_name }}" == "push" ]] || [[ "${{ contains(github.event.pull_request.labels.*.name, 'E2E/Run') }}" == "true" ]]; then MATRIX='[{"os":"ubuntu-24.04","platform":"linux","url":"${{ secrets.MM_TEST_SERVER_URL }}","installation_id":"unknown"}, {"os":"macos-13","platform":"macos","url":"${{ secrets.MM_TEST_SERVER_URL }}","installation_id":"unknown"}, {"os":"windows-2022","platform":"windows","url":"${{ secrets.MM_TEST_SERVER_URL }}","installation_id":"unknown"}]' echo "matrix=$MATRIX" >> $GITHUB_OUTPUT else echo "matrix=[]" >> $GITHUB_OUTPUT fi e2e-tests: needs: determine-platforms strategy: matrix: platform: ${{ fromJson(needs.determine-platforms.outputs.matrix) }} fail-fast: false runs-on: ${{ matrix.platform.os }} steps: - name: Update initial commit status 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 || github.sha }} context: e2e/${{ matrix.platform.platform }} description: E2E tests for Mattermost desktop app on ${{ matrix.platform.platform }} have started... status: pending - name: Run E2E tests id: run-tests uses: ./.github/workflows/e2e-functional-template.yml with: runs-on: ${{ matrix.platform.os }} DESKTOP_VERSION: ${{ inputs.version_name || github.head_ref || github.ref }} MM_TEST_SERVER_URL: ${{ matrix.platform.url }} MM_TEST_USER_NAME: ${{ inputs.MM_TEST_USER_NAME || secrets.MM_DESKTOP_E2E_USER_NAME }} MM_TEST_PASSWORD: ${{ inputs.MM_TEST_PASSWORD || secrets.MM_DESKTOP_E2E_USER_CREDENTIALS }} MM_SERVER_VERSION: ${{ inputs.MM_SERVER_VERSION || '10.5.0' }} - name: Update final commit status if: always() 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 || github.sha }} context: e2e/${{ matrix.platform.platform }} description: Completed with ${{ steps.run-tests.outputs.NEW_FAILURES }} failures status: ${{ steps.run-tests.outputs.STATUS }} target_url: ${{ steps.run-tests.outputs.REPORT_LINK }}