Back to Plate

SKILL

templates/plate-playground-template/.agents/skills/testing/SKILL.md

53.0.51.5 KB
Original Source

Testing Goal

Keep tests in three buckets only:

  • Pure unit tests for deterministic logic.
  • Thin component or hook contract tests for real app behavior.
  • Golden input or output tests when serialized output is the contract.

Hard constraints:

  • Prefer Bun for the fast local loop.
  • Keep the default suite fast.
  • No browser or e2e coverage unless the app behavior truly needs it.
  • Coverage is a hotspot tool, not a vanity score.

Core Rules

  • Assert public behavior, not implementation detail.
  • Keep tests next to the code they cover with *.spec.ts[x].
  • Keep helpers local. Do not import one spec from another.
  • Prefer explicit assertions over snapshots.
  • Delete skipped, commented, or placeholder tests instead of babysitting them.

Seam Selection

  • Use plain function tests for pure logic.
  • Use rendered React tests for hooks, components, rerender behavior, and DOM behavior.
  • Use browser checks only when the contract is actually browser-specific.

Fixtures And Assertions

  • Keep fixtures small.
  • Use plain objects for simple state.
  • Use it.each for small behavior matrices.
  • In Bun + Testing Library, prefer render-returned queries over screen.
  • Use direct style-property assertions instead of toHaveStyle.
  • Use snapshots only when serialized output is the contract and inline assertions would be worse.

Quick Reference

  • Keep tests fast and local.
  • Start with the smallest seam that proves the behavior.
  • Prefer explicit assertions.
  • Browser checks are for real UI behavior, not lazy coverage.