# Checking unit tests for tracker and assist name: Tracker tests on: workflow_dispatch: push: branches: [ "main", "dev" ] paths: - tracker/** pull_request: branches: [ "dev", "main" ] paths: - tracker/** jobs: build-and-test: runs-on: macos-latest name: Build and test Tracker steps: - uses: oven-sh/setup-bun@v2 with: bun-version: latest - uses: actions/checkout@v4 - name: Cache tracker modules uses: actions/cache@v3 with: path: tracker/node_modules key: ${{ runner.OS }}-test_tracker_build-${{ hashFiles('**/bun.lock') }} restore-keys: | test_tracker_build{{ runner.OS }}-build- test_tracker_build{{ runner.OS }}- - name: Setup Testing packages run: | cd tracker bun install # Run tracker tests and generate coverage - name: Jest tests run: | cd tracker/tracker bun run test:ci - name: Building test run: | cd tracker/tracker bun run build # Run tracker-assist tests and generate coverage - name: (TA) Jest tests run: | cd tracker/tracker-assist bun run test:ci - name: (TA) Building test run: | cd tracker/tracker-assist bun run build # For PRs, parse coverage and create comment - name: Parse Coverage Reports if: github.event_name == 'pull_request' id: coverage-report run: | echo "TRACKER_COVERAGE=$(cd tracker/tracker && jq -r '.total.lines.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TRACKER_STATEMENTS=$(cd tracker/tracker && jq -r '.total.statements.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TRACKER_BRANCHES=$(cd tracker/tracker && jq -r '.total.branches.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TRACKER_FUNCTIONS=$(cd tracker/tracker && jq -r '.total.functions.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TA_COVERAGE=$(cd tracker/tracker-assist && jq -r '.total.lines.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TA_STATEMENTS=$(cd tracker/tracker-assist && jq -r '.total.statements.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TA_BRANCHES=$(cd tracker/tracker-assist && jq -r '.total.branches.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "TA_FUNCTIONS=$(cd tracker/tracker-assist && jq -r '.total.functions.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV # For PRs, check out base branch for comparison - name: Check out base branch for coverage comparison if: github.event_name == 'pull_request' uses: actions/checkout@v4 with: ref: ${{ github.base_ref }} path: dev - name: Setup base branch for comparison if: github.event_name == 'pull_request' run: | cd tracker/tracker bun install # Calculate coverage for base branch - name: Get base branch coverage if: github.event_name == 'pull_request' id: base-coverage run: | cd tracker/tracker bun run test:ci echo "BASE_TRACKER_COVERAGE=$(jq -r '.total.lines.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "BASE_TRACKER_STATEMENTS=$(jq -r '.total.statements.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "BASE_TRACKER_BRANCHES=$(jq -r '.total.branches.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "BASE_TRACKER_FUNCTIONS=$(jq -r '.total.functions.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV cd ../tracker-assist bun run test:ci echo "BASE_TA_COVERAGE=$(jq -r '.total.lines.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "BASE_TA_STATEMENTS=$(jq -r '.total.statements.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "BASE_TA_BRANCHES=$(jq -r '.total.branches.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV echo "BASE_TA_FUNCTIONS=$(jq -r '.total.functions.pct' coverage/coverage-summary.json)" >> $GITHUB_ENV # Calculate coverage changes - name: Calculate Coverage Changes if: github.event_name == 'pull_request' run: | echo "TRACKER_COVERAGE_CHANGE=$(echo "$TRACKER_COVERAGE - $BASE_TRACKER_COVERAGE" | bc)" >> $GITHUB_ENV echo "TRACKER_STATEMENTS_CHANGE=$(echo "$TRACKER_STATEMENTS - $BASE_TRACKER_STATEMENTS" | bc)" >> $GITHUB_ENV echo "TRACKER_BRANCHES_CHANGE=$(echo "$TRACKER_BRANCHES - $BASE_TRACKER_BRANCHES" | bc)" >> $GITHUB_ENV echo "TRACKER_FUNCTIONS_CHANGE=$(echo "$TRACKER_FUNCTIONS - $BASE_TRACKER_FUNCTIONS" | bc)" >> $GITHUB_ENV echo "TA_COVERAGE_CHANGE=$(echo "$TA_COVERAGE - $BASE_TA_COVERAGE" | bc)" >> $GITHUB_ENV echo "TA_STATEMENTS_CHANGE=$(echo "$TA_STATEMENTS - $BASE_TA_STATEMENTS" | bc)" >> $GITHUB_ENV echo "TA_BRANCHES_CHANGE=$(echo "$TA_BRANCHES - $BASE_TA_BRANCHES" | bc)" >> $GITHUB_ENV echo "TA_FUNCTIONS_CHANGE=$(echo "$TA_FUNCTIONS - $BASE_TA_FUNCTIONS" | bc)" >> $GITHUB_ENV # Post coverage summary as PR comment - name: Create Coverage PR Comment if: github.event_name == 'pull_request' uses: marocchino/sticky-pull-request-comment@v2 with: header: coverage-report message: | ## Code Coverage Report 📊 ### Tracker | Metric | Current | Base | Change | | ------ | ------- | ---- | ------ | | Lines | ${{ env.TRACKER_COVERAGE }}% | ${{ env.BASE_TRACKER_COVERAGE }}% | ${{ env.TRACKER_COVERAGE_CHANGE >= 0 && '+' || '' }}${{ env.TRACKER_COVERAGE_CHANGE }}% | | Statements | ${{ env.TRACKER_STATEMENTS }}% | ${{ env.BASE_TRACKER_STATEMENTS }}% | ${{ env.TRACKER_STATEMENTS_CHANGE >= 0 && '+' || '' }}${{ env.TRACKER_STATEMENTS_CHANGE }}% | | Branches | ${{ env.TRACKER_BRANCHES }}% | ${{ env.BASE_TRACKER_BRANCHES }}% | ${{ env.TRACKER_BRANCHES_CHANGE >= 0 && '+' || '' }}${{ env.TRACKER_BRANCHES_CHANGE }}% | | Functions | ${{ env.TRACKER_FUNCTIONS }}% | ${{ env.BASE_TRACKER_FUNCTIONS }}% | ${{ env.TRACKER_FUNCTIONS_CHANGE >= 0 && '+' || '' }}${{ env.TRACKER_FUNCTIONS_CHANGE }}% | ### Tracker-Assist | Metric | Current | Base | Change | | ------ | ------- | ---- | ------ | | Lines | ${{ env.TA_COVERAGE }}% | ${{ env.BASE_TA_COVERAGE }}% | ${{ env.TA_COVERAGE_CHANGE >= 0 && '+' || '' }}${{ env.TA_COVERAGE_CHANGE }}% | | Statements | ${{ env.TA_STATEMENTS }}% | ${{ env.BASE_TA_STATEMENTS }}% | ${{ env.TA_STATEMENTS_CHANGE >= 0 && '+' || '' }}${{ env.TA_STATEMENTS_CHANGE }}% | | Branches | ${{ env.TA_BRANCHES }}% | ${{ env.BASE_TA_BRANCHES }}% | ${{ env.TA_BRANCHES_CHANGE >= 0 && '+' || '' }}${{ env.TA_BRANCHES_CHANGE }}% | | Functions | ${{ env.TA_FUNCTIONS }}% | ${{ env.BASE_TA_FUNCTIONS }}% | ${{ env.TA_FUNCTIONS_CHANGE >= 0 && '+' || '' }}${{ env.TA_FUNCTIONS_CHANGE }}% | [View detailed coverage report](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})