name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [20, 22] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: npm - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Test run: npm test - name: Test coverage if: matrix.node-version == 22 run: | npm run test:coverage echo "## Test Coverage" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY npm run test:coverage 2>&1 | grep -A20 'Coverage report' >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - name: Type check run: npx tsc --noEmit - name: Build run: npm run build - name: Check bundle size run: | echo "## Bundle sizes" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY du -sh dist/ >> $GITHUB_STEP_SUMMARY find dist/assets -name '*.js' -exec du -sh {} \; | sort -rh >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY