Files
letro-ios/.github/workflows/ui_tests.yml
Doug 834f62503e Fix the UI tests. (#4085)
* Compile errors 😬

* Update server selection snapshots.

The default footer string has changed.

* Remove the TemplateScreen UI tests.

We use preview tests for snapshots now, UI tests are for flow coordinators.

* Add the same looping on the OIDC UI test (but disable the test in the end).

* Run UI tests separately for iPhone and iPad.

GitHub runners don't seem to have enough memory to handle 2 simulators at once.
2025-05-02 12:47:31 +01:00

88 lines
3.0 KiB
YAML

name: UI Tests
on:
workflow_dispatch:
inputs:
test_name:
description: 'If a test name is provided, only that test will be run. Otherwise, all tests will be run. Use the format "ClassName/testName" to run a single test.'
required: false
schedule:
- cron: '0 0,12 * * 1-5'
jobs:
tests:
name: Tests
runs-on: macos-15
strategy:
matrix:
device: [iPhone, iPad]
concurrency:
# Only allow a single run of this workflow on each branch, automatically cancelling older runs.
group: ${{ format('ui-tests-{0}-{1}', github.ref, matrix.device) }}
cancel-in-progress: true
steps:
# While fastlane has its own way of selecting Xcode, will only work inside fastlane, so we need to set it globally to allow other actions like xcresultparser to use the same Xcode version.
- name: Select Xcode 16.3
run: sudo xcode-select -s /Applications/Xcode_16.3.app
- uses: nschloe/action-cached-lfs-checkout@f46300cd8952454b9f0a21a3d133d4bd5684cfc2 #v1.2.3
- uses: actions/cache@v4
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Setup environment
run: source ci_scripts/ci_common.sh && setup_github_actions_environment
- name: Run tests
run: |
if [[ -z "${{ github.event.inputs.test_name }}" ]]; then
bundle exec fastlane ui_tests device:${{ matrix.device }}
else
bundle exec fastlane ui_tests device:${{ matrix.device }} test_name:${{ github.event.inputs.test_name }}
fi
- name: Zip results # for faster upload
if: failure()
working-directory: fastlane/test_output
run: zip -r UITests.xcresult.zip UITests.xcresult
- name: Archive artifacts
uses: actions/upload-artifact@v4
if: failure()
with:
name: ${{ matrix.device }}
path: fastlane/test_output/UITests.xcresult.zip
retention-days: 7
if-no-files-found: ignore
- name: Collect coverage
run: xcresultparser -q -o cobertura -t ElementX -p $(pwd) fastlane/test_output/UITests.xcresult > fastlane/test_output/ui-cobertura.xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # v3.1.6
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
flags: uitests
version: v0.7.3
- name: Collect test results
if: ${{ !cancelled() }}
run: xcresultparser -q -o junit -p $(pwd) fastlane/test_output/UITests.xcresult > fastlane/test_output/ui-junit.xml
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 #v1.1.0
continue-on-error: true
with:
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
flags: uitests