Skip to content

ci: add bun to E2E runners - #1900

Merged
ryoppippi merged 1 commit into
mainfrom
cursor/add-bun-e2e-runner-cac3
Oct 15, 2026
Merged

ryoppippi merged 1 commit into
mainfrom
cursor/add-bun-e2e-runner-cac3

Conversation

@ryoppippi

@ryoppippi ryoppippi commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds bun to the ccusage-preview-e2e runner matrix in .github/workflows/ci.yaml. The matrix is now npm, pnpm, bun.

  • The bun jobs install bun with oven-sh/setup-bun, pinned to the v2.2.0 commit SHA like the other actions.
  • The preview runs with bunx --package <preview-url> ccusage .... bunx rejects a bare URL as the package (unrecognised dependency format), so the binary name is given explicitly.

Validation

  • Checked locally with bun 1.4.3 against the pkg.pr.new preview for d755584. --version and daily / monthly / session --offline --json all succeed and produce valid JSON, and the @ccusage/ccusage-* native packages install.
  • The bun E2E jobs in this PR's CI run on all five OS runners, including Windows.
Open in Web Open in Cursor 

Summary by cubic

Adds bun to the ccusage-preview-e2e runner matrix in .github/workflows/ci.yaml so the preview is tested with npm, pnpm, and bun.

  • The bun jobs install bun via oven-sh/setup-bun pinned to v2.2.0, matching the other action pins.
  • Preview runs use bunx --package <url> ccusage ... because bunx rejects a bare URL as the package.
  • Only the workflow file changes; no runtime behavior is affected.

Written for commit 9364c8b. Summary will update on new commits.

View guided diff Turn on auto-fix

Summary by CodeRabbit

  • Tests
    • Expanded preview end-to-end test coverage to include Bun alongside npm and pnpm.

@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a81bcf04-1ffe-4e96-b413-48ccc17b2aee
📥 Commits

Reviewing files that changed from the base of the PR and between d755584 and 9364c8b.

📒 Files selected for processing: 1
  • .github/workflows/ci.yaml

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The CI E2E runner matrix now includes Bun alongside npm and pnpm. The workflow installs Bun for the Bun entry and uses bunx --package to run the preview CLI.

Changes: Bun E2E Runner

Layer / File(s) Summary
Configure and invoke the Bun runner
.github/workflows/ci.yaml
The E2E matrix adds Bun, installs the latest Bun for that entry, and runs ccusage with bunx --package and the preview URL.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 9364c

The Bun E2E job follows the existing cross-platform invocation pattern, with no concrete merge-blocking risk identified.

Pre-merge checks: Passed 5
Passed Passed checks: 5 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: adding Bun to the E2E runner matrix.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cursor cursor Bot mentioned this pull request Oct 15, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

View guided diff | Turn on auto-fix | Re-trigger cubic

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

CI-only change expanding E2E coverage. No runtime, security, or release risk. Note: per repo policy this review does not approve — a human approval is still needed.

Reviewed changes

  • Added bun to the ccusage-preview-e2e runner matrix alongside npm and pnpm.
  • Added a conditional pinned oven-sh/setup-bun install step mirroring the existing pnpm conditional install.
  • Added the bunx --package $url ccusage invocation branch, with a comment explaining why the binary name is explicit.

Pullfrog  | Fix it ➔ | View workflow run | Using muse-spark-1.3-contributor (free via Pullfrog for OSS) | 𝕏

@pkg-pr-new

pkg-pr-new Bot commented Oct 15, 2026

Copy link
Copy Markdown

Open in StackBlitz

ccusage

npx https://pkg.pr.new/ccusage@1900

@ccusage/ccusage-darwin-arm64

npx https://pkg.pr.new/@ccusage/ccusage-darwin-arm64@1900

@ccusage/ccusage-darwin-x64

npx https://pkg.pr.new/@ccusage/ccusage-darwin-x64@1900

@ccusage/ccusage-linux-arm64

npx https://pkg.pr.new/@ccusage/ccusage-linux-arm64@1900

@ccusage/ccusage-linux-x64

npx https://pkg.pr.new/@ccusage/ccusage-linux-x64@1900

@ccusage/ccusage-win32-x64

npx https://pkg.pr.new/@ccusage/ccusage-win32-x64@1900

commit: 9364c8b

@github-actions

Copy link
Copy Markdown
Contributor

ccusage performance comparison

PR SHA: 9364c8b85dae
Base SHA: d7555844929a

