-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Introduce Mobile CMT testing (#7994)
- Loading branch information
Showing
9 changed files
with
373 additions
and
227 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
name: Compatibility Matrix Testing | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
CMT_MATRIX: | ||
description: "A JSON object representing the testing matrix" | ||
required: true | ||
type: string | ||
MOBILE_VERSION: | ||
description: "The mattermost mobile version to test" | ||
required: true | ||
|
||
jobs: | ||
## This is picked up after the finish for cleanup | ||
upload-cmt-server-detals: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: cmt/generate-instance-details-file | ||
run: echo '${{ inputs.CMT_MATRIX }}' > instance-details.json | ||
|
||
- name: cmt/upload-instance-details | ||
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | ||
with: | ||
name: instance-details.json | ||
path: instance-details.json | ||
retention-days: 1 | ||
|
||
calculate-commit-hash: | ||
runs-on: ubuntu-22.04 | ||
outputs: | ||
MOBILE_SHA: ${{ steps.repo.outputs.MOBILE_SHA }} | ||
steps: | ||
- name: cmt/checkout-mobile | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
with: | ||
ref: ${{ inputs.MOBILE_VERSION }} | ||
|
||
- name: cmt/calculate-mattermost-sha | ||
id: repo | ||
run: echo "MOBILE_SHA=$(git rev-parse HEAD)" >> ${GITHUB_OUTPUT} | ||
|
||
update-initial-status: | ||
runs-on: ubuntu-22.04 | ||
needs: | ||
- calculate-commit-hash | ||
steps: | ||
- uses: mattermost/actions/delivery/update-commit-status@746563b58e737a17a8ceb00b84a813b9e6e1b236 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
repository_full_name: ${{ github.repository }} | ||
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }} | ||
context: e2e/compatibility-matrix-testing | ||
description: "Compatibility Matrix Testing for ${{ inputs.MOBILE_VERSION }} version" | ||
status: pending | ||
|
||
# Input follows the below schema | ||
# { | ||
# "server": [ | ||
# { | ||
# "version": "9.6.1", | ||
# "url": "https://delivery-cmt-8467830017-9-6-1.test.mattermost.cloud/" | ||
# }, | ||
# { | ||
# "version": "9.5.2", | ||
# "url": "https://delivery-cmt-8467830017-9-5-2.test.mattermost.cloud/" | ||
# } | ||
# ] | ||
# } | ||
detox-e2e: | ||
name: mobile-cmt-${{ matrix.server.version }} | ||
uses: ./.github/workflows/e2e-detox-template.yml | ||
needs: | ||
- update-initial-status | ||
strategy: | ||
fail-fast: false | ||
matrix: ${{ fromJson(inputs.CMT_MATRIX) }} | ||
secrets: inherit | ||
with: | ||
run-ios-tests: true | ||
run-android-tests: false | ||
run-type: "RELEASE" | ||
MM_TEST_SERVER_URL: ${{ matrix.server.url }} | ||
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }} | ||
|
||
update-final-status: | ||
runs-on: ubuntu-22.04 | ||
needs: | ||
- calculate-commit-hash | ||
- detox-e2e | ||
steps: | ||
- uses: mattermost/actions/delivery/update-commit-status@main | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
repository_full_name: ${{ github.repository }} | ||
commit_sha: ${{ needs.calculate-commit-hash.outputs.MOBILE_SHA }} | ||
context: e2e/compatibility-matrix-testing | ||
description: Compatibility Matrix Testing for ${{ inputs.MOBILE_VERSION }} version | ||
status: ${{ needs.detox-e2e.outputs.STATUS }} | ||
target_url: ${{ needs.detox-e2e.outputs.TARGET_URL }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
name: Detox E2E Tests PR | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
types: | ||
- labeled | ||
|
||
jobs: | ||
update-initial-status: | ||
runs-on: ubuntu-22.04 | ||
if: contains(github.event.pull_request.labels.*.name, 'E2E iOS tests for PR') | ||
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/detox-tests | ||
description: Detox tests for mattermost mobile app have started ... | ||
status: pending | ||
|
||
run-ios-tests-on-pr: | ||
name: iOS Mobile Tests on PR | ||
uses: ./.github/workflows/e2e-detox-template.yml | ||
needs: | ||
- update-initial-status | ||
with: | ||
run-ios-tests: true | ||
run-android-tests: false | ||
run-type: "PR" | ||
MOBILE_VERSION: ${{ github.event.pull_request.head.sha }} | ||
secrets: inherit | ||
|
||
update-final-status: | ||
runs-on: ubuntu-22.04 | ||
needs: | ||
- run-ios-tests-on-pr | ||
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/detox-tests | ||
description: Completed with ${{ needs.run-ios-tests-on-pr.outputs.FAILURES }} failures | ||
status: ${{ needs.run-ios-tests-on-pr.outputs.STATUS }} | ||
target_url: ${{ needs.run-ios-tests-on-pr.outputs.TARGET_URL }} | ||
|
||
e2e-remove-label: | ||
runs-on: ubuntu-22.04 | ||
needs: | ||
- run-ios-tests-on-pr | ||
steps: | ||
- name: e2e/remove-label-from-pr | ||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | ||
continue-on-error: true # Label might have been removed manually | ||
with: | ||
script: | | ||
const iosLabel = 'E2E iOS tests for PR'; | ||
const androidLabel = 'E2E Android tests for PR'; | ||
const labels = context.payload.pull_request.labels.map(label => label.name); | ||
if (labels.includes(iosLabel)) { | ||
github.rest.issues.removeLabel({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
name: iosLabel, | ||
}); | ||
} | ||
if (labels.includes(androidLabel)) { | ||
github.rest.issues.removeLabel({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
name: androidLabel, | ||
}); | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
name: Detox E2E Tests Release | ||
|
||
on: | ||
push: | ||
branches: | ||
- release-* | ||
|
||
jobs: | ||
update-initial-status: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: mattermost/actions/delivery/update-commit-status@main | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
repository_full_name: ${{ github.repository }} | ||
commit_sha: ${{ github.sha }} | ||
context: e2e/detox-tests | ||
description: Detox tests for mattermost mobile app have started ... | ||
status: pending | ||
|
||
run-ios-tests-on-release: | ||
name: iOS Mobile Tests on Release | ||
uses: ./.github/workflows/e2e-detox-template.yml | ||
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-') }} | ||
with: | ||
run-ios-tests: true | ||
run-android-tests: false | ||
run-type: "RELEASE" | ||
MOBILE_VERSION: ${{ github.ref }} | ||
secrets: inherit | ||
|
||
update-final-status: | ||
runs-on: ubuntu-22.04 | ||
needs: | ||
- run-ios-tests-on-release | ||
steps: | ||
- uses: mattermost/actions/delivery/update-commit-status@main | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
repository_full_name: ${{ github.repository }} | ||
commit_sha: ${{ github.sha }} | ||
context: e2e/detox-tests | ||
description: Completed with ${{ needs.run-ios-tests-on-release.outputs.FAILURES }} failures | ||
status: ${{ needs.run-ios-tests-on-release.outputs.STATUS }} | ||
target_url: ${{ needs.run-ios-tests-on-release.outputs.TARGET_URL }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
name: Detox E2E Tests (Scheduled) | ||
|
||
on: | ||
schedule: | ||
- cron: "0 0 * * *" # every day at midnight | ||
|
||
jobs: | ||
update-initial-status: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: mattermost/actions/delivery/update-commit-status@main | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
repository_full_name: ${{ github.repository }} | ||
commit_sha: ${{ github.sha }} | ||
context: e2e/detox-tests | ||
description: Detox tests for mattermost mobile app have started ... | ||
status: pending | ||
|
||
run-ios-tests-on-main-scheduled: | ||
name: iOS Mobile Tests on Main (Scheduled) | ||
uses: ./.github/workflows/e2e-detox-template.yml | ||
with: | ||
run-ios-tests: true | ||
run-android-tests: false | ||
run-type: "MAIN" | ||
MOBILE_VERSION: ${{ github.ref }} | ||
secrets: inherit | ||
|
||
update-final-status: | ||
runs-on: ubuntu-22.04 | ||
needs: | ||
- run-ios-tests-on-main-scheduled | ||
steps: | ||
- uses: mattermost/actions/delivery/update-commit-status@main | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
with: | ||
repository_full_name: ${{ github.repository }} | ||
commit_sha: ${{ github.sha }} | ||
context: e2e/detox-tests | ||
description: Completed with ${{ needs.run-ios-tests-on-main-scheduled.outputs.FAILURES }} failures | ||
status: ${{ needs.run-ios-tests-on-main-scheduled.outputs.STATUS }} | ||
target_url: ${{ needs.run-ios-tests-on-main-scheduled.outputs.TARGET_URL }} |
Oops, something went wrong.