name: Web Tests on: workflow_call: secrets: CODECOV_TOKEN: required: false permissions: contents: read concurrency: group: web-tests-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: test: name: Web Tests (${{ matrix.shardIndex }}/${{ matrix.shardTotal }}) runs-on: ubuntu-latest env: VITEST_COVERAGE_SCOPE: app-components strategy: fail-fast: false matrix: shardIndex: [1, 2, 3, 4] shardTotal: [4] defaults: run: shell: bash working-directory: ./web steps: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup web environment uses: ./.github/actions/setup-web - name: Run tests run: vp test run --reporter=blob --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --coverage - name: Upload blob report if: ${{ !cancelled() }} uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 with: name: blob-report-${{ matrix.shardIndex }} path: web/.vitest-reports/* include-hidden-files: true retention-days: 1 merge-reports: name: Merge Test Reports if: ${{ !cancelled() }} needs: [test] runs-on: ubuntu-latest env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} defaults: run: shell: bash working-directory: ./web steps: - name: Checkout code uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup web environment uses: ./.github/actions/setup-web - name: Download blob reports uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: path: web/.vitest-reports pattern: blob-report-* merge-multiple: true - name: Merge reports run: vp test --merge-reports --coverage --silent=passed-only - name: Report coverage if: ${{ env.CODECOV_TOKEN != '' }} uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 with: directory: web/coverage flags: web env: CODECOV_TOKEN: ${{ env.CODECOV_TOKEN }}