Skip to content

Commit 5c22e8a

Browse files
Anton StandrikAnton Standrik
authored andcommitted
fix: skipped tests
1 parent 6bf9673 commit 5c22e8a

File tree

1 file changed

+40
-14
lines changed

1 file changed

+40
-14
lines changed

.github/workflows/ci.yml

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ jobs:
231231
added_tests=()
232232
deleted_tests=()
233233
skipped_tests=()
234+
base_skipped_tests=()
234235
235236
# Function to extract test names from a file
236237
extract_test_names() {
@@ -241,7 +242,35 @@ jobs:
241242
fi
242243
}
243244
244-
# First, get list of changed test files and analyze deletions
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
272+
273+
# Get list of changed test files
245274
for file in $(git diff --name-only main...HEAD | grep -E '^tests/suites/.*\.(spec|test)\.(ts|tsx|js|jsx)$'); do
246275
# Get test names from both versions
247276
current_tests=$(extract_test_names "$file" HEAD)
@@ -251,7 +280,10 @@ jobs:
251280
while IFS= read -r test; do
252281
if [[ -n "$test" ]]; then
253282
if ! echo "$base_tests" | grep -Fxq "$test"; then
254-
added_tests+=("$test")
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
255287
fi
256288
fi
257289
done <<< "$current_tests"
@@ -260,21 +292,15 @@ jobs:
260292
while IFS= read -r test; do
261293
if [[ -n "$test" ]]; then
262294
if ! echo "$current_tests" | grep -Fxq "$test"; then
263-
deleted_tests+=("$test")
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
264299
fi
265300
fi
266301
done <<< "$base_tests"
267302
done
268303
269-
# Separately, get skipped tests from test results
270-
if [ -f "playwright-artifacts/test-results.json" ]; then
271-
while IFS= read -r test; do
272-
if [[ -n "$test" ]]; then
273-
skipped_tests+=("$test")
274-
fi
275-
done < <(jq -r '.suites[].specs[] | select(.ok == false and .skipped == true) | .title' playwright-artifacts/test-results.json)
276-
fi
277-
278304
# Create JSON output
279305
echo "added_tests=$(IFS=,; echo "${added_tests[*]}")" >> $GITHUB_OUTPUT
280306
echo "deleted_tests=$(IFS=,; echo "${deleted_tests[*]}")" >> $GITHUB_OUTPUT
@@ -324,8 +350,8 @@ jobs:
324350
};
325351
326352
const bundleStatus = percent === 'N/A' ? '⚠️' :
327-
parseFloat(percent) > 0 ? '🔺' :
328-
parseFloat(percent) < 0 ? '🔽' : '✅';
353+
parseFloat(percent) > 0 ? '🔺' :
354+
parseFloat(percent) < 0 ? '🔽' : '✅';
329355
330356
const addedTests = '${{ steps.analyze_tests.outputs.added_tests }}'.split(',').filter(Boolean);
331357
const deletedTests = '${{ steps.analyze_tests.outputs.deleted_tests }}'.split(',').filter(Boolean);

0 commit comments

Comments
 (0)