component-tests.yml 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. name: Component Tests
  2. on:
  3. push:
  4. branches: [ main, develop ]
  5. paths:
  6. - 'src/client/**'
  7. - 'src/client/__integration_tests__/**'
  8. - 'vitest.config.components.ts'
  9. - '.github/workflows/component-tests.yml'
  10. pull_request:
  11. branches: [ main ]
  12. paths:
  13. - 'src/client/**'
  14. - 'src/client/__integration_tests__/**'
  15. - 'vitest.config.components.ts'
  16. - '.github/workflows/component-tests.yml'
  17. workflow_dispatch:
  18. jobs:
  19. component-tests:
  20. runs-on: ubuntu-latest
  21. timeout-minutes: 10
  22. steps:
  23. - name: Checkout code
  24. uses: actions/checkout@v4
  25. - name: Setup Node.js
  26. uses: actions/setup-node@v4
  27. with:
  28. node-version: '20'
  29. cache: 'pnpm'
  30. - name: Install pnpm
  31. uses: pnpm/action-setup@v2
  32. with:
  33. version: 8
  34. - name: Install dependencies
  35. run: pnpm install --frozen-lockfile
  36. - name: Run component tests
  37. run: pnpm test:components
  38. - name: Upload test results
  39. if: always()
  40. uses: actions/upload-artifact@v4
  41. with:
  42. name: component-test-results
  43. path: |
  44. test-results/
  45. coverage/
  46. retention-days: 7
  47. - name: Generate coverage report
  48. if: success()
  49. run: pnpm test:components:coverage
  50. - name: Upload coverage to Codecov
  51. if: success()
  52. uses: codecov/codecov-action@v3
  53. with:
  54. file: ./coverage/coverage-final.json
  55. flags: component-tests
  56. - name: Generate test summary
  57. if: always()
  58. uses: test-summary/action@v2
  59. with:
  60. paths: test-results/junit.xml
  61. - name: Notify on failure
  62. if: failure()
  63. uses: 8398a7/action-slack@v3
  64. with:
  65. status: ${{ job.status }}
  66. channel: '#ci-notifications'
  67. webhook_url: ${{ secrets.SLACK_WEBHOOK }}
  68. env:
  69. SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
  70. - name: Send test results to GitHub
  71. if: always()
  72. uses: dorny/test-reporter@v1
  73. with:
  74. name: Component Tests
  75. path: test-results/junit.xml
  76. reporter: jest-junit
  77. fail-on-error: false