Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 1 addition & 35 deletions .github/workflows/testrail-backup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,41 +95,7 @@ jobs:
awk -F '_' '{print "* " $2 }' < files.txt | uniq >> $GITHUB_STEP_SUMMARY
- name: Output test case counts to Github Actions summary
run: |
echo "Full Functional Test Case Counts (Full Functional Tests Suite)" >> $GITHUB_STEP_SUMMARY
[ -f test-counts.json ] || echo '{}' > test-counts.json
cd $filename
table_rows='[[{"type":"raw_text","text":"Suite"},{"type":"raw_text","text":"Count"},{"type":"raw_text","text":"Change"}]]'
counts_json='{}'
for suite in "Fenix Browser_Full Functional Tests Suite" "Firefox for iOS_Full Functional Tests Suite"; do
csvfile=$(ls "backup_${suite}_"*.csv 2>/dev/null | head -1)
if [ -n "$csvfile" ]; then
count=$(awk -F',' 'NR>1 && $1+0>0 {c++} END {print c+0}' "$csvfile")
echo "* ${suite}: ${count} test cases" >> $GITHUB_STEP_SUMMARY
display=$(echo "$suite" | sed 's/_/ - /')
project=$(echo "$suite" | sed 's/_Full Functional Tests Suite//')
prev=$(jq -r --arg key "$display" '.[$key] // empty' ../test-counts.json)
if [ -n "$prev" ]; then
delta=$((count - prev))
if [ $delta -gt 0 ]; then change="↑ +${delta}"
elif [ $delta -lt 0 ]; then change="↓ ${delta}"
else change="no change"
fi
else
change="-"
fi
row=$(jq -n \
--arg suite "$project" \
--arg count "$count" \
--arg change "$change" \
'[{"type":"raw_text","text":$suite},{"type":"raw_text","text":$count},{"type":"raw_text","text":$change}]')
table_rows=$(echo "$table_rows" | jq --argjson row "$row" '. + [$row]')
counts_json=$(echo "$counts_json" | jq --arg key "$display" --argjson val "$count" '. + {($key): $val}')
fi
done
echo "$counts_json" > ../test-counts.json
today=$(date "+%Y-%m-%d")
jq -n --argjson rows "$table_rows" --arg date "$today" '{"blocks":[{"type":"header","text":{"type":"plain_text","text":(":testops-testrail:Full Functional Test Case Counts — " + $date)}},{"type":"table","rows":$rows}]}' > ../slack-counts.json
run: bash output-test-counts.sh test-counts.json slack-counts.json

- name: Commit updated test counts
run: |
Expand Down
66 changes: 66 additions & 0 deletions backup-tools/output-test-counts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash
set -euo pipefail

counts_file="$1"
slack_file="$2"

suites=(
"Fenix Browser_Full Functional Tests Suite"
"Firefox for iOS_Full Functional Tests Suite"
)

echo "Full Functional Test Case Counts (Full Functional Tests Suite)" >> "$GITHUB_STEP_SUMMARY"
[ -f "$counts_file" ] || echo '{}' > "$counts_file"
cd "$filename"

table_rows='[[{"type":"raw_text","text":"Suite"},{"type":"raw_text","text":"Starting Count"},{"type":"raw_text","text":"Current Count"},{"type":"raw_text","text":"Delta"},{"type":"raw_text","text":"Tests Deleted ❌"}]]'
updated_counts='{}'

for suite in "${suites[@]}"; do
csvfile=$(ls "backup_${suite}_"*.csv 2>/dev/null | head -1) || true
[ -z "$csvfile" ] && continue

count=$(awk -F',' 'NR>1 && $1+0>0 {c++} END {print c+0}' "$csvfile")
display=$(echo "$suite" | sed 's/_/ - /')
project=$(echo "$suite" | sed 's/_Full Functional Tests Suite//')

echo "* ${suite}: ${count} test cases" >> "$GITHUB_STEP_SUMMARY"

graveyard_csv=$(ls "backup_${project}_Duplicated Tests Graveyard_"*.csv 2>/dev/null | head -1) || true
if [ -n "$graveyard_csv" ]; then
deleted=$(awk -F',' 'NR>1 && $1+0>0 {c++} END {print c+0}' "$graveyard_csv")
else
deleted="0"
fi

prev=$(jq -r --arg key "$display" '.[$key] // empty' "../$counts_file")
if [ -n "$prev" ]; then
starting="$prev"
delta=$((count - prev))
abs_delta=$(( delta < 0 ? -delta : delta ))
pct=$(awk "BEGIN {printf \"%.1f\", ($abs_delta / $prev) * 100}")
if [ $delta -gt 0 ]; then change="+${delta} / +${pct}%"
elif [ $delta -lt 0 ]; then change="${delta} / -${pct}%"
else change="no change"
fi
else
starting="-"
change="-"
fi

row=$(jq -n \
--arg suite "$project" \
--arg starting "$starting" \
--arg count "$count" \
--arg deleted "$deleted" \
--arg change "$change" \
'[{"type":"raw_text","text":$suite},{"type":"raw_text","text":$starting},{"type":"raw_text","text":$count},{"type":"raw_text","text":$change},{"type":"raw_text","text":$deleted}]')
table_rows=$(echo "$table_rows" | jq --argjson row "$row" '. + [$row]')
updated_counts=$(echo "$updated_counts" | jq --arg key "$display" --argjson val "$count" '. + {($key): $val}')
done

echo "$updated_counts" > "../$counts_file"
today=$(date "+%Y-%m-%d")
jq -n --argjson rows "$table_rows" --arg date "$today" \
'{"blocks":[{"type":"header","text":{"type":"plain_text","text":(":testops-testrail:Full Functional Test Case Counts — " + $date)}},{"type":"table","rows":$rows}]}' \
> "../$slack_file"
4 changes: 2 additions & 2 deletions backup-tools/test-counts.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"Fenix Browser - Full Functional Tests Suite": 1390,
"Firefox for iOS - Full Functional Tests Suite": 1751
"Fenix Browser - Full Functional Tests Suite": 1313,
"Firefox for iOS - Full Functional Tests Suite": 1755
}
Loading