feat: allow to emit end exchange event from client for stopping response #1932
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PR Checks | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| types: | |
| - opened # When PR is first created | |
| - synchronize # When new commits are pushed to PR branch | |
| - reopened # When a closed PR is reopened | |
| workflow_dispatch: # Allows manual trigger from GitHub UI | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| test-and-build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| - name: Install Dependencies | |
| run: npm ci | |
| - name: Typecheck | |
| run: npm run typecheck | |
| - name: Run SDK Tests | |
| run: npm run test:coverage -- --run | |
| - name: Upload unit test coverage | |
| uses: actions/upload-artifact@v4 | |
| if: github.base_ref == 'main' | |
| with: | |
| name: unit-coverage | |
| path: coverage/lcov.info | |
| - name: Build Project | |
| run: npm run build | |
| - name: Set Integration Test Configuration | |
| if: github.base_ref == 'main' | |
| id: config | |
| run: | | |
| # Configuration for main branch | |
| echo "env_name=development" >> $GITHUB_OUTPUT | |
| echo "base_url=${{ secrets.UIPATH_BASE_URL_DEV || secrets.UIPATH_BASE_URL }}" >> $GITHUB_OUTPUT | |
| echo "org_name=${{ secrets.UIPATH_ORG_NAME_DEV || secrets.UIPATH_ORG_NAME }}" >> $GITHUB_OUTPUT | |
| echo "tenant_name=${{ secrets.UIPATH_TENANT_NAME_DEV || secrets.UIPATH_TENANT_NAME }}" >> $GITHUB_OUTPUT | |
| echo "secret=${{ secrets.UIPATH_SECRET_DEV || secrets.UIPATH_SECRET }}" >> $GITHUB_OUTPUT | |
| echo "integration_test_folder_id=${{ secrets.UIPATH_INTEGRATION_TEST_FOLDER_DEV || secrets.UIPATH_INTEGRATION_TEST_FOLDER }}" >> $GITHUB_OUTPUT | |
| echo "integration_test_folder_key=${{ secrets.UIPATH_INTEGRATION_TEST_FOLDER_KEY_DEV || secrets.UIPATH_INTEGRATION_TEST_FOLDER_KEY }}" >> $GITHUB_OUTPUT | |
| echo "integration_test_folder_path=${{ secrets.UIPATH_INTEGRATION_TEST_FOLDER_PATH_DEV || secrets.UIPATH_INTEGRATION_TEST_FOLDER_PATH }}" >> $GITHUB_OUTPUT | |
| echo "orchestrator_test_process_key=${{ secrets.UIPATH_INTEGRATION_TEST_PROCESS_KEY_DEV || secrets.UIPATH_INTEGRATION_TEST_PROCESS_KEY }}" >> $GITHUB_OUTPUT | |
| echo "data_fabric_test_entity_id=${{ secrets.UIPATH_DATA_FABRIC_TEST_ENTITY_ID_DEV || secrets.UIPATH_DATA_FABRIC_TEST_ENTITY_ID }}" >> $GITHUB_OUTPUT | |
| echo "data_fabric_test_choiceset_id=${{ secrets.UIPATH_DATA_FABRIC_TEST_CHOICESET_ID_DEV || secrets.UIPATH_DATA_FABRIC_TEST_CHOICESET_ID }}" >> $GITHUB_OUTPUT | |
| echo "data_fabric_test_attachment_field=${{ secrets.UIPATH_DATA_FABRIC_TEST_ATTACHMENT_FIELD_DEV || secrets.UIPATH_DATA_FABRIC_TEST_ATTACHMENT_FIELD }}" >> $GITHUB_OUTPUT | |
| echo "orchestrator_attachment_id=${{ secrets.UIPATH_ORCHESTRATOR_ATTACHMENT_ID_DEV || secrets.UIPATH_ORCHESTRATOR_ATTACHMENT_ID }}" >> $GITHUB_OUTPUT | |
| echo "jobs_test_folder_id=${{ secrets.UIPATH_JOBS_TEST_FOLDER_ID_DEV || secrets.UIPATH_JOBS_TEST_FOLDER_ID }}" >> $GITHUB_OUTPUT | |
| echo "traces_test_trace_id=${{ secrets.UIPATH_TRACES_TEST_TRACE_ID_DEV || secrets.UIPATH_TRACES_TEST_TRACE_ID }}" >> $GITHUB_OUTPUT | |
| - name: Create Integration Test Configuration | |
| if: github.base_ref == 'main' | |
| run: | | |
| cat > tests/.env.integration << EOF | |
| # Auto-generated configuration for development environment | |
| # Target branch: ${{ github.base_ref }} | |
| UIPATH_BASE_URL=${{ steps.config.outputs.base_url }} | |
| UIPATH_ORG_NAME=${{ steps.config.outputs.org_name }} | |
| UIPATH_TENANT_NAME=${{ steps.config.outputs.tenant_name }} | |
| UIPATH_SECRET=${{ steps.config.outputs.secret }} | |
| INTEGRATION_TEST_TIMEOUT=30000 | |
| INTEGRATION_TEST_SKIP_CLEANUP=false | |
| INTEGRATION_TEST_FOLDER_ID=${{ steps.config.outputs.integration_test_folder_id }} | |
| INTEGRATION_TEST_FOLDER_KEY=${{ steps.config.outputs.integration_test_folder_key }} | |
| INTEGRATION_TEST_FOLDER_PATH=${{ steps.config.outputs.integration_test_folder_path }} | |
| DATA_FABRIC_TEST_ENTITY_ID=${{ steps.config.outputs.data_fabric_test_entity_id }} | |
| DATA_FABRIC_TEST_CHOICESET_ID=${{ steps.config.outputs.data_fabric_test_choiceset_id }} | |
| DATA_FABRIC_TEST_ATTACHMENT_FIELD=${{ steps.config.outputs.data_fabric_test_attachment_field }} | |
| ORCHESTRATOR_TEST_PROCESS_KEY=${{ steps.config.outputs.orchestrator_test_process_key }} | |
| ORCHESTRATOR_ATTACHMENT_ID=${{ steps.config.outputs.orchestrator_attachment_id }} | |
| JOBS_TEST_FOLDER_ID=${{ steps.config.outputs.jobs_test_folder_id }} | |
| TRACES_TEST_TRACE_ID=${{ steps.config.outputs.traces_test_trace_id }} | |
| EOF | |
| - name: Run Integration Tests | |
| if: github.base_ref == 'main' | |
| run: npm run test:integration:coverage -- --run | |
| - name: Upload integration test coverage | |
| uses: actions/upload-artifact@v4 | |
| if: github.base_ref == 'main' | |
| with: | |
| name: integration-coverage | |
| path: coverage-integration/lcov.info | |
| - name: SonarCloud Scan | |
| if: github.base_ref == 'main' && github.event.pull_request.head.repo.fork == false | |
| uses: SonarSource/sonarqube-scan-action@0303d6b62e310685c0e34d0b9cde218036885c4d # v5.0.0 | |
| env: | |
| SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
| - name: Generate Summary | |
| if: success() | |
| run: | | |
| echo "## ✅ PR Checks Passed" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Target Branch:** \`${{ github.base_ref }}\`" >> $GITHUB_STEP_SUMMARY | |
| if [ "${{ github.base_ref }}" == "main" ]; then | |
| echo "**Environment:** \`development\`" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "### Completed Checks:" >> $GITHUB_STEP_SUMMARY | |
| echo "- ✅ Dependencies installed successfully" >> $GITHUB_STEP_SUMMARY | |
| echo "- ✅ Typecheck passed" >> $GITHUB_STEP_SUMMARY | |
| echo "- ✅ SDK tests passed" >> $GITHUB_STEP_SUMMARY | |
| echo "- ✅ Build completed successfully" >> $GITHUB_STEP_SUMMARY | |
| if [ "${{ github.base_ref }}" == "main" ]; then | |
| echo "- ✅ All integration tests passed" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Your pull request is ready for review!" >> $GITHUB_STEP_SUMMARY | |
| - name: Generate Failure Summary | |
| if: failure() | |
| run: | | |
| echo "## ❌ PR Checks Failed" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Target Branch:** \`${{ github.base_ref }}\`" >> $GITHUB_STEP_SUMMARY | |
| if [ "${{ github.base_ref }}" == "main" ]; then | |
| echo "**Environment:** \`development\`" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Please review the logs above to identify and fix the issues." >> $GITHUB_STEP_SUMMARY | |
| test-packages: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package: | |
| - telemetry | |
| defaults: | |
| run: | |
| working-directory: packages/${{ matrix.package }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: packages/${{ matrix.package }}/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run tests | |
| run: npm test | |