> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# テスト戦略

決定的・ブラウザ・データベース・プロバイダーの各チェックが何を確立するかを理解する。

## インストールとセットアップ

手順の前に、[始める前に](https://supastack.dev/ja/docs/web/before-you-start.md) と [ターミナルの基本](https://supastack.dev/ja/docs/web/terminal-basics.md) をお読みください。これらの手順では、VS Code で完全な supastack モノリポジトリを開いたことが前提となっています。そのルート package.json はリポジトリのルートをマークします。 pnpm コマンドでは、ワークスペース パッケージはアプリまたは共有コード フォルダーです。この製品では、ワークスペースはチームのデータ コンテナであり、セキュリティ境界です。 corepack pnpm --filter ... コマンドがルートから実行されている間にモノリポジトリから 1 つのパッケージを選択します。同期されたモバイル フォルダーまたはデスクトップ フォルダーのみを開いた場合、そのフォルダーには Web バックエンド、Docker セットアップ、またはルート スクリプトが含まれていません。このモノリポジトリまたはアクセス可能なホスト サーバーからバックエンドを実行し、プラットフォーム フォルダー独自のスクリプトを使用します。環境変数は、ローカルの .env ファイルまたはホスティング ダッシュボードに保存される名前付き設定です。変更後に関連するアプリを再起動し、NEXT_PUBLIC_ および EXPO_PUBLIC_ 値にサーバー シークレットが含まれないようにします。

1. リポジトリルートの package.json を開いてチェックコマンドを確認します。

2. そのルート フォルダーから、自動単体テストの場合は corepack pnpm test を実行し、Web TypeScript チェックの場合は corepack pnpm --filter @supastack/web typecheck を実行します。

3. ブラウザーの動作については、Web アプリを起動し、corepack pnpm test:e2e を実行します。期待通り: 各コマンドは独自の結果を報告します。単体テストは、実際のデータベース、決済プロバイダー、電子メール サービス、電話が機能することを証明するものではありません。

デフォルトのテストスイートは決定的な fake/ローカルアダプターを使います。ブラウザテストはユーザー操作をカバーし、データベース受け入れと外部プロバイダースモークは別のゲートです。範囲を広げる前に、変更した振る舞いに関連するチェックを実行してください。

```
corepack pnpm test
corepack pnpm check
corepack pnpm build
corepack pnpm test:e2e
corepack pnpm test:e2e:production
```


## コピーするコマンド

コメントに従って、コマンドがどのフォルダーで実行されるかを確認します。 2 つのターミナルにラベルが付いている場合は、2 つのターミナル ウィンドウを開き、2 番目のコマンドを使用している間、最初のコマンドを実行し続けます。

```
corepack pnpm test
corepack pnpm --filter @supastack/web typecheck
corepack pnpm test:e2e
```


## 実装ワークフロー

振る舞いの変更には、まず失敗する受け入れテストを書きます。成功したアクセスと拒否された匿名・ワークスペース間リクエストを対にします。フォームとタスクフローでは、ハッピーパスを超えて読み込み、エラー、復旧を検証します。

傍受されたブラウザ応答は、インターフェースがそのフィクスチャに応答することを証明します。認証永続化、支払い処理、プロバイダー配信、物理デバイスコールバックは証明しません。


## 検証とトラブルシューティング

データベース テストがスキップされたと判断した場合は、データベース カバレッジを報告する前に、分離されたテスト データベースを設定します。 Web タブがポート 3001 にある場合、それは別の apps/docs サーバーです。キットの Web アプリはポート 3000 で開始します。Playwright が Windows の最初の実行に失敗した場合は、ブラウザーのインストールを完了させて、失敗したコマンドを再実行します。これを回避するためにシステム全体のセキュリティをオフにしないでください。

データベースゲート付きテストがスキップされた場合、そのゲートが通過したと主張する前に分離されたテストデータベースを設定してください。ブラウザランナーが合格アサーションを出してもティアダウンでハングする場合、両方の事実を報告してください。ハングしたプロセスはクリーンな成功コマンドではありません。

Windows では、Defender が新しくインストールされた Playwright ブラウザーまたは依存関係をスキャンしている間に、ブラウザーの初回実行がタイムアウトになる場合があります。インストールが完了したら、corepack pnpm test:e2e または corepack pnpm test:e2e:production を使用して失敗したスイートを再実行し、再度失敗した場合はそのトレースと Defender Protection History を検査します。システム全体の保護を有効のままにしておきます。

ローカル ブラウザ スイートはポート 3100 を所有しており、そこですでにリッスンしているプロセスの再利用を拒否します。別のアプリが 3100 を所有している場合は、PLAYWRIGHT_PORT を corepack pnpm test:e2e より前の空きポートに設定します。これにより、テストが別のプロジェクトをサイレントにターゲットにすることを防ぎます。


## 次へ

[デプロイチェックリスト](https://supastack.dev/ja/docs/web/deployment.md)
