agentsclimarketplace

Node testing

Skill Paldom/node-skills/skills/node-testing

Agent Skills for maintaining high-quality open-source Node.js, TypeScript, Next.js, and React apps and packages - linting, type safety, testing, packaging and releases, and CI quality gates.

Install
npx -y skills add Paldom/node-skills --skill node-testing

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Builds unit and integration test infrastructure for Node/TS/React - Vitest or node:test selection with explicit config, v8 coverage gates that fail CI, React Testing Library, mocking discipline, flaky-test triage. Use when the user asks to set up tests, add coverage thresholds, pick a test runner, or fix a flaky test setup. Not for E2E browser suites, lint rules, or CI workflow authoring.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

3.5 KB, as published. Nobody here has run it

node-testing

Builds test infrastructure where green means something: explicit runner config, coverage that fails the build instead of decorating it, and mocks that don't lie. The failures this skill fixes: models default to legacy Jest setups, write coverage reports nobody gates on, and stretch component tests into flaky pseudo-E2E.

When NOT to use

  • E2E / real-browser flows → out of this repo's scope; route to Playwright and its docs (explicit non-goal).
  • Lint → node-lint; tsconfig → node-typescript.
  • Wiring jobs/matrices in GitHub Actions → node-ci (this skill defines what to run; that one defines where).

Workflow

  1. Pick the runner by the decision table in references/testing-playbook.md:
    • Vitest for anything non-trivial: TS/JSX native, watch UX, snapshots, mocking surface, React work.
    • node:test for dependency-free pure-Node libraries where zero dependencies is itself the feature — with its trade-offs stated (loader for TS, weaker watch/snapshot ergonomics).
    • Modernizing from Jest → Vitest is the default path (API-compatible for most suites); playbook has the migration steps.
  2. Write explicit config (no version-default reliance): environment (node / jsdom / browser mode with tradeoff), globals policy, setup files.
  3. Coverage as a gate: v8 provider with explicit thresholds that fail the run. Philosophy: coverage finds gaps, it doesn't prove quality — prefer PR-delta discipline over chasing a global vanity number; never raise thresholds to force shallow tests.
  4. React: React Testing Library + user-event on Vitest; test behavior via roles/text, not implementation details; real components from the repo in examples, never toys.
  5. Mocking discipline: mock at boundaries (network, clock, fs), not internal modules; fake timers come with the pitfalls list in the playbook.
  6. Verify: full suite green locally, coverage gate demonstrably fails when a threshold is unmet (prove it once), scripts wired (test, test:coverage).

Output spec

Runner chosen with written rationale; explicit committed config; coverage thresholds that fail CI; at least one real test demonstrating the setup (rendering a real component / exercising a real module); scripts wired; flaky triage checklist applied when that was the complaint.

Gotchas

  • v8 coverage with AST remapping matches istanbul-level accuracy on modern Vitest — version-gate this and re-verify on major bumps.
  • jsdom is not a browser: anything relying on real layout, navigation, or workers belongs in Playwright, not a heavier unit-test mock.
  • vi.mock hoists — factory functions referencing outer variables break silently; playbook shows the safe patterns.
  • A passing suite after --changed filtering is not a green suite — full runs gate merges (where: node-ci).

Files

  • references/testing-playbook.md — runner decision table, explicit configs, coverage gating, RTL patterns, mocking pitfalls, flaky triage.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.