| name: performance | |
| on: | |
| pull_request: | |
| types: [labeled, synchronize, opened] | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| build: | |
| if: contains(github.event.pull_request.labels.*.name, 'performance') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| - name: Create pnpm store directory | |
| run: mkdir -p ~/.pnpm-store | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Build project | |
| run: pnpm build | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: rdp-dist | |
| path: dist | |
| capture-report: | |
| if: contains(github.event.pull_request.labels.*.name, 'performance') | |
| needs: [build] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Chrome | |
| uses: browser-actions/setup-chrome@v1 | |
| id: setup-chrome | |
| - name: Set up pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: rdp-dist | |
| path: dist | |
| - name: Create pnpm store directory | |
| run: mkdir -p ~/.pnpm-store | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Start server | |
| run: pnpm --filter performance-tests start-server & | |
| env: | |
| CHROME_PATH: ${{ steps.setup-chrome.outputs.chrome-path }} | |
| - name: Wait for server to start | |
| run: pnpx wait-on http://localhost:4173 --timeout 10000 | |
| - name: Capture performance test | |
| run: pnpm --filter performance-tests run capture | |
| env: | |
| CHROME_PATH: ${{ steps.setup-chrome.outputs.chrome-path }} | |
| CI: true | |
| - name: Upload report | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: report | |
| path: ./performance-tests/reports/report.html | |