chore(functional_test): update config to merge reports with failed tests

This commit is contained in:
Ankita Shrivastava 2024-09-05 14:38:49 -04:00
Родитель 5702ef10f3
Коммит 95f7bd2130
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: F3B1701360EA9310
1 изменённых файлов: 75 добавлений и 9 удалений

Просмотреть файл

@ -341,14 +341,19 @@ commands:
- run: - run:
name: Ensure directories name: Ensure directories
command: mkdir -p artifacts/tests && mkdir -p ~/.pm2/logs && mkdir -p ~/screenshots command: mkdir -p artifacts/tests && mkdir -p ~/.pm2/logs && mkdir -p ~/screenshots
when: always
- store_artifacts: - store_artifacts:
path: artifacts path: artifacts
when: always
- store_artifacts: - store_artifacts:
path: ~/screenshots path: ~/screenshots
when: always
- store_artifacts: - store_artifacts:
path: ~/.pm2/logs path: ~/.pm2/logs
when: always
- store_test_results: - store_test_results:
path: artifacts/tests path: artifacts/tests
when: always
rename-reports: rename-reports:
steps: steps:
@ -367,6 +372,7 @@ commands:
else else
echo "No report.zip found, skipping rename for this node." echo "No report.zip found, skipping rename for this node."
fi fi
echo "$CIRCLE_WORKFLOW_JOB_ID" > job_id.txt
echo "Listing contents after renaming:" echo "Listing contents after renaming:"
ls -la ls -la
when: always when: always
@ -721,6 +727,47 @@ jobs:
- store-artifacts - store-artifacts
- rename-reports - rename-reports
check-required-jobs-complete:
docker:
- image: circleci/node
resource_class: small
steps:
- run:
name: Wait for required jobs to complete
command: |
sleep 30
mkdir -p artifacts/blob-report
while true; do
RESPONSE=$(curl -s --request GET "https://circleci.com/api/v2/workflow/$CIRCLE_WORKFLOW_ID/job" --header "Circle-Token: $CCI_Token")
FUNCTIONAL_TEST_JOB_ID=$(echo $RESPONSE | jq -r '.items[] | select(.status == "running") | select(.name | startswith("Functional Tests")) | .id')
if [[ -e artifacts/blob-report/functional_test_job_id.txt ]]; then
echo "Job id already set"
elif [[ -n "$FUNCTIONAL_TEST_JOB_ID" ]]; then
echo "Storing job id, $FUNCTIONAL_TEST_JOB_ID, for later lookup."
echo $FUNCTIONAL_TEST_JOB_ID > artifacts/blob-report/functional_test_job_id.txt
else
echo "No job id located. ($FUNCTIONAL_TEST_JOB_ID)"
fi
JOB_STATUS=$(echo $RESPONSE | jq -r '.items[] | .name + "-" + .status')
echo "ALL JOB_STATUS:"
echo $JOB_STATUS
PENDING=$(echo $RESPONSE | jq -r '.items[] | select(.status == "blocked" or .status == "running" or .status == "not_running") | select(.name | startswith("Tests Complete") | not) | select(.name | startswith("Merge Playwright Reports") | not) | select(.name | startswith("Check all required jobs are complete") | not ) | .name')
echo "PENDING JOBS OF INTEREST:"
echo $PENDING
if [[ -z "$PENDING" ]]; then
echo "All required jobs have now completed"
exit 0
else
echo "Still waiting for jobs to complete..."
sleep 1
fi
done
- persist_to_workspace:
root: /home/circleci/project
paths:
- artifacts/blob-report
when: always
playwright-functional-test-report: playwright-functional-test-report:
executor: default-executor executor: default-executor
steps: steps:
@ -730,25 +777,39 @@ jobs:
name: Merge blob Reports name: Merge blob Reports
command: | command: |
cd artifacts/blob-report cd artifacts/blob-report
echo "Merging blob reports" JOB_ID=$(cat functional_test_job_id.txt)
ls -l echo "Fetching reports from circle ci artifact storarge for $JOB_ID"
function fetch_report() {
echo "Fetching reports-$1.zip"
wget https://output.circle-artifacts.com/output/job/${JOB_ID}/artifacts/$1/artifacts/blob-report/reports-$1.zip
wgetreturn=$?
if [[ $wgetreturn -ne 0 ]]; then
echo "Failed to get reports-$1.zip"
fi
}
for i in $(seq 0 7); do
fetch_report $i
done
echo "Fetched all reports"
if ls *.zip 1> /dev/null 2>&1; then if ls *.zip 1> /dev/null 2>&1; then
echo "Merging blob reports"
npx playwright merge-reports --reporter=blob . npx playwright merge-reports --reporter=blob .
else else
echo "No report zip files found, skipping blob merge." echo "No report zip files found, skipping merge."
fi fi
- store_artifacts: - store_artifacts:
path: blob-report path: artifacts/blob-report
- run: - run:
name: Merge html Reports name: Merge HTML Reports
command: | command: |
cd artifacts/blob-report cd artifacts/blob-report
echo "Merging HTML reports"
ls -l
if ls *.zip 1> /dev/null 2>&1; then if ls *.zip 1> /dev/null 2>&1; then
echo "Merging HTML reports"
npx playwright merge-reports --reporter=html . npx playwright merge-reports --reporter=html .
else else
echo "No report zip files found, skipping HTML merge." echo "No report zip files found, skipping merge."
fi fi
- store_artifacts: - store_artifacts:
path: playwright-report path: playwright-report
@ -858,6 +919,10 @@ workflows:
projects: --exclude '*,!tag:scope:shared:*' projects: --exclude '*,!tag:scope:shared:*'
requires: requires:
- Build (PR) - Build (PR)
- check-required-jobs-complete:
name: Check all required jobs are complete (PR)
requires:
- Build (PR)
- playwright-functional-tests: - playwright-functional-tests:
name: Functional Tests - Playwright (PR) name: Functional Tests - Playwright (PR)
resource_class: xlarge resource_class: xlarge
@ -867,7 +932,7 @@ workflows:
- playwright-functional-test-report: - playwright-functional-test-report:
name: Merge Playwright Reports (PR) name: Merge Playwright Reports (PR)
requires: requires:
- Functional Tests - Playwright (PR) - Check all required jobs are complete (PR)
- build-and-deploy-storybooks: - build-and-deploy-storybooks:
name: Deploy Storybooks (PR) name: Deploy Storybooks (PR)
requires: requires:
@ -887,6 +952,7 @@ workflows:
- Integration Test - Libraries (PR) - Integration Test - Libraries (PR)
- Functional Tests - Playwright (PR) - Functional Tests - Playwright (PR)
- Deploy Storybooks (PR) - Deploy Storybooks (PR)
- Check all required jobs are complete (PR)
# Triggered remotely. See .circleci/README.md # Triggered remotely. See .circleci/README.md
production_smoke_tests: production_smoke_tests: