-
Notifications
You must be signed in to change notification settings - Fork 23
146 lines (127 loc) · 5.35 KB
/
integration_tests.yml
File metadata and controls
146 lines (127 loc) · 5.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: uipath - Integration Tests
on:
pull_request:
branches: [ main ]
permissions:
contents: read
pull-requests: write
actions: read
jobs:
detect-changed-packages:
runs-on: ubuntu-latest
outputs:
packages: ${{ steps.detect.outputs.packages }}
count: ${{ steps.detect.outputs.count }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Detect changed packages
id: detect
env:
GITHUB_EVENT_NAME: ${{ github.event_name }}
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: python .github/scripts/detect_changed_packages.py
discover-testcases:
needs: [detect-changed-packages]
if: needs.detect-changed-packages.outputs.count > 0
runs-on: ubuntu-latest
outputs:
testcases: ${{ steps.discover.outputs.testcases }}
count: ${{ steps.discover.outputs.count }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Discover testcases
id: discover
env:
PACKAGES: ${{ needs.detect-changed-packages.outputs.packages }}
run: |
# Discover testcases from all affected packages
all_testcases="[]"
for package in $(echo "$PACKAGES" | jq -r '.[]'); do
testcases_dir="packages/$package/testcases"
if [ -d "$testcases_dir" ]; then
testcase_dirs=$(find "$testcases_dir" -maxdepth 1 -type d -name "*-*" | sed "s|$testcases_dir/||" | sort)
if [ -n "$testcase_dirs" ]; then
echo "Found testcases in $package:"
echo "$testcase_dirs"
# Add as package/testcase entries
package_testcases=$(echo "$testcase_dirs" | jq -R -c --arg pkg "$package" '{package: $pkg, testcase: .}')
all_testcases=$(echo "$all_testcases" | jq -c --argjson new "[$( echo "$package_testcases" | paste -sd, )]" '. + $new')
fi
fi
done
echo "All testcases: $all_testcases"
count=$(echo "$all_testcases" | jq 'length')
echo "testcases=$all_testcases" >> $GITHUB_OUTPUT
echo "count=$count" >> $GITHUB_OUTPUT
integration-tests:
needs: [discover-testcases]
if: needs.discover-testcases.outputs.count > 0
runs-on: ubuntu-latest
container:
image: ghcr.io/astral-sh/uv:python3.12-bookworm
env:
UIPATH_JOB_KEY: "3a03d5cb-fa21-4021-894d-a8e2eda0afe0"
UIPATH_TRACING_ENABLED: false
strategy:
fail-fast: false
matrix:
testcase: ${{ fromJson(needs.discover-testcases.outputs.testcases) }}
environment: [alpha, cloud, staging]
name: "${{ matrix.testcase.testcase }} / ${{ matrix.environment }}"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
working-directory: packages/${{ matrix.testcase.package }}
run: uv sync
- name: Run testcase
env:
CLIENT_ID: ${{ matrix.environment == 'alpha' && secrets.ALPHA_TEST_CLIENT_ID || matrix.environment == 'staging' && secrets.STAGING_TEST_CLIENT_ID || matrix.environment == 'cloud' && secrets.CLOUD_TEST_CLIENT_ID }}
CLIENT_SECRET: ${{ matrix.environment == 'alpha' && secrets.ALPHA_TEST_CLIENT_SECRET || matrix.environment == 'staging' && secrets.STAGING_TEST_CLIENT_SECRET || matrix.environment == 'cloud' && secrets.CLOUD_TEST_CLIENT_SECRET }}
BASE_URL: ${{ matrix.environment == 'alpha' && secrets.ALPHA_BASE_URL || matrix.environment == 'staging' && secrets.STAGING_BASE_URL || matrix.environment == 'cloud' && secrets.CLOUD_BASE_URL }}
USE_AZURE_CHAT: ${{ matrix.use_azure_chat }}
# App Insights for telemetry testing
TELEMETRY_CONNECTION_STRING: ${{ secrets.APPLICATIONINSIGHTS_CONNECTION_STRING }}
APP_INSIGHTS_APP_ID: ${{ secrets.APP_INSIGHTS_APP_ID }}
APP_INSIGHTS_API_KEY: ${{ secrets.APP_INSIGHTS_API_KEY }}
working-directory: packages/${{ matrix.testcase.package }}/testcases/${{ matrix.testcase.testcase }}
run: |
# If any errors occur execution will stop with exit code
set -e
echo "Running testcase: ${{ matrix.testcase.testcase }}"
echo "Package: ${{ matrix.testcase.package }}"
echo "Environment: ${{ matrix.environment }}"
echo "Working directory: $(pwd)"
# Execute the testcase run script directly
bash run.sh
bash ../common/validate_output.sh
summarize-results:
needs: [detect-changed-packages, discover-testcases, integration-tests]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check integration tests status
run: |
if [[ "${{ needs.detect-changed-packages.outputs.count }}" == "0" ]]; then
echo "No packages changed - skipping integration tests"
exit 0
fi
if [[ "${{ needs.discover-testcases.outputs.count }}" == "0" ]]; then
echo "No testcases found for changed packages - skipping"
exit 0
fi
if [[ "${{ needs.integration-tests.result }}" == "success" ]]; then
echo "All integration tests passed"
else
echo "Some integration tests failed"
exit 1
fi