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: xcode-27 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@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 # 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@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 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@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 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