node-testing について
Node.js のテスト基盤を整えるスキルです。実行ランナーやカバレッジ基準を明示したい開発者向けに、ランナー選定、モック、React テスト、検証手順を案内します。
主な機能
- 01Vitest と node:test の選定指針
- 02明示的なランナー設定
- 03実行を失敗させるカバレッジ基準
- 04React Testing Library のテストパターン
- 05境界に限定したモック指針
活用シーン
- 01Node.js プロジェクトのランナー選定
- 02Jest テストの Vitest への移行
- 03カバレッジ基準の強制
- 04React コンポーネントの動作検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ paldom/ node-skills --skill node-testingインストール後、Claude Code で/node-testingを入力して読み込まれたか確認します。
同梱ファイルevals/evals.jsonreferences/testing-playbook.md
詳細
node-testing
緑色になることに意味があるテスト基盤を構築します。明示的なランナー設定、ビルドを飾るだけでなく失敗させるカバレッジ、そして嘘をつかないモックを実現します。このスキルで解決する問題:モデルがレガシーな Jest 設定をデフォルトで使う、誰もゲートに使わないカバレッジレポートを作成する、コンポーネントテストを不安定な疑似 E2E に引き延ばす。
使用しない場合
- E2E/実ブラウザーのフロー → このリポジトリの対象外です。Playwright とそのドキュメントを案内してください(明示的な非目標です)。
- Lint →
node-lint、tsconfig →node-typescript。 - GitHub Actions でジョブ/マトリックスを配線する場合 →
node-ci(このスキルでは何を実行するかを定義し、そちらではどこで実行するかを定義します)。
ワークフロー
references/testing-playbook.mdの選定表に従ってランナーを選びます。- Vitest は、複雑な要件がある場合に使います。TS/JSX のネイティブサポート、ウォッチ時の使いやすさ、スナップショット、モック機能、React の作業に対応しています。
- node:test は、依存関係ゼロであること自体が特徴となる、依存関係のない純粋な Node ライブラリに使います。その際、トレードオフ(TS 用ローダー、使い勝手の劣るウォッチ/スナップショット機能)を明記してください。
- Jest からのモダナイズでは、Vitest への移行をデフォルトの経路とします(大半のスイートで API 互換性があります)。移行手順はプレイブックを参照してください。
- 明示的な設定を記述します(バージョンごとのデフォルトに依存しません):環境(
node/jsdom/トレードオフを考慮したブラウザーモード)、グローバルの方針、セットアップファイル。 - カバレッジをゲートにします:v8 プロバイダーと、実行を失敗させる明示的な
thresholdsを使います。方針:カバレッジは不足箇所を見つけるものであり、品質を証明するものではありません。見栄えだけの全体数値を追うより、PR の差分を重視する規律を優先してください。浅いテストを無理に増やすために、しきい値を引き上げてはいけません。 - React:Vitest では React Testing Library と user-event を使います。実装の詳細ではなく、ロールやテキストを通じて動作をテストしてください。例にはおもちゃのコンポーネントではなく、リポジトリ内の実際のコンポーネントを使ってください。
- モックの規律:内部モジュールではなく、境界(ネットワーク、クロック、fs)をモックします。フェイクタイマーについては、プレイブックに記載された注意点を確認してください。
- 検証:ローカルでスイート全体が成功すること、しきい値未達時にカバレッジゲートが確実に失敗することを確認します(1 度は実証してください)。スクリプト(
test、test:coverage)を配線します。
出力仕様
選定理由を明記したランナー、コミット済みの明示的な設定、CI で失敗するカバレッジしきい値、設定を実証する実際のテストを少なくとも 1 つ(実際のコンポーネントをレンダリングする/実際のモジュールを実行するもの)、配線済みのスクリプトを用意します。不安定さが相談内容だった場合は、不安定なテストのトリアージ用チェックリストを適用します。
注意点
- 最新の Vitest では、AST 再マッピングを使った v8 カバレッジの精度は istanbul と同等です。バージョンごとに確認し、メジャーバージョン更新時には再検証してください。
- jsdom はブラウザーではありません。実際のレイアウト、ナビゲーション、ワーカーに依存するものは、より重いユニットテスト用モックではなく Playwright の対象です。
vi.mockは巻き上げられます。外側の変数を参照するファクトリー関数は、気付かないうちに壊れることがあります。安全なパターンはプレイブックを参照してください。--changedによるフィルタリング後にスイートが成功しても、スイート全体が成功したことにはなりません。マージのゲートには全件実行を使います(設定箇所:node-ci)。
ファイル
references/testing-playbook.md— ランナー選定表、明示的な設定、カバレッジゲート、RTL のパターン、モックの注意点、不安定なテストのトリアージ。
コメント
Markdown 対応