This compares the Rust PR release binary against the configured base package on the same CI runner.

Package runtime diagnostics

Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.

Command Runtime Input Median Throughput Samples
claude --offline --json Package wrapper 1.01 GiB 405.4ms 2.48 GiB/s 1
claude --offline --json Installed native binary 1.01 GiB 375.6ms 2.68 GiB/s 1
codex --offline --json Package wrapper 1.01 GiB 163.5ms 6.16 GiB/s 1
codex --offline --json Installed native binary 1.01 GiB 131.3ms 7.67 GiB/s 1

Committed fixture performance

Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.

Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude daily --offline --json 0.00 MiB 53.7ms 18.7ms 2.87x 55.50 MiB 26.97 MiB 0.49x 0.03 MiB/s 0.08 MiB/s
claude session --offline --json 0.00 MiB 52.0ms 15.7ms 3.31x 55.75 MiB 26.98 MiB 0.48x 0.03 MiB/s 0.10 MiB/s
codex daily --offline --json 0.00 MiB 42.5ms 14.7ms 2.89x 55.50 MiB 27.22 MiB 0.49x 0.02 MiB/s 0.06 MiB/s
codex session --offline --json 0.00 MiB 40.8ms 15.7ms 2.60x 55.75 MiB 27.22 MiB 0.49x 0.02 MiB/s 0.05 MiB/s

Large real-world-shaped fixture performance

Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude --offline --json 1.01 GiB 476.9ms 421.1ms 1.13x 903.09 MiB 931.10 MiB 1.03x 2.11 GiB/s 2.39 GiB/s
codex --offline --json 1.01 GiB 174.3ms 137.9ms 1.26x 543.44 MiB 503.43 MiB 0.93x 5.78 GiB/s 7.30 GiB/s

Artifact size

Artifact Base PR Delta Ratio
packed ccusage-*.tgz 24.03 KiB 24.03 KiB +0.00 KiB 1.00x
installed native package binary 4905.28 KiB 4905.28 KiB +0.00 KiB 1.00x

Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.

@github-actions

Copy link
Copy Markdown
Contributor

ccusage performance comparison

PR SHA: 9364c8b85dae
Base SHA: d7555844929a

This compares the PR package against the configured base package on the same CI runner.

Package runtime diagnostics

Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.

Command Runtime Input Median Throughput Samples
claude --offline --json Package wrapper 1.01 GiB 406.6ms 2.48 GiB/s 1
claude --offline --json Installed native binary 1.01 GiB 370.4ms 2.72 GiB/s 1
codex --offline --json Package wrapper 1.01 GiB 138.6ms 7.26 GiB/s 1
codex --offline --json Installed native binary 1.01 GiB 113.9ms 8.84 GiB/s 1

Committed fixture performance

Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.

Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude daily --offline --json 0.00 MiB 53.1ms 52.5ms 1.01x 55.75 MiB 55.75 MiB 1.00x 0.03 MiB/s 0.03 MiB/s
claude session --offline --json 0.00 MiB 48.1ms 42.2ms 1.14x 56.00 MiB 55.75 MiB 1.00x 0.03 MiB/s 0.04 MiB/s
codex daily --offline --json 0.00 MiB 44.6ms 43.9ms 1.02x 55.50 MiB 55.75 MiB 1.00x 0.02 MiB/s 0.02 MiB/s
codex session --offline --json 0.00 MiB 40.7ms 39.4ms 1.03x 55.75 MiB 55.75 MiB 1.00x 0.02 MiB/s 0.02 MiB/s

Large real-world-shaped fixture performance

Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude --offline --json 1.01 GiB 405.2ms 400.7ms 1.01x 959.10 MiB 961.10 MiB 1.00x 2.48 GiB/s 2.51 GiB/s
codex --offline --json 1.01 GiB 138.6ms 143.8ms 0.96x 487.44 MiB 525.44 MiB 1.08x 7.26 GiB/s 7.00 GiB/s

Artifact size

Artifact Base PR Delta Ratio
packed ccusage-*.tgz 24.03 KiB 24.03 KiB +0.00 KiB 1.00x
installed native package binary 4905.28 KiB 4905.28 KiB +0.00 KiB 1.00x

Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.

@ryoppippi
ryoppippi merged commit b72d0c1 into main Oct 15, 2026
50 checks passed
@ryoppippi
ryoppippi deleted the cursor/add-bun-e2e-runner-cac3 branch October 15, 2026 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants