test: mitmproxy + low bandwidth + automated QA using detox #628
Workflow file for this run
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
# Can be used to run Detox E2E tests on pull requests for the Mattermost mobile app with low bandwidth | |
# by using 'E2E iOS tests for PR (LBW 1)' instead. | |
name: Detox E2E Tests PR | |
on: | |
pull_request: | |
branches: | |
- main | |
types: | |
- labeled | |
jobs: | |
check-label: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check for E2E iOS tests label | |
id: check-label | |
run: | | |
echo "${{ toJson(github.event.pull_request.labels.*.name) }}" | |
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 | |
build-ios-simulator: | |
runs-on: macos-14 | |
needs: | |
- update-initial-status | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Prepare iOS Build | |
uses: ./.github/actions/prepare-ios-build | |
- name: Build iOS Simulator | |
env: | |
TAG: "${{ github.event.pull_request.head.sha }}" | |
AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_BETA_AWS_ACCESS_KEY_ID }}" | |
AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_BETA_AWS_SECRET_ACCESS_KEY }}" | |
GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}" | |
run: bundle exec fastlane ios simulator --env ios.simulator | |
working-directory: ./fastlane | |
- name: Upload iOS Simulator Build | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | |
with: | |
name: ios-build-simulator-${{ github.run_id }} | |
path: Mattermost-simulator-x86_64.app.zip | |
run-ios-tests-on-pr: | |
name: iOS Mobile Tests on PR | |
uses: ./.github/workflows/e2e-detox-template.yml | |
needs: | |
- build-ios-simulator | |
with: | |
run-ios-tests: true | |
run-type: "PR" | |
MOBILE_VERSION: ${{ github.event.pull_request.head.sha }} | |
low_bandwidth_mode: ${{ contains(github.event.pull_request.labels.*.name, '(LBW 1)') && true || false }} | |
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'; | |
context.payload.pull_request.labels.forEach(label => { | |
if (label.name.includes(iosLabel)) { | |
github.rest.issues.removeLabel({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
name: label.name, | |
}); | |
} | |
}); |