diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7a8d8b86..db19cb25 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -26,17 +26,29 @@ jobs: beam: beam/** test: - name: ${{ matrix.package }} + name: ${{ matrix.package }} (test) needs: changes runs-on: ubuntu-latest strategy: matrix: package: ${{ fromJSON(needs.changes.outputs.packages) }} + include: + - branch: development + artifact: development + - branch: ${{ github.head_ref }} + artifact: pull-request + + permissions: + # Required to checkout the code + contents: read steps: - name: Checkout uses: actions/checkout@v4 + with: + ref: ${{ matrix.branch }} + repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Install Node uses: actions/setup-node@v4 @@ -49,16 +61,45 @@ jobs: run: node common/scripts/install-run-rush.js install - name: Rush Build - run: node common/scripts/install-run-rush.js rebuild --verbose + run: node common/scripts/install-run-rush.js rebuild --to @stonecrop/${{ matrix.package }} --verbose - name: Run Tests working-directory: ./${{ matrix.package }} run: node ../common/scripts/install-run-rushx.js test:coverage - - name: Coverage Report - if: always() # generate the coverage report even if tests are failing + - name: Upload Coverage + if: always() # upload the coverage report even if tests are failing + uses: actions/upload-artifact@v4 + with: + name: coverage-${{ matrix.package }}-${{ matrix.artifact }} + path: coverage + + coverage: + name: ${{ matrix.package }} (coverage) + needs: [changes, test] + runs-on: ubuntu-latest + + strategy: + matrix: + package: ${{ fromJSON(needs.changes.outputs.packages) }} + + steps: + - name: Download PR Branch Coverage + uses: actions/download-artifact@v4 + with: + name: coverage-${{ matrix.package }}-pull-request + path: coverage + + - name: Download Base Branch Coverage + uses: actions/download-artifact@v4 + with: + name: coverage-${{ matrix.package }}-development + path: coverage-${{ matrix.package }}-development + + - name: Report Coverage uses: davelosert/vitest-coverage-report-action@v2 with: working-directory: ./${{ matrix.package }} file-coverage-mode: 'all' vite-config-path: './vite.config.ts' + json-summary-compare-path: coverage-${{ matrix.package }}-development/coverage-summary.json