mabl Linkを使用すると、デプロイやインターネットへの公開をせずに、localhostや127.0.0.1を含むローカルマシン上のサービスに対して、mablクラウドでブラウザーテストを実行できます。この設定を使用すると、ローカルの開発ビルドに対して、mablのクラウド実行による詳細な診断を活用しながら、テストを並行して実行できます。
この記事では、mabl Linkでlocalhostをテストする方法について説明します。
開始する前に
クラウドテストは、そのLinkトンネルが実行されているマシンのlocalhostに到達します。そのため、テスト対象のサービスがあるマシンで実行されているトンネルを選択してください。
- 自分のコンピューター上のサービスをテストする場合は、個人Linkトンネルを使うのが最も手軽です。mablデスクトップアプリまたはmabl CLIから個人Linkトンネルを開始し、実行を自分のコンピューター経由でルーティングします。共有のLink Agentや環境の変更は必要ありません。
- ビルドサーバーなどの共有マシン上のサービスをテストする場合は、そのマシンでLink Agentを実行し、環境がそのトンネルを使用するように設定します。Link Agentのセットアップがまだの場合は、Link Agentのセットアップを参照してください。
テストの実行
http://localhost:3000などのローカルURLに対して実行するようにテストを設定し、mablクラウドで実行します。クラウドテストでlocalhostや127.0.0.1などのループバックアドレスを指定すると、リクエストはLinkトンネルを経由してトンネルが実行されているマシンに届き、ローカルサービスに接続します。
メモ
Link経由でのlocalhostへの接続は、Chromiumベースのブラウザー(ChromeおよびEdge)とFirefoxのブラウザーテストでサポートされています。Safariで実行するテストでは、ローカルサービスに接続するためにlocalhostのエイリアスを使用する必要があります。詳しくは、以下の「localhostのエイリアスの追加」を参照してください。
localhostのエイリアスの追加
Safari(WebKit)ブラウザーでmabl Linkを使用してlocalhostをテストするには、Link Agentが実行されているシステムのhostsファイルにlocalhostのエイリアスを追加します。
- LinuxおよびmacOS:
/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:latest --api-key {your-api-key} --name {tunnel-name}
Apple siliconのMacなどのarm64ホストでは、代わりにmablhq/link-agent:latest-ubuntuを使用してください。Dockerを用いたLinkの使用方法を参照してください。
次のプレースホルダーを更新してください。
-
{your-api-key}:mablアプリのSettings > APIsにある "Link Agent" のAPIキー。 -
{tunnel-name}:トンネルの名前。小文字の英字、数字、ハイフンで構成される1~24文字です。
IPv4とIPv6
サービスがIPv4(127.0.0.1)とIPv6([::1])のどちらか一方でのみリッスンしている場合があります。テストがlocalhostなどのループバックアドレスに解決されるホスト名を指定し、サービスが一方のアドレスファミリーで接続を拒否した場合、Link Agentはもう一方のアドレスファミリーを試すため、どちらの場合でもサービスに到達できます。
http://127.0.0.1:3000のようにアドレスを直接指定したテストは、そのアドレスにのみ接続します。サービスがIPv6でのみリッスンしている場合は、代わりにテストがlocalhostをポイントするように設定するか、サービスを127.0.0.1と[::1]の両方にバインドしてください。