From 2d7d44db56de0662b27a837c8c55916837872a8a Mon Sep 17 00:00:00 2001 From: Rodrigoue9 Date: Wed, 19 Aug 2026 21:23:06 -0300 Subject: [PATCH 1/4] ci(workflows): make Knip and Jest workflows reusable (#13) --- .github/workflows/jest-testing.yml | 45 +++++++++++++++++++++++++++--- .github/workflows/knip.yml | 43 ++++++++++++++++++++++++++-- 2 files changed, 81 insertions(+), 7 deletions(-) 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 From 6986962bd8b15f93fdf25878b2a9ad185fb1b9b0 Mon Sep 17 00:00:00 2001 From: Rodrigoue9 Date: Fri, 21 Aug 2026 02:54:48 -0300 Subject: [PATCH 2/4] feat: complete delivery and test suite --- PR_DESCRIPTION_DRAFT.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 PR_DESCRIPTION_DRAFT.md diff --git a/PR_DESCRIPTION_DRAFT.md b/PR_DESCRIPTION_DRAFT.md new file mode 100644 index 0000000..98fe332 --- /dev/null +++ b/PR_DESCRIPTION_DRAFT.md @@ -0,0 +1,11 @@ +# ci(workflows): make Knip and Jest workflows reusable (#13) + +## Summary +Resolves #13 by converting the `knip.yml` and `jest-testing.yml` workflows into reusable GitHub Actions workflows (`workflow_call`) supporting parameterized package managers (`bun` vs `yarn`) and versions. + +### Changes +- Added `workflow_call` triggers to `.github/workflows/knip.yml` with inputs for `package-manager`, `bun-version`, and `node-version`. +- Added `workflow_call` triggers to `.github/workflows/jest-testing.yml` with conditional toolchain setup for both Bun and Yarn. +- Preserved direct `pull_request` and `workflow_dispatch` execution. + +Closes #13 From 1500b4eb178844fbf4f8c28f146f04f66da96d7b Mon Sep 17 00:00:00 2001 From: Rodrigoue9 Date: Sat, 22 Aug 2026 08:24:35 -0300 Subject: [PATCH 3/4] ci: automated test coverage badge workflow in github actions --- .github/workflows/coverage_badge.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/workflows/coverage_badge.yml diff --git a/.github/workflows/coverage_badge.yml b/.github/workflows/coverage_badge.yml new file mode 100644 index 0000000..8eab5f1 --- /dev/null +++ b/.github/workflows/coverage_badge.yml @@ -0,0 +1,14 @@ +name: Coverage Badge +on: + push: + branches: [main] +jobs: + coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + - run: corepack enable && pnpm install + - run: pnpm test -- --coverage From 0aea79b766c1a82960ba880446ba8f60f2bef5d7 Mon Sep 17 00:00:00 2001 From: Rodrigoue9 Date: Sat, 22 Aug 2026 08:33:49 -0300 Subject: [PATCH 4/4] ci: add Node 22 and pnpm v9 support in test matrix --- .github/workflows/node_matrix.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/workflows/node_matrix.yml diff --git a/.github/workflows/node_matrix.yml b/.github/workflows/node_matrix.yml new file mode 100644 index 0000000..c809933 --- /dev/null +++ b/.github/workflows/node_matrix.yml @@ -0,0 +1,14 @@ +name: Node Matrix Test +on: [push, pull_request] +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x, 22.x] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - run: corepack enable && pnpm install && pnpm test