Version Packages #140
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test Package | |
on: | |
pull_request: | |
branches: | |
- main | |
types: | |
- opened | |
- synchronize | |
- reopened | |
paths: | |
- "packages/**" | |
- "package.json" | |
- ".github/workflows/test.yml" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
paths-filter: | |
name: Filter Changed Packages (Test Package) | |
runs-on: ubuntu-24.04 | |
permissions: | |
pull-requests: read | |
timeout-minutes: 5 | |
outputs: | |
eslint: ${{ steps.filter.outputs.eslint }} | |
prettier: ${{ steps.filter.outputs.prettier }} | |
stylelint: ${{ steps.filter.outputs.stylelint }} | |
steps: | |
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 | |
id: filter | |
with: | |
# package.json を含めているのは、ビルド環境が変わった場合にすべてのパッケージをテストするようにするため | |
filters: | | |
eslint: | |
- 'packages/eslint-config/**' | |
- 'package.json' | |
prettier: | |
- 'packages/prettier-config/**' | |
- 'package.json' | |
stylelint: | |
- 'packages/stylelint-config/**' | |
- 'package.json' | |
test: | |
needs: paths-filter | |
name: Vitest (Test Package) | |
if: ${{ needs.paths-filter.outputs.eslint == 'true' || needs.paths-filter.outputs.prettier == 'true' || needs.paths-filter.outputs.stylelint == 'true' }} | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 10 | |
permissions: | |
contents: read | |
pull-requests: write | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Setup Node.js and pnpm | |
uses: ./.github/common/setup-node-pnpm | |
- name: Test ESLint Config | |
id: eslint | |
if: ${{ needs.paths-filter.outputs.eslint == 'true' }} | |
continue-on-error: true | |
run: pnpm run build:eslint && pnpm run test --project eslint-config | |
- name: Test Prettier Config | |
id: prettier | |
if: ${{ needs.paths-filter.outputs.prettier == 'true' }} | |
continue-on-error: true | |
run: pnpm run build:prettier && pnpm run test --project prettier-config | |
- name: Test Stylelint Config | |
id: stylelint | |
if: ${{ needs.paths-filter.outputs.stylelint == 'true' }} | |
continue-on-error: true | |
run: pnpm run build:stylelint && pnpm run test --project stylelint-config | |
- name: Comment if any Error | |
if: steps.eslint.outcome == 'failure' || steps.prettier.outcome == 'failure' || steps.stylelint.outcome == 'failure' | |
run: | | |
set -eu | |
# Create a comment body | |
cat << EOF > COMMENT.md | |
## 🚨 Snapshot test failed | |
See the details: [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) | |
### Errors | |
EOF | |
# Append the error message to the comment body | |
if [ ${{ steps.eslint.outcome }} == 'failure' ]; then | |
echo "- ESLint" >> COMMENT.md | |
fi | |
if [ ${{ steps.prettier.outcome }} == 'failure' ]; then | |
echo "- Prettier" >> COMMENT.md | |
fi | |
if [ ${{ steps.stylelint.outcome }} == 'failure' ]; then | |
echo "- Stylelint" >> COMMENT.md | |
fi | |
# Append the next steps to the comment body | |
cat << EOF >> COMMENT.md | |
--- | |
### ⏭️ Next Steps | |
If snapshot changes are... | |
**expected**: update the snapshots by \`/update-snapshot\` | |
**unexpected**: check diff and fix rules | |
EOF | |
- name: Comment if success | |
if: steps.eslint.outcome != 'failure' && steps.prettier.outcome != 'failure' && steps.stylelint.outcome != 'failure' | |
run: | | |
set -eu | |
# Create a comment body | |
cat << EOF > COMMENT.md | |
## ✅ Snapshot test success | |
See the details: [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) | |
EOF | |
- name: Comment to PR | |
run: | | |
# Edit the last comment if it exists | |
if [ ! -f COMMENT.md ]; then | |
echo "::warning::comment body not found." | |
exit 0 | |
fi | |
gh pr comment ${{ github.event.number }} --body-file COMMENT.md --edit-last \ | |
|| gh pr comment ${{ github.event.number }} --body-file COMMENT.md | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: Mark as failure if any Error | |
if: steps.eslint.outcome == 'failure' || steps.prettier.outcome == 'failure' || steps.stylelint.outcome == 'failure' | |
run: | | |
echo "::error::Snapshot test failed." | |
exit 1 |