Skip to content

Integration tests #2215

Integration tests

Integration tests #2215

name: Integration tests
on:
schedule:
- cron: '0 2 * * 1-5'
workflow_dispatch:
jobs:
integration_tests:
name: Integration Tests
runs-on: macos-15
concurrency:
# Only allow a single run of this workflow on each branch, automatically cancelling older runs.
group: integration-tests-${{ github.head_ref }}
cancel-in-progress: false
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: actions/checkout@v4
- 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: Delete old log files
run: find '/Users/Shared' -name 'console*' -delete
- name: Run tests
run: bundle exec fastlane integration_tests
env:
INTEGRATION_TESTS_HOST: ${{ secrets.INTEGRATION_TESTS_HOST }}
INTEGRATION_TESTS_USERNAME: ${{ secrets.INTEGRATION_TESTS_USERNAME }}
INTEGRATION_TESTS_PASSWORD: ${{ secrets.INTEGRATION_TESTS_PASSWORD }}
- name: Check logs are set to the `trace` level
run: (grep ' TRACE ' /Users/Shared -qR)
- name: Check logs don't contain private messages
run: "! grep 'Go down in flames' /Users/Shared -R"
- name: Zip results # for faster upload
if: failure()
working-directory: fastlane/test_output
run: zip -r IntegrationTests.xcresult.zip IntegrationTests.xcresult
- name: Archive artifacts
uses: actions/upload-artifact@v4
if: failure()
with:
name: Results
path: fastlane/test_output/IntegrationTests.xcresult.zip
retention-days: 7
if-no-files-found: ignore
- name: Archive raw log file
uses: actions/upload-artifact@v4
if: always()
with:
name: raw.log
path: ~/Library/Logs/scan/IntegrationTests-IntegrationTests.log
retention-days: 2
if-no-files-found: ignore
- name: Collect coverage
run: xcresultparser -q -o cobertura -t ElementX -p $(pwd) fastlane/test_output/IntegrationTests.xcresult > fastlane/test_output/integration-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: integrationtests
version: v0.7.3
- name: Collect test results
if: ${{ !cancelled() }}
run: xcresultparser -q -o junit -p $(pwd) fastlane/test_output/IntegrationTests.xcresult > fastlane/test_output/integration-junit.xml
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
continue-on-error: true
with:
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
flags: integrationtests