diff --git a/.github/workflows/jest-testing.yml b/.github/workflows/jest-testing.yml index 5b873ed..fd8dae7 100644 --- a/.github/workflows/jest-testing.yml +++ b/.github/workflows/jest-testing.yml @@ -1,5 +1,23 @@ name: Run Jest testing suite + on: + workflow_call: + inputs: + package-manager: + description: "Package manager to use ('bun' or 'yarn')" + required: false + default: "bun" + type: string + bun-version: + description: "Bun version (when using bun)" + required: false + default: "latest" + type: string + node-version: + description: "Node.js version (when using yarn)" + required: false + default: "20" + type: string workflow_dispatch: pull_request: @@ -11,19 +29,38 @@ jobs: permissions: write-all runs-on: ubuntu-latest steps: - - uses: oven-sh/setup-bun@v2 + - name: Setup Bun + if: ${{ inputs.package-manager == 'bun' || inputs.package-manager == '' }} + uses: oven-sh/setup-bun@v2 + with: + bun-version: ${{ inputs.bun-version || 'latest' }} + + - name: Setup Node + if: ${{ inputs.package-manager == 'yarn' }} + uses: actions/setup-node@v4 with: - bun-version: latest + node-version: ${{ inputs.node-version || '20' }} + cache: "yarn" - uses: actions/checkout@v5 with: fetch-depth: 0 - - name: Jest With Coverage + - name: Run Tests (Bun) + if: ${{ inputs.package-manager == 'bun' || inputs.package-manager == '' }} run: | bun install --frozen-lockfile bun run test + - name: Run Tests (Yarn) + if: ${{ inputs.package-manager == 'yarn' }} + run: | + yarn install --immutable + yarn test + - name: Add Jest Report to Summary if: always() - run: echo "$(cat test-dashboard.md)" >> $GITHUB_STEP_SUMMARY + run: | + if [ -f test-dashboard.md ]; then + cat test-dashboard.md >> $GITHUB_STEP_SUMMARY + fi diff --git a/.github/workflows/knip.yml b/.github/workflows/knip.yml index 779ef47..85efbc7 100644 --- a/.github/workflows/knip.yml +++ b/.github/workflows/knip.yml @@ -1,6 +1,23 @@ name: Knip on: + workflow_call: + inputs: + package-manager: + description: "Package manager to use ('bun' or 'yarn')" + required: false + default: "bun" + type: string + bun-version: + description: "Bun version (when using bun)" + required: false + default: "latest" + type: string + node-version: + description: "Node.js version (when using yarn)" + required: false + default: "20" + type: string pull_request: workflow_dispatch: @@ -12,17 +29,37 @@ jobs: uses: actions/checkout@v5 - name: Setup Bun + if: ${{ inputs.package-manager == 'bun' || inputs.package-manager == '' }} uses: oven-sh/setup-bun@v2 + with: + bun-version: ${{ inputs.bun-version || 'latest' }} + + - name: Setup Node + if: ${{ inputs.package-manager == 'yarn' }} + uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node-version || '20' }} + cache: "yarn" - - name: Install toolchain + - name: Install toolchain (Bun) + if: ${{ inputs.package-manager == 'bun' || inputs.package-manager == '' }} run: bun install + - name: Install toolchain (Yarn) + if: ${{ inputs.package-manager == 'yarn' }} + run: yarn install --immutable + - name: Store PR number - run: echo ${{ github.event.number }} > pr-number.txt + run: echo ${{ github.event.number || github.event.pull_request.number || 0 }} > pr-number.txt - - name: Run Knip + - name: Run Knip (Bun) + if: ${{ inputs.package-manager == 'bun' || inputs.package-manager == '' }} run: bun run knip || bun run knip --reporter json > knip-results.json + - name: Run Knip (Yarn) + if: ${{ inputs.package-manager == 'yarn' }} + run: yarn knip || yarn knip --reporter json > knip-results.json + - name: Upload knip result if: failure() uses: actions/upload-artifact@v4