mablのブラウザテストを設定して、プラン実行やローカルのアドホック実行で各リクエストにカスタムHTTPヘッダーを付けることができます。カスタムHTTPヘッダーは、mablのテスト実行からのリクエストをアプリケーションのセキュリティ層やルーティング層に識別させ、一般的なボットトラフィックとして扱われないようにするために使用されることが最も多くあります。具体的には次のような用途があります。
- ボット対策のバイパス - テスト環境でのcaptcha、reCAPTCHA、Cloudflareのボットブロック、その他類似の制限を回避します。
- 追加の認証ステップのスキップ - 認識されないクライアントに対する追加のMFAプロンプトやセキュリティチャレンジを回避します。
- 機能フラグの切り替えやフィーチャーブランチのテスト - 特定のアプリケーション動作を強制したり、実験的なバリアントをテストしたりします。
- 特定の環境やバックエンドへのリクエストのルーティング - 特定の環境、バックエンドクラスタ、地理的リージョンへトラフィックを誘導します。
この記事では、カスタムHTTPヘッダーを使ってmablのテストを設定する方法を説明します。
サーバー側の設定
mablのテストにヘッダーを追加する前に、セキュリティチームまたはDevOpsチームと連携して、アプリケーション側でヘッダールールを設定する必要があります。
-
X-Mabl-Bypassのようなヘッダー名と、安全な値を決定します。 - このヘッダーが含まれている場合に正しい動作を実装するルールを、アプリケーションまたはWAFに作成します。
- 認証バイパスなどの機密性の高い機能については、ルールが本番環境以外に限定されているか、mablの静的IPレンジに対して許可されていることを確認します。
mablのテストへのカスタムHTTPヘッダーの追加
アプリケーションのカスタムヘッダーとルールを設定したら、mablのテストにヘッダーを追加できます。
プラン実行
プラン実行でカスタムHTTPヘッダーを指定するには、mablアプリでプランを編集します。[ブラウザ・デバイスの設定] セクションまでスクロールし、[追加設定] をクリックして、[カスタムHTTPヘッダーを送信する] をオンにします。
サーバー側で作成したキーと値のペアを追加します。
ヘッダーは、スケジュール実行、デプロイメントイベントとしてのデプロイ時の実行、手動トリガーによる実行のいずれであっても、クラウドで実行されるプラン内のすべてのブラウザテストに適用されます。
Trainerおよびローカルデスクトップ実行
トレーニングセッション中およびローカル実行でカスタムHTTPヘッダーを適用するには、[Preferences] メニューを開きます: [Edit] > [Preferences]。
左側の [HTTP headers] オプションを選択し、必要に応じてヘッダーを追加します。ヘッダーを削除せずに無効にする場合は、[Enabled] 列の対応するチェックボックスのチェックを外します。
[Preferences] メニューで構成したカスタムHTTPヘッダーは、お使いのmablデスクトップアプリのインスタンスでのローカルテスト実行とTrainerでの再生に適用されます。他のチームメンバーがローカルデスクトップ実行でこれらのヘッダーを使用する必要がある場合は、各自の [Preferences] メニューでヘッダーを設定する必要があります。
ローカルCLI実行
ローカルCLI実行では、デスクトップやプランの設定からヘッダーが継承されません。--from-plan-id でトリガーされるテストを含むローカルCLI実行でカスタムHTTPヘッダーを適用するには、--http-headers フラグを使用します。例:
mabl tests run --id {test-id} --http-headers x-header:foo制限事項
- カスタムHTTPヘッダーは、単一テストのアドホッククラウド実行、パフォーマンステスト、モバイルテストではサポートされていません。
- リクエストにすでに認証ヘッダーが含まれている場合、mablはそれを上書きしません。
- カスタムHTTPヘッダーは、ヘッダーの値が実行時に動的に変化するシナリオの解決策にはなりません。特に認証については、mabl Trainerでログインフローをトレーニングする、APIテストでOAuthをセットアップして必要なトークン値を共有変数でブラウザテストに渡すなど、別のアプローチを試してください。
![[Preferences] メニュー](https://static.mabl.com/doc/readme/img/77dd853-http-preferences.png)