Skip to content

ci: install the packed tarball itself in the entry-point smoke test - #227

Merged
eliavb43 merged 1 commit into
mainfrom
ci/install-tarball-in-smoke-test
Oct 11, 2026
Merged

eliavb43 merged 1 commit into
mainfrom
ci/install-tarball-in-smoke-test

Conversation

@eliavb43

@eliavb43 eliavb43 commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

The entry-point smoke test extracted the tarball and ran npm install ./package. npm installs a local folder as a symlink and also installs that folder's devDependencies. In this case that meant vitest, vite and the dts plugin, about 800 packages.

That causes two problems:

  • It doesn't test what a consumer gets. The library loaded in an environment where a runtime dependency that was accidentally dropped could still be satisfied by a dev one. The step exists precisely to catch that kind of regression since runtime deps were removed in 2.1.0.
  • It's fragile. On build(deps-dev): bump vitest from 3.2.7 to 4.1.11 #222 (vitest 4), npm crashed resolving that tree with Cannot read properties of null (reading 'edgesOut'). That is the only failing check on build(deps-dev): bump vitest from 3.2.7 to 4.1.11 #222. Its tests, type tests and build all pass.

This PR installs the .tgz directly, which gives a plain copy with only react and react-dom next to it. A test ! -L check fails the step if the package is ever linked again.

Evidence

Run locally against a fresh pnpm pack of main:

npm install ./package (before) npm install <tgz> (after)
npm ls --all lines 823 12
node_modules/react-xarrows symlink real directory
ESM / CJS / UMD checks pass pass

The "after" column ran the two edited steps verbatim from this branch's ci.yml, with only the /tmp paths changed.

After this merges, @dependabot rebase on #222 should turn it green. I merged #222 onto current main locally and lib tests, example tests, test:types and the smoke step all pass on vitest 4.1.11.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Tests
    • Updated package verification to test installation from the packed archive and confirm the installed package is not a symlink before checking its exports.

The step extracted the tarball and ran `npm install ./package`. npm installs
a local folder as a symlink and installs that folder's devDependencies along
with it: vitest, vite, the dts plugin, about 800 packages. So the test loaded
the library in an environment no consumer has, where a missing runtime
dependency could have been satisfied by a dev one.

It also made the step fragile. npm crashed resolving that tree on the vitest 4
dependabot PR (#222) with `Cannot read properties of null (reading
'edgesOut')`, while the library and its tests were fine.

Installing the .tgz directly gives a plain copy with react, react-dom and
nothing else. A check that node_modules/react-xarrows is not a symlink keeps
it that way.

Co-Authored-By: Claude <noreply@anthropic.com>
@codesandbox

codesandbox Bot commented Oct 11, 2026

Copy link
Copy Markdown

Review or Edit in CodeSandbox

Open the branch in Web Editor • VS Code • Insiders

Open Preview

@netlify

netlify Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for react-xarrows ready!

Name Link
🔨 Latest commit 8d4a450
🔍 Latest deploy log https://app.netlify.com/projects/react-xarrows/deploys/6acbc8b9b681f00008ece96e
😎 Deploy Preview https://deploy-preview-227--react-xarrows.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Oct 11, 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: bed36e6b-1157-4462-9b1d-b6c7f649d616

📥 Commits

Reviewing files that changed from the base of the PR and between 966e976 and 8d4a450.


📒 Files selected for processing (1)
  • .github/workflows/ci.yml

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



📝 Walkthrough

Walkthrough

The CI entry-point verification step now installs the packed tarball directly and checks that the installed package is not a symlink.

Changes

Consumer package verification

Layer / File(s) Summary
Install and verify packed package
.github/workflows/ci.yml
The consumer setup installs the tarball directly instead of extracting it and installing the package folder. It fails if node_modules/react-xarrows is a symlink.

Priority: ⬇️ Low

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

Change: Bug fix

Suggested reviewers: eliav2


Merge Risk: ⚪ Minimal · up to 8d4a4

CI now tests the packed package in a clean consumer install, reducing the chance that development dependencies hide missing package contents. No concrete merge-blocking risk remains.

Pre-merge checks | Passed 5
✅ 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: the CI smoke test now installs the packed tarball directly.
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.

@eliavb43
eliavb43 merged commit 6957372 into main Oct 11, 2026
6 checks passed
@eliavb43
eliavb43 deleted the ci/install-tarball-in-smoke-test branch October 11, 2026 18:35
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