@@ -196,9 +196,27 @@ jobs:
196196
197197 - id : set-matrix
198198 run : |
199- modules=$(ls -d smoke-tests/apps/* | sed 's/\/$//' | sed 's/\//:/g' | sed 's/^/:/')
200- inner_json=$(echo $modules | xargs echo | sed 's/ /","/g')
201- echo "matrix={\"module\":[\"$inner_json\"]}" >> $GITHUB_OUTPUT
199+ # Find all smoke test files and create matrix entries
200+ tests=$(
201+ for module_dir in smoke-tests/apps/*/; do
202+ module=$(echo "$module_dir" | sed 's|/$||' | sed 's|/|:|g')
203+ find "${module_dir}src/smokeTest/java" -name "*Test.java" -type f | \
204+ sed "s|${module_dir}src/smokeTest/java/||" | \
205+ sed 's|/|.|g' | \
206+ sed 's|\.java$||' | \
207+ sed "s|^|${module}:|"
208+ done
209+ )
210+
211+ if [ -n "$tests" ]; then
212+ # Convert to JSON array
213+ json_array=$(echo "$tests" | sed 's/.*/"&"/' | tr '\n' ',' | sed 's/,$//')
214+ echo "matrix={\"test\":[$json_array]}" >> $GITHUB_OUTPUT
215+ echo "Generated matrix with $(echo "$tests" | wc -l) test entries"
216+ else
217+ echo "matrix={\"test\":[]}" >> $GITHUB_OUTPUT
218+ echo "No test entries found"
219+ fi
202220
203221 smoke-test :
204222 needs : setup-smoke-test-matrix
@@ -225,13 +243,29 @@ jobs:
225243 - name : Setup Gradle
226244 uses : gradle/actions/setup-gradle@v4
227245
246+ - name : Extract module and test class
247+ run : |
248+ # Split the test entry into module and test class
249+ # Format is ":smoke-tests:apps:ModuleName:com.package.TestClass"
250+ test_entry="${{ matrix.test }}"
251+ # Extract everything before the last colon as the module
252+ module="${test_entry%:*}"
253+ # Extract everything after the last colon as the test class
254+ test_class="${test_entry##*:}"
255+ echo "MODULE=${module}" >> $GITHUB_ENV
256+ echo "TEST_CLASS=${test_class}" >> $GITHUB_ENV
257+
228258 - name : Test
229- run : ./gradlew ${{ matrix.module }}:smokeTest
259+ run : ./gradlew ${{ env.MODULE }}:smokeTest --tests "${{ env.TEST_CLASS }}"
230260
231261 - name : Create unique artifact name
232262 if : failure()
233263 run : |
234- echo "UPLOAD_ARTIFACT_NAME=${{ matrix.module }}" | sed 's/:/-/g' >> $GITHUB_ENV
264+ # Create a unique name based on module and test class
265+ artifact_name="${{ env.MODULE }}:${{ env.TEST_CLASS }}"
266+ # Replace colons and dots with hyphens for valid artifact names
267+ artifact_name=$(echo "$artifact_name" | sed 's/[:.]/\-/g')
268+ echo "UPLOAD_ARTIFACT_NAME=$artifact_name" >> $GITHUB_ENV
235269
236270 - name : Upload smoke test reports
237271 uses : actions/upload-artifact@v4
0 commit comments