writing-tests について
writing-testsは、リスクに応じたテスト種別の選択と、ユーザーに見える振る舞いを中心としたテスト設計を支援する開発者向けスキルです。クエリやテスト構成の指針に加え、モックやカバレッジの資料も案内します。
主な機能
- 01リスクに基づくテストの優先順位付け
- 02ユニット・統合・E2Eテストの指針
- 03Arrange-Act-Assertパターン
- 04アクセシブルなクエリの選択
- 05コンポーネントとテストの同じ場所への配置
- 06最小限のテスト方針
活用シーン
- 01機能に適したテスト種別の選択
- 02認証や決済フローの優先的なテスト
- 03UIコンポーネントの振る舞いの検証
- 04時間が限られる場合のテスト計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ augmnt/ webdev-skills --skill writing-testsインストール後、Claude Code で/writing-testsを入力して読み込まれたか確認します。
同梱ファイルMOCKING.md
詳細
テストの作成
実装ではなく、動作をテストします。リスクに応じて優先順位を付けます。
テストの種類の使い分け
| 種類 | 対象 | 使用する場面 | ツール |
|---|---|---|---|
| ユニット | 単一の関数/フック | 純粋なロジック、計算 | Vitest、Jest |
| インテグレーション | コンポーネント+依存関係 | フォーム、データ表示 | Testing Library |
| E2E | ユーザーフロー全体 | 重要な経路 | Playwright |
必ずテストする項目
- 認証フロー
- 支払い/チェックアウト
- データの変更(作成、更新、削除)
- 認可ルール
- 重要なビジネスロジック
テストの優先度が低い項目
- 静的コンテンツ
- サードパーティの内部実装
- 純粋なスタイル
ファイル構成
src/components/Button/
├── Button.tsx
└── Button.test.tsx # Colocated
e2e/ # E2E at root
├── auth.spec.ts
└── checkout.spec.ts
パターン
Arrange-Act-Assert
test('increments on click', () => {
// Arrange
render(<Counter initial={0} />)
// Act
fireEvent.click(screen.getByRole('button'))
// Assert
expect(screen.getByText('1')).toBeInTheDocument()
})
クエリの優先順位(最良 → 最低)
getByRole- セマンティックで、アクセシブルgetByLabelText- フォーム入力getByText- コンテンツgetByTestId- 最終手段
実装ではなく、動作をテストする
// ❌ Implementation
expect(component.state.isOpen).toBe(true)
// ✅ Behavior
expect(screen.getByRole('dialog')).toBeVisible()
最低限のテスト
時間が限られている場合:
- 正常系のE2Eテスト(大部分をカバー)
- 複雑なロジックのユニットテスト(エッジケースを検出)
- 重要なコンポーネント(フォーム、データ)のインテグレーションテスト
高度なパターン
APIのモック、テストフィクスチャ、カバレッジの指針については、MOCKING.mdを参照してください。
コメント
Markdown 対応