クラウドのブラウザテストで localhost を指定し、mabl Link Agent と同じマシン上で実行されているサービスに接続できるようになりました。これを使うと、https://localhost:3000 で提供される開発ビルドなど、ローカルで動作するアプリケーションに対して、デプロイやインターネットへの公開を行わずに mabl のクラウドテストを実行できます。
これまでは、localhost は「このマシン」を指すため、localhost を指定したクラウドテストは、ローカル環境ではなく mabl のクラウドランナー自体に接続していました。localhost のアドレスに接続したい場合は、hosts ファイルに 127.0.0.1 link-local のようなエイリアスを作成し、localhost の代わりに link-local に対してテストを実行する必要がありました。今後は、ループバックアドレス(localhost および 127.0.0.1)を指定したクラウドテストは、Link tunnel を経由して Link Agent が実行されているマシンにルーティングされるため、テストはローカルのサービスに接続します。
この機能は、Chromium ベースのブラウザ(Chrome および Edge)と Firefox でのブラウザテストに適用されます。Safari(WebKit)の場合は、引き続き localhost のエイリアスを使用してローカルのサービスに接続してください。
試してみる
- テスト対象のサービスと同じマシン上で mabl Link Agent が実行されていること、およびテストで使用する環境がその Link Agent を使用していることを確認します。
- テストのURLとして、たとえば
https://localhost:3000のようなローカルのURLを指定します。 - mabl のクラウドでテストを実行します。リクエストは Link tunnel を経由してマシンにルーティングされ、ローカルのサービスに接続します。
Link Agent をコンテナで実行する場合
Link Agent を Docker または Podman のコンテナ内で実行している場合、コンテナ内の localhost はホストマシンではなく、コンテナ自身のループバックネットワークを指します。localhost を指定したテストは、ホスト上のサービスではなくコンテナに接続してしまい、接続は失敗します。
ホストマシンの localhost にバインドされているサービスに接続するには、次のいずれかを行います。
- ホストネットワーク(
--network hostまたは--net=host)を使用してコンテナを実行し、ホストのネットワークを共有する。 - コンテナ内ではなく、ホスト上で直接 Link Agent を実行する。
Link Agent は、そのマシン上で localhost が解決するアドレスに接続するため、通常はそのままで動作します。不一致が発生するのは、エージェントが localhost を一方のアドレスファミリに解決する一方で、サービスがもう一方にのみバインドされている場合だけです。たとえば、localhost が IPv4 の 127.0.0.1 に解決されるのに、サービスが IPv6 の [::1] でのみリッスンしている場合などです。localhost への接続がうまくいかない場合は、サービスを 127.0.0.1 と [::1] の両方、またはすべてのインターフェース(0.0.0.0)にバインドしてみてください。