Skip to content

🧪 004 テスト設計

テスト戦略・テスト対象一覧・実行方法・カバレッジ外領域

設計書 v1.0 / 2026-04-20


1 テスト戦略(ピラミッド)

3層のテストピラミッドで品質を担保する。下層ほど実行コストが低く数が多い。

🎭 E2E テスト(Playwright) 3 ファイル / ブラウザ + Tauri 実アプリ
⚡ ユニットテスト(Vitest) 11 ファイル / jsdom 環境
🦀 Rust ユニットテスト(cargo test) gdrive.rs / webpush.rs / logic.rs 等 / インプロセス

2 ユニットテスト一覧(Vitest)

2.1 PC アプリ側

表 2.1-1 PC アプリ側ユニットテスト一覧

Noファイル種別テスト対象主なテスト内容
1app/components/StickyNote.test.tsxVitest付箋ウィンドウ(StickyNote.tsx)レンダリング・モード切り替え・保存トリガー・アラームチェック等
2app/hooks/useStickyNoteContextMenu.test.tsVitest右クリックメニューフックメニュー項目の生成ロジック
3app/utils/checkboxToggle.test.tsVitestチェックボックストグルユーティリティ[ ][x] のトグル処理・Markdown 変換
4app/utils/splitFrontMatter.test.tsVitestFrontmatter パーサーYAML frontmatter の分離・パース・再組み立て
5lib/i18n.test.tsVitest国際化(i18n)日本語・英語キーの解決・フォールバック
6lib/settings-store.test.tsVitest設定ストア設定の読み書き・デフォルト値
7lib/utils.test.tsVitest汎用ユーティリティ文字列サニタイズ・日時フォーマット等

2.2 iPhone PWA 側

表 2.2-1 iPhone PWA 側ユニットテスト一覧

Noファイル種別テスト対象主なテスト内容
1app/viewer/lib/drive.test.tsVitestDrive API ラッパー(drive.ts)アップロード・ダウンロード・削除の正常系・エラー系
2app/viewer/lib/indexeddb.test.tsVitestIndexedDB 操作(indexeddb.ts)saveDraft / loadDraft / loadAllDrafts / deleteDraft の CRUD 確認
3app/viewer/__tests__/page.test.tsxVitestiPhone PWA ページ(viewer/page.tsx)画像変換(hydrateEditor/serializeEditor)・チェックボックス変換・タグ永続化・Mermaid ブロック変換
4app/viewer/viewer.test.tsxVitestViewer コンポーネント全体ステップ遷移・初期化フロー・リスト/ライトモード切り替え

2.3 Rust バックエンド(cargo test)

Rust ユニットテスト(各 .rs ファイルの #[cfg(test)] モジュール)

表 2.3-1 Rust バックエンドユニットテスト一覧

Noファイル種別主なテスト内容
1src-tauri/src/gdrive.rscargo testトークンパスの検証・PushConfigJson のパース確認
2src-tauri/src/webpush.rscargo testVAPID 鍵生成・JWT 署名・AES-128-GCM 暗号化の正常動作確認

3 E2Eテスト一覧(Playwright)

表 3-1 E2E テスト一覧

Noファイルテストシナリオの概要主な検証ポイント
1e2e/sticky-note.spec.ts付箋の作成・編集・保存・削除・アーカイブ新規付箋作成 → テキスト入力 → 自動保存確認 → ファイルシステムへの書き込み検証 → 削除・アーカイブ動作確認
2e2e/data-safety.spec.tsデータ安全性(破損・欠損なし)の確認アプリ再起動後のデータ復元 → frontmatter の整合性確認 → アトミック書き込みによる破損防止確認
3e2e/lock-notification.spec.tsロック画面に表示(通知常駐)機能の動作確認Push 受信後の IndexedDB 保存確認 → locked フラグの ON/OFF → pending_open メカニズムの動作確認

4 テスト実行方法

4.1 フロントエンド ユニットテスト(Vitest)

bash
# 全ユニットテストを実行(一回実行)
npm run test
# ウォッチモード(開発中)
npx vitest
# カバレッジレポート付き
npx vitest run --coverage

4.2 Rust バックエンド ユニットテスト(cargo test)

bash
# Rust ユニットテストを実行
cd src-tauri
cargo test

4.3 E2E テスト(Playwright)

bash
# E2E テストを実行(Tauri アプリのビルドが必要)
npx playwright test
# 特定ファイルのみ実行
npx playwright test e2e/sticky-note.spec.ts
# UI モードで実行(デバッグ用)
npx playwright test --ui

5 カバレッジ外の領域

現時点でテストが存在しない・または困難な領域。今後のリスクとして認識しておくべき箇所。

表 5-1 カバレッジ外領域一覧

No領域カバレッジ外の理由リスク
1Rust ロジック層(logic.rs / storage.rsファイルシステム操作が絡むため逃げにくい。Tauri 環境依存が強いリネーム・アーカイブ・削除のバグが本番環境でしか発覚しない
2Service Worker の Push 受信フロー実際の APNs / FCM を介した Push は自動テスト困難Push 受信・IndexedDB 保存・通知表示の組み合わせバグが検出できない
3マルチウィンドウ間の状態同期複数の Tauri WebviewWindow を扱う E2E テストはセットアップが複雑付箋間の emit/listen によるデータ競合が検出できない
4Google OAuth フロー全体外部サービス(Google)への依存があるため自動テスト不可認証フローの変更時にリグレッションが発覚しにくい
5iPhone 実機での UI 動作iOS Safari の実機が必要。シミュレーター環境の整備が必要iOS 固有のバグ(notificationclick 未発火等)が手動テストのみ

6 改版履歴

表 6-1 改版履歴

Noバージョン日付変更内容
11.026-04-20新規作成。テスト戦略・ユニットテスト一覧(11ファイル)・E2E一覧(3ファイル)・実行方法・カバレッジ外領域を整理。
21.126-04-24テストピラミッドを TestPyramid コンポーネント(3色ブロック)に変更。