name: Integration tests on: schedule: - cron: '0 2 * * 1-5' workflow_dispatch: jobs: integration_tests: name: Integration Tests runs-on: macos-26 timeout-minutes: 45 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: - uses: actions/checkout@v6 - uses: actions/cache@v5 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@v6 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@v6 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: report_type: coverage 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/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # v3.1.6 continue-on-error: true with: report_type: test_results fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} flags: integrationtests