テスト戦略¶
最終更新: 2026-08-23
Greco は画面が表示できることだけで出荷しません。純粋ロジック、依存方向、セキュリティ、実 DB の RLS、業務シナリオ、ブラウザの golden path を役割分担させます。
7層の品質ゲート¶
| 層 | 目的 | 実行タイミング |
|---|---|---|
| 1. unit / render | 純粋関数、hook、画面の状態と固定文言 | 変更時・per-PR |
| 2. lint / arch / typecheck / build | Biome、循環依存、型、成果物 | per-PR |
| 3. security | Semgrep security-audit / secrets、Gitleaks | 全 PR |
| 4. Docker proof | 全 migration 適用後の allow / deny と終了コード | migration・RLS変更時、CI |
| 5. dev 実機 RLS | dev の実 PostgREST とロール別 JWT で越境・拒否を確認 | migration・認可変更時 |
| 6. S1 実 DB シナリオ | 実 Postgres + 全 migration + 実 RLS で画面をまたぐ業務フローを検証 | per-PR |
| 7. S2 ブラウザ golden path | 実 dev の主要導線をブラウザで確認 | 夜間 + リリース前。リリース前は手動 dispatch も実施 |
S1 は lib/db の内部をモックしません。差し替えてよいのは Supabase client singleton と外部 OCR / Storage の境界だけです。仕様書の各ステップを実 DB の assert に対応づけ、越境 read が実際に拒否されることも検証します。
gateway の接続テスト統合テスト(services/jwnet-gateway)は scenario-tests workflow の gateway-integration job で走る。ローカルは node scripts/scenario/run-gateway-integration.mjs(スタック起動と JWNET_GATEWAY_INTEGRATION_TEST=1 を内包)。skip は赤にする(未設定・到達不能のまま緑にしない)。
S2 と E2E 予約データ¶
夜間のブラウザテストが使う actor は admin2 / staff2 / driver10 / edriver3、取引先 000100 です。手動確認・スクリーンショットではこれらを開かず、admin1 / staff1 / driver01 のみを使います。予約データへの登録、完了、取消、設定変更をしません。
S2 は per-PR に入れず、夜間とリリース前に限定します。リリース前の手動 dispatch は、配車 → 完了 → マニフェスト証跡 → 計量 → 請求確認の順で、実際の画面遷移が成立することを確認します。
ミューテーションの証拠¶
業務シナリオが守る修正は、重要な条件を一時的に巻き戻したミューテーションで赤になることを確認します。コードの品質をスコアで置き換えず、機械ゲートと S1 の失敗を証拠として残します。
関連: 認証・テナント運用 / デプロイ手順 / 0015 品質ゲート