@@ -224,90 +224,33 @@ jobs:
224224 destination_dir : .
225225 force_orphan : true
226226
227- - name : Analyze test changes
228- id : analyze_tests
227+ - name : Count new tests
228+ id : count_tests
229229 run : |
230230 git fetch origin main:main
231- added_tests=()
232- deleted_tests=()
233- skipped_tests=()
234- base_skipped_tests=()
235-
236- # Function to extract test names from a file
237- extract_test_names() {
238- local file=$1
239- local ref=$2
240- if git show "$ref:$file" > /dev/null 2>&1; then
241- git show "$ref:$file" | grep -E "test\([\'\"].*[\'\"]" | sed -E "s/.*test\(['\"]([^'\"]+)['\"].*/\1/"
242- fi
243- }
244-
245- # Function to extract skipped test names from a file
246- extract_skipped_tests() {
247- local file=$1
248- local ref=$2
249- if git show "$ref:$file" > /dev/null 2>&1; then
250- git show "$ref:$file" | grep -E "test\.skip\([\'\"].*[\'\"]" | sed -E "s/.*test\.skip\(['\"]([^'\"]+)['\"].*/\1/"
251- fi
252- }
253-
254- # Get skipped tests from both base and current branches
255- for file in $(git ls-files | grep -E '^tests/suites/.*\.(spec|test)\.(ts|tsx|js|jsx)$'); do
256- # Get skipped tests from base branch
257- while IFS= read -r test; do
258- if [[ -n "$test" ]]; then
259- base_skipped_tests+=("$test")
260- fi
261- done < <(extract_skipped_tests "$file" main)
262-
263- # Get skipped tests from current branch
264- while IFS= read -r test; do
265- if [[ -n "$test" ]]; then
266- if ! printf '%s\n' "${base_skipped_tests[@]}" | grep -Fxq "$test"; then
267- skipped_tests+=("$test")
268- fi
269- fi
270- done < <(extract_skipped_tests "$file" HEAD)
271- done
231+ new_tests=0
272232
273233 # Get list of changed test files
274234 for file in $(git diff --name-only main...HEAD | grep -E '^tests/suites/.*\.(spec|test)\.(ts|tsx|js|jsx)$'); do
275- # Get test names from both versions
276- current_tests=$(extract_test_names "$file" HEAD)
277- base_tests=$(extract_test_names "$file" main)
278-
279- # Find added tests (in current but not in base)
280- while IFS= read -r test; do
281- if [[ -n "$test" ]]; then
282- if ! echo "$base_tests" | grep -Fxq "$test"; then
283- # Only add if it's not a skipped test
284- if ! printf '%s\n' "${skipped_tests[@]}" | grep -Fxq "$test"; then
285- added_tests+=("$test")
286- fi
287- fi
288- fi
289- done <<< "$current_tests"
290-
291- # Find deleted tests (in base but not in current)
292- while IFS= read -r test; do
293- if [[ -n "$test" ]]; then
294- if ! echo "$current_tests" | grep -Fxq "$test"; then
295- # Only count as deleted if it wasn't skipped in base
296- if ! printf '%s\n' "${base_skipped_tests[@]}" | grep -Fxq "$test"; then
297- deleted_tests+=("$test")
298- fi
299- fi
300- fi
301- done <<< "$base_tests"
235+ # Count tests in current version
236+ if git show HEAD:"$file" > /dev/null 2>&1; then
237+ current_tests=$(git show HEAD:"$file" | grep -E "test\([\'\"]" | wc -l)
238+ else
239+ current_tests=0
240+ fi
241+
242+ # Count tests in main version
243+ if git show main:"$file" > /dev/null 2>&1; then
244+ base_tests=$(git show main:"$file" | grep -E "test\([\'\"]" | wc -l)
245+ else
246+ base_tests=0
247+ fi
248+
249+ # Add difference to total
250+ ((new_tests += current_tests - base_tests))
302251 done
303252
304- # Create JSON output
305- echo "added_tests=$(IFS=,; echo "${added_tests[*]}")" >> $GITHUB_OUTPUT
306- echo "deleted_tests=$(IFS=,; echo "${deleted_tests[*]}")" >> $GITHUB_OUTPUT
307- echo "skipped_tests=$(IFS=,; echo "${skipped_tests[*]}")" >> $GITHUB_OUTPUT
308- echo "added_count=${#added_tests[@]}" >> $GITHUB_OUTPUT
309- echo "deleted_count=${#deleted_tests[@]}" >> $GITHUB_OUTPUT
310- echo "skipped_count=${#skipped_tests[@]}" >> $GITHUB_OUTPUT
253+ echo "new_tests=$new_tests" >> $GITHUB_OUTPUT
311254
312255 - name : Update PR description
313256 uses : actions/github-script@v6
@@ -350,39 +293,20 @@ jobs:
350293 };
351294
352295 const bundleStatus = percent === 'N/A' ? '⚠️' :
353- parseFloat(percent) > 0 ? '🔺' :
354- parseFloat(percent) < 0 ? '🔽' : '✅';
355-
356- const addedTests = '${{ steps.analyze_tests.outputs.added_tests }}'.split(',').filter(Boolean);
357- const deletedTests = '${{ steps.analyze_tests.outputs.deleted_tests }}'.split(',').filter(Boolean);
358- const skippedTests = '${{ steps.analyze_tests.outputs.skipped_tests }}'.split(',').filter(Boolean);
359-
360- const addedCount = parseInt('${{ steps.analyze_tests.outputs.added_count }}');
361- const deletedCount = parseInt('${{ steps.analyze_tests.outputs.deleted_count }}');
362- const skippedCount = parseInt('${{ steps.analyze_tests.outputs.skipped_count }}');
296+ parseFloat(percent) > 0 ? '🔺' :
297+ parseFloat(percent) < 0 ? '🔽' : '✅';
363298
364- const changesText = [
365- addedCount > 0 ? `✨${addedCount}` : '',
366- deletedCount > 0 ? `🗑️${deletedCount}` : '',
367- skippedCount > 0 ? `⏭️${skippedCount}` : ''
368- ].filter(Boolean).join(' ') || '➖';
299+ const newTests = parseInt('${{ steps.count_tests.outputs.new_tests }}');
300+ const testsStatus = newTests > 0 ? '✨' : '➖';
369301
370302 const ciSection = `## CI Results
371303
372304 ### Test Status: <span style="color: ${statusColor};">${status}</span>
373305 📊 [Full Report](${reportUrl})
374306
375- | Total | Passed | Failed | Flaky | Changes |
376- |:-----:|:------:|:------:|:-----:|:-------:|
377- | ${testResults.total} | ${testResults.passed} | ${testResults.failed} | ${testResults.flaky} | ${changesText} |
378-
379- <details>
380- <summary>📋 Test Changes Details</summary>
381-
382- ${addedCount > 0 ? `\n✨ **Added Tests (${addedCount}):**\n${addedTests.map(t => `- ${t}`).join('\n')}` : ''}
383- ${deletedCount > 0 ? `\n🗑️ **Deleted Tests (${deletedCount}):**\n${deletedTests.map(t => `- ${t}`).join('\n')}` : ''}
384- ${skippedCount > 0 ? `\n⏭️ **Skipped Tests (${skippedCount}):**\n${skippedTests.map(t => `- ${t}`).join('\n')}` : ''}
385- </details>
307+ | Total | Passed | Failed | Flaky | Skipped | New Tests |
308+ |:-----:|:------:|:------:|:-----:|:-------:|:---------:|
309+ | ${testResults.total} | ${testResults.passed} | ${testResults.failed} | ${testResults.flaky} | ${testResults.skipped} | ${testsStatus} ${newTests} |
386310
387311 ### Bundle Size: ${bundleStatus}
388312 Current: ${formatSize(currentSize)} | Main: ${formatSize(mainSize)}
@@ -401,7 +325,7 @@ jobs:
401325 - Bundle size is measured for the entire 'dist' directory.
402326 - 📊 indicates links to detailed reports.
403327 - 🔺 indicates increase, 🔽 decrease, and ✅ no change in bundle size.
404- - Test changes: ✨ added, 🗑️ deleted, ⏭️ skipped
328+ - ${testsStatus} indicates ${newTests} new test cases added in this PR.
405329 </details>`;
406330
407331 const { data: pullRequest } = await github.rest.pulls.get({
0 commit comments