name: Integration tests on: schedule: - cron: "0 2 * * 1-5" workflow_dispatch: permissions: {} jobs: integration_tests: name: Integration Tests # HealthChat: skip in this fork. It runs nightly Mon-Fri and fails at checkout, and it is the one # job that still calls out to Element's Codecov — its upload guard is true on schedule events, so # it POSTs slug/branch/SHA every night with continue-on-error hiding the failure. Fixing it would # need a real healthchat.ch test account and three new secrets, and would still not work: # HealthChatAppSettingsHook sets allowOtherAccountProviders: false, hiding the change-server UI # these tests drive. Gated rather than deleted so the file keeps rebasing cleanly. if: github.repository == 'element-hq/element-x-ios' 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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Setup environment run: source ci_scripts/ci_common.sh && setup_github_actions_environment - name: Run tests run: swift run -q tools ci 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: Archive artifacts uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 # We only care about artefacts if the tests fail if: failure() with: name: Results path: | test_output/IntegrationTests.xcresult.zip test_output/console* retention-days: 7 if-no-files-found: ignore - name: Upload coverage to Codecov # Skip if not successful and in forks if: ${{ success() && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: report_type: coverage files: test_output/integration-cobertura.xml disable_search: true fail_ci_if_error: true token: ${{ secrets.CODECOV_TOKEN }} flags: integrationtests - name: Upload test results to Codecov # Skip if cancelled and in forks if: ${{ !cancelled() && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 continue-on-error: true with: report_type: test_results files: test_output/integration-junit.xml disable_search: true fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} flags: integrationtests