方針: テストは原則ルート直下の tests/ に集約する。
配布ビルド前のルール: build:community / build:pro を実行する前に、npm run test:all(Community・Pro の単体+E2E の 4 本)を実行し、すべて成功していること。詳細は docs/specification/05_development_guide.md と .agent/rules/distribution-build.md。
#[cfg(test)](実行は npm run test:rust でルートから実行)。tests/test_mcp_client.mjs。Rust の結合テストファイルだけは Cargo の仕様で src/backend/tests/ に配置(Cargo はクレート直下の tests/ しか結合テストとして認識しない)。実行はルートから npm run test:integration:rust で呼び出す。tests/e2e/。単体・結合・E2E の 3 層を用意している。
| 種別 | 内容 | 場所 | 実行方法 |
|---|---|---|---|
| 単体 | Rust のモジュール単位テスト(DB・LSA・MCP・埋め込み・トークナイザ等) | src/backend/src/**/*.rs 内の #[cfg(test)] mod tests |
npm run test:rust(cargo test) |
| 結合 | MCP API を実際に叩くテスト(tools/list, /version, search_text, CRUD 一連, lsa_retrain 等)。/version が package.json の version と一致することを検証。 | Node: tests/test_mcp_client.mjsRust: src/backend/tests/search_api.rs(#[ignore] 付き) |
Node: npm run test:mcp / test-and-heal 等(MCP 起動前提)Rust: npm run test:integration:rust(MCP 起動前提) |
| E2E | アプリ全体を WebDriver で操作して UI を検証(タイトル・ヘッダー・検索・パネル・編集モーダル等)。フッター表示バージョンが package.json と一致することを検証。 | tests/e2e/specs/*.spec.js(app, panels, docs-edit-drawing, screenshot-docs-modal) |
npm run test:e2e(Community ビルド)npm run test:e2e:pro(Pro ビルド。embedding モデル要) |
| 種別 | 実行方法 | 備考 |
|---|---|---|
| 単体 | npm run test:rust:pro |
--no-default-features --features pro で埋め込み・Pro 用コードを含めて cargo test |
| 結合 | npm run test:mcp:pro / npm run test-and-heal:pro |
Pro アプリを起動してから test_mcp_client.mjs(Pro 時スコア・vector_search_used 等を検証) |
| E2E | npm run test:e2e:pro |
事前に build:e2e:pro(embedding モデル必須)を実行し、Pro バイナリで同じ E2E スペックを実行 |
npm run test:rust(Community)/ npm run test:rust:pro(Pro)src/backend 内の各モジュールに #[cfg(test)] mod tests で定義。DB 初期化・次元変更、LSA 分散・チャンク分割、MCP チャンク分割ロジック、埋め込み・トークナイザ・dev_static・registry(tool_list のツール数・名前)などのユニットテスト。tools/list・search_text・Pro 時のスコア検証など。npm run test-and-heal や test-and-heal:pro で MCP を立ち上げてからこのスクリプトを実行する流れ。src/backend/tests/search_api.rs に配置。実行はルートから npm run test:integration:rust(MCP 起動前提)。通常の cargo test では #[ignore] によりスキップされる。npm run test:e2e(Community。onPrepare で build:e2e が走る)/ npm run test:e2e:pro(Pro。build:e2e:pro のあと wdio。embedding モデル要)tests/e2e/README.md を参照(tauri-driver・Edge Driver の準備など)。