mabl Linkを使用すると、デプロイやインターネットへの公開をせずに、localhostや127.0.0.1を含むローカルマシン上のサービスに対して、mablクラウドでブラウザーテストを実行できます。この設定を使用すると、ローカルの開発ビルドに対して、mablのクラウド実行による詳細な診断を活用しながら、広範なテストを並行して実行できます。
この記事では、mabl Linkでlocalhostをテストする方法について説明します。
開始する前に
Link Agentは、テスト対象のサービスと同じマシンで実行されている必要があります。また、テストの環境がそのLink Agentを使用するように設定されている必要があります。Link Agentのセットアップがまだの場合は、Link Agentのセットアップを参照してください。
テストの実行
http://localhost:3000などのローカルURLに対して実行するようにテストを設定し、mablクラウドで実行します。クラウドテストでlocalhostや127.0.0.1などのループバックアドレスを指定すると、リクエストはLinkトンネルを経由してLink Agentが実行されているマシンにルーティングされ、ローカルサービスに接続します。
メモ
Link経由でのlocalhostへの接続は、Chromiumベースのブラウザー(ChromeおよびEdge)とFirefoxのブラウザーテストでサポートされています。Safariで実行するテストでは、ローカルサービスに接続するためにlocalhostのエイリアスを使用する必要があります。詳しくは、以下の「localhostのエイリアスの追加」を参照してください。
localhostのエイリアスの追加
Safari(WebKit)ブラウザーでmabl Linkを使用してlocalhostをテストするには、Link Agentが実行されているシステムのhostsファイルにlocalhostのエイリアスを追加します。
- LinuxおよびOSX:
/etc/hostsファイルを編集する - Windows:
C:\Windows\System32\Drivers\etc\hostsを編集する
エイリアスはlocalhostと同じIPアドレスをポイントする必要があります。hostsファイルで、次のような行を見つけます。
127.0.0.1 localhost
この行にlink-hostのような一意のエイリアスを追加します。
127.0.0.1 localhost link-host
link-hostをポイントするようにテストを設定します。たとえば、アプリがhttp://localhost:8080で実行されている場合、エイリアスを設定した後、テストがhttp://link-host:8080をポイントするように更新します。
Link Agentのコンテナーでの実行
DockerまたはPodmanのコンテナー(Docker ComposeサービスやWindows WSL2内のコンテナーを含む)でLink Agentを実行する場合、コンテナー内のlocalhostは、ホストマシンではなくコンテナー自身のループバックネットワークを指します。localhostを指定したテストは、ホスト上のサービスではなくコンテナーに到達するため、接続が失敗します。
ホストマシンのlocalhostにバインドされたサービスに到達するには、次のいずれかを行います。
- ホストネットワーク(
--network hostまたは--net=host)を使用してコンテナーを実行し、ホストのネットワークを共有する - コンテナーではなく、ホスト上で直接Link Agentを実行する
たとえば、ホストネットワークでLink Agentを起動するには、次のようにします。
$ docker run --net="host" mablhq/link-agent --api-key {your-mabl-api-key} --name {link-agent-name}
次のプレースホルダーを更新してください。
-
{your-mabl-api-key}:mablアプリのワークスペース > APIにあるLink AgentのAPIキーを使用してください。 -
{link-agent-name}:小文字の英字、数字、ハイフンで構成される、1~24文字のLink Agentの名前を作成してください。
接続がまだ失敗する場合
Link Agentは、そのマシンでlocalhostが解決されるアドレスに接続するため、通常はそのまま動作します。不一致が発生するのは、Link Agentがlocalhostを一方のアドレスファミリーに解決する一方で、サービスがもう一方のアドレスファミリーでのみリッスンしている場合に限られます。たとえば、localhostがIPv4の127.0.0.1に解決されるのに対し、サービスがIPv6の[::1]でのみリッスンしている場合です。接続に問題がある場合は、サービスを127.0.0.1と[::1]の両方、またはすべてのインターフェイス(0.0.0.0)にバインドしてください。