ci: Update TypeScript CI workflow to select tests if test files change (#4840)

* Update TypeScript CI workflow: streamline suite selection and dependency setup

- Set default test suites to an empty array to dynamically determine suites based on changes.
- Ensure compact JSON output for test suites.
- Simplify Node.js and Playwright setup by using built-in caching and custom actions.
- Add UV_CACHE_DIR environment variable for caching.

* Expand test coverage paths in changes-filter.yaml configuration
This commit is contained in:
Gabriel Luiz Freitas Almeida 2024-11-25 19:30:13 -03:00 committed by GitHub
commit dd92d9c10c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 27 additions and 7 deletions

View file

@ -81,39 +81,40 @@ jobs:
RELEASE="${{ inputs.release || 'false' }}"
echo "Release build: $RELEASE"
if [[ "$RELEASE" == "true" ]]; then
# if release OR steps.filter.outputs.frontend-tests is true
if [[ "$RELEASE" == "true" || "${{ steps.filter.outputs.frontend-tests }}" == "true" ]]; then
SUITES='["release"]'
echo "Release build detected - setting suites to: $SUITES"
# No grep pattern for release - run all tests
TEST_GREP=""
else
# If input suites were not provided, determine based on changes
if [[ "$SUITES" == "[]" ]]; then
if [[ "$SUITES" == "[]" ]]; then
echo "No input suites provided - determining from changes"
TAGS=()
# Add suites and tags based on changed files
if [[ "${{ steps.filter.outputs.components }}" == "true" ]]; then
SUITES=$(echo $SUITES | jq '. += ["components"]')
SUITES=$(echo $SUITES | jq -c '. += ["components"]')
TAGS+=("@components")
echo "Added components suite"
fi
if [[ "${{ steps.filter.outputs.starter-projects }}" == "true" ]]; then
SUITES=$(echo $SUITES | jq '. += ["starter-projects"]')
SUITES=$(echo $SUITES | jq -c '. += ["starter-projects"]')
TAGS+=("@starter-projects")
echo "Added starter-projects suite"
fi
if [[ "${{ steps.filter.outputs.workspace }}" == "true" ]]; then
SUITES=$(echo $SUITES | jq '. += ["workspace"]')
SUITES=$(echo $SUITES | jq -c '. += ["workspace"]')
TAGS+=("@workspace")
echo "Added workspace suite"
fi
if [[ "${{ steps.filter.outputs.api }}" == "true" ]]; then
SUITES=$(echo $SUITES | jq '. += ["api"]')
SUITES=$(echo $SUITES | jq -c '. += ["api"]')
TAGS+=("@api")
echo "Added api suite"
fi
if [[ "${{ steps.filter.outputs.database }}" == "true" ]]; then
SUITES=$(echo $SUITES | jq '. += ["database"]')
SUITES=$(echo $SUITES | jq -c '. += ["database"]')
TAGS+=("@database")
echo "Added database suite"
fi
@ -151,6 +152,9 @@ jobs:
fi
fi
# Ensure compact JSON output
SUITES=$(echo "$SUITES" | jq -c '.')
echo "Final test suites to run: $SUITES"
echo "Test grep pattern: $TEST_GREP"
# Ensure proper JSON formatting for matrix